Re: [PD] Live phase modulation
Multiply the left outlet of hilbert~ with a cos(theta), multiply the right outlet with sin(theta) and add them together. That should approximate shifting the phase by theta radians. Sorry I can't provide a patch or anything. On Thu, Nov 29, 2012 at 2:38 AM, Alexandros Drymonitis adr...@gmail.comwrote: Yes, I thought about windowing and overlapping after I posted. But I don't know the simpler solution you're mentioning...some example how to set it up? On Wed, Nov 28, 2012 at 10:31 PM, Charles Henry czhe...@gmail.com wrote: It's a good start, I'd guess. You'll get discontinuities on the block boundaries. You probably want to insert that part of your patch into a overlapping block scheme with windowing, to reduce clicks/noise. However, I bet there's a simpler solution that works almost as well with an all-pass filter (or the hilbert~ abstraction) and a mixer. Chuck On Wed, Nov 28, 2012 at 2:04 PM, Alexandros Drymonitis adr...@gmail.comwrote: Is this right for phase modulation of live input? [adc~] [0\ | | [rfft~] [osc~] | \ | | \ |[0\ | \ || [cartopol~] [*~] | || | [+~] | | [poltocar~] | / | / | / [rifft~] | [dac~] -- ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Live phase modulation
It's a good start, I'd guess. You'll get discontinuities on the block boundaries. You probably want to insert that part of your patch into a overlapping block scheme with windowing, to reduce clicks/noise. However, I bet there's a simpler solution that works almost as well with an all-pass filter (or the hilbert~ abstraction) and a mixer. Chuck On Wed, Nov 28, 2012 at 2:04 PM, Alexandros Drymonitis adr...@gmail.comwrote: Is this right for phase modulation of live input? [adc~] [0\ | | [rfft~] [osc~] | \ | | \ |[0\ | \ || [cartopol~] [*~] | || | [+~] | | [poltocar~] | / | / | / [rifft~] | [dac~] -- ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] is there a kalman filter for pd? (if not I could probably provide one, if I make it :) )
I think that's a good idea. I've wanted to do this (another one of those projects that I couldn't accomplish right now). I had in mind, noise reduction for recording--given that it only removes stationary correlated noise, it would be good for scrubbing the noise floor. Or--did you have in mind something much slower, to clean up the noise in measurements from a different kind of sensor? Also, do you want to program it as an external in C, or as an abstraction in Pd? On Fri, Nov 23, 2012 at 12:31 PM, Pedro Lopes pedro.lo...@ist.utl.ptwrote: -- Pedro Lopes (HCI Researcher / MSc) contact: pedro.lo...@ist.utl.pt website: http://web.ist.utl.pt/pedro.lopes / http://pedrolopesresearch.wordpress.com/ | http://twitter.com/plopesresearch ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] IBM PureData
I'm sad. They will ruin the good name of Pure Data. umm... let's hope there's no looming copyright issues over the name. IBM is not *famously* litigious, but they are a computer/software company. Watch out for lawyers On Wed, Nov 7, 2012 at 4:30 PM, Max abonneme...@revolwear.com wrote: http://www-01.ibm.com/software/data/puredata/ this new IBM Software will make searching the web for pure data even harder. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Stream phone call to pd?
On Mon, Oct 29, 2012 at 10:05 AM, Simon Iten itensi...@gmail.com wrote: I think the obvious way to do this is to hack a Bluetooth headset. You could attach the headset with cables to an existing audiointerface... The user just connects to a regular headset. That's slightly less obvious than plugging in a stereo output cable from phone to sound card. There are also bluetooth audio devices (headset omitted) that have stereo outputs (here's one example: http://www.newegg.com/Product/Product.aspx?Item=N82E16875981014nm_mc=KNC-GoogleAdwordscm_mmc=KNC-GoogleAdwords-_-pla-_-NA-_-NA ) A software only solution is more interesting though--good luck, I have no clue how you might do it, but I'll be reading to know if/how you do. Chuck On Oct 29, 2012 12:56 PM, katja katjavet...@gmail.com wrote: Hello Sebastian, Couple of years ago I tried to use a bluetooth stereo device for wireless monitoring in Pd. Nice thing about OSX is you can create an 'Aggregated Device' in 'Audio MIDI Setup' to include the bluetooth stereo to the regular sound card and use the extra channels in Pd. However, I soon found that bluetooth stereo had over half a second latency, so it was not useful for my purpose of monitoring. Besides that, bluetooth audio pairing was really a pain in OSX (back then at least). Another thing, when connecting a phone as bluetooth device to MacBook, I see the following services: Dial-up Networking, Human interface device, OBEX File Transfer, OBEX Object Push. None of these makes the phone available as an extra audio interface. No way to capture it's audio in Pd, like it can be done with bluetooth headsets. With WIFI-enabled cell phones there may be better possibilities, using Skype or similar, and route audio to Pd with Jack or Soundflower. Katja On Mon, Oct 29, 2012 at 4:21 AM, Sebastian Valenzuela svalenzuelamu...@gmail.com wrote: Hey everyone, I know this is a longshot, and most likely not the best place to ask this sort of question, but maybe you can point me in the right direction. I'm working on an art installation which requires the interception of phone conversations to be sent to my macbook and manipulated in Pd. Willing participants would connect their phones (via bluetooth?) to my computer and all audio would be streamed to my laptop in real time and routed into Pd. I realize one could just connect their phones to their laptops via an 8th inch TRS cable and an audio interface... but the idea is to make this connection wirelessly. Any ideas? Anything would be helpful. Thank you for your time, Sebastian -- Sebastian Ignacio Valenzuela Rojas Composer - Performer svalenzuelamusic.wix.com/home youtube.com/svalenzuelamusic ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] put the argument of an abstraction in a message
The arguments start from $1. $0 is a unique identifier per instance of an abstraction. The $1,...,$N strings work differently in messages and objects. $0 does nothing inside messages. Just create an object [$1], send it a bang, and it dumps out the 1st argument of the abstraction it's in. I use it this way for floats. I think you need to declare it differently for strings/symbols. How about [symbol $1]? Chuck On Mon, Oct 15, 2012 at 10:19 AM, Charles Goyard c...@fsck.fr wrote: Hi list, I have an abstraction named overlap. It takes an argument, such as first or second. This abstraction outputs a list. I would like this list to contain the argument. I tried with $0 from inside the abstraction to no avail. It looks like $0 is available only to send and receive ? Maybe this sounds obvious, but I can't find the answer. Thanks, -- Charlot ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] normalizing hann window
On Fri, Oct 12, 2012 at 4:59 PM, Alexandre Torres Porres por...@gmail.com wrote: hi there, in pd's examples, we need to divide by (3/2 * window size) in a 4 overlap on a hann window. what about other overlaps, what is the normalizing factor? and how about other windows? I looked for this info on books and google and stuff, found nothing. Engineers, please help. thanks Alex I'm not exactly sure why it's used either. If you were using a overlap of 2 and used hann windows that cover each block, you would get back the exact signal after applying overlap-and-add with no additional normalization. So, for the same scheme and overlap 4, it stands to reason that you'd only divide by 2 and recover the original signal as well. What's the window size like relative to the block size? same/different? Some other engineer--please help. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] counting how many times an audio file is looped
On Fri, Oct 5, 2012 at 4:25 PM, Rick T ratull...@gmail.com wrote: Greetings All I'm trying to count how may times an audio file is looped then cause it to stop after say 6 loops. 1) I plan on using the select object to compare the sample size (22050) to where the playing wav file is located 2) create a bang into cup object from the select object, this will count the number of loops. 3) Use another select object to stop when it reaches 6 The problem I'm having is trying to compare the sample size to where the playing wav file is currently located. I can get the sample size using the wavinfo object but how do I get the current location of the playing wav file. (I tried using the metro 50 object with the snapshot~ object) but the numbers don't seem be matching up Is there another way I should be doing this Thanks Hi Rick I think you should use [vline~] to feed [tabread4~]. As long as you get the number of samples up front with wavinfo, like you mentioned, you can just schedule those 6 loops to play with vline~ (no need to count and stop the loop), and you always know what sample is playing, because it's the value of the vline~ output. You may also want another vline~ to fade-in and fade-out. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] counting how many times an audio file is looped
On Fri, Oct 5, 2012 at 5:24 PM, Rick T ratull...@gmail.com wrote: Yes I am using tabread4~ I looked up vline~ in the help but it seems to be missing some info on the second and third inlets. Is there some more information about this object. I'm using PD .42.5 extended on ubuntu 10.04 64bit To be honest, I'm not very good at using vline~ myself (the offset value always confuses me). I'm still at work for a little while longer, so no pd here. Basically, what it will look like is you feed [vline~] a series of messages that stands for each reset to 0 and ramp. Comma-separated messages inside a single message will be treated like separate messages. So, it may make a pretty long message, but the idea I was getting at here is like the difference between coding a while() loop and a for() loop. You can avoid the tricky logic and figure out all the timing up front, then just let it run. Chuck I tried doing this but I get an error error: can't connect signal outlet to control inlet phasor~ | *~ | vline~ (error: can't connect signal outlet to control inlet) | tabread4~ Thanks On Fri, Oct 5, 2012 at 11:42 AM, Charles Henry czhe...@gmail.com wrote: On Fri, Oct 5, 2012 at 4:25 PM, Rick T ratull...@gmail.com wrote: Greetings All I'm trying to count how may times an audio file is looped then cause it to stop after say 6 loops. 1) I plan on using the select object to compare the sample size (22050) to where the playing wav file is located 2) create a bang into cup object from the select object, this will count the number of loops. 3) Use another select object to stop when it reaches 6 The problem I'm having is trying to compare the sample size to where the playing wav file is currently located. I can get the sample size using the wavinfo object but how do I get the current location of the playing wav file. (I tried using the metro 50 object with the snapshot~ object) but the numbers don't seem be matching up Is there another way I should be doing this Thanks Hi Rick I think you should use [vline~] to feed [tabread4~]. As long as you get the number of samples up front with wavinfo, like you mentioned, you can just schedule those 6 loops to play with vline~ (no need to count and stop the loop), and you always know what sample is playing, because it's the value of the vline~ output. You may also want another vline~ to fade-in and fade-out. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Super computer made of legos and Raspberry Pi computers
On Mon, Sep 17, 2012 at 4:11 AM, Andy Farnell padawa...@obiwannabe.co.uk wrote: Hearing it from the front line is really interesting Chuck. I am a little envious at the excitement a project like that must produce. Do you know of Joe Deken and the suitcase supercomputer project? He is a big Pd proponent (and friend of Miller I believe) and they are also looking at R-Pi boards for their next portable cluster (I'm probably telling you stuff you already know) best Andy Actually, I just read the post yesterday from Joe--I was sort of aware of the San Diego Supercomputing Center before now. The RPi boards are interesting, and since the best you can do is 100Mb/s, the switch gear should be relatively cheap (and old). However, if you can consolidate your systems more, you need fewer cables, smaller switches, etc... So--look forward to the Kontron KTT30 board which hosts the Tegra 3 SoC. There's no word yet on the price, but it's about 4x as powerful as a Raspberry Pi. So, if it comes in low enough (say $120-140, then it just might beat the RPi for cost. On Sun, Sep 16, 2012 at 10:26:56PM -0500, Charles Henry wrote: On Sun, Sep 16, 2012 at 3:26 PM, Andy Farnell padawa...@obiwannabe.co.uk wrote: On Sun, Sep 16, 2012 at 10:24:45AM -0300, Alexandre Torres Porres wrote: now my question is; spending 4k to build a Pi supercomputer can give you more power and possibilities than with a top of the line MAC for example (which will cost just as much, and be a quad core 2.7 intel i7, 1.6GHz bus, 16GB Ram). We keep using the word 'supercomputer', and maybe a bit of perspective would help clarify matters of scale. ... A supercomputer is, by definition, that which is on the cutting edge of feasible research. Most supercomputers are in a single location and not distributed or opportunistic, they usually have a building dedicated to them and a power supply suitable for a small town of a thousand homes (a few MW). A team of full time staff are needed to run them. They cost a few hundred million to build and a few tens of millions per year to operate. Current supercomputers are measured in tens of Peta FLOPS, ten to a hundred times more powerful than the equivalent mainframe, and are primarily used for scientific modelling. Yeah, but when I tell people what I do, do you think I say cluster computing or symmetric multiprocessing or CUDA applications engineer? No, I tell them I work with supercomputers--It's not a term for practitioners, since there's more specific things to say, ... and it keeps people from thinking I'm going to waste time talking about nerdy shit that I don't want to talk about anyway :) The current guise of the 'mainframe' is what we would now see as a Data Center, a floor of an industrial unit, probably much like your ISP or hosting company with many rows of racked indepenedent units that can be linked into various cluster configurations for virtual services, network presence and data storage. Aggregate CPU power in the region of 10 TFLOP to 0.5 PFLOP At the moment, I'm (the engineer) putting together the proposal for a grant for GPU computing resources (for the researchers and scientists). We're looking to spend about $750,000 on hardware that will perform about 100 TFLOPS. Mostly it will be made up of--whatever NVIDIA Tesla is most cost/power effective--in servers that will hold 4 GPUs. Altogether, we hope this fills up 5-10 racks (in our shiny new energy efficient data center with 32 racks, that the f'ing fire marshall won't let us into for another month, when we've been postponed since June anyway). Supercomputers are still supercomputers, by definition they are beyond wildest imagination and schoolboy fantasies unless you happen to be a scientist who gets to work with them. A bunch of lego bricks networked together does not give you 20PFLOP, so it does not a supercomputer make. However, there is a different point of view emerging since the mid 1990s based on concentrated versus distributed models. Since the clustering of cheap and power efficient microcomputers is now possible because of operating system and networking advances, we often hear of amazing feats of collective CPU power obtained by hooking together old Xboxes with GPUs, (Beowulf - TFLOP range) or using opportunistic distributed networks to get amazing power out of unused cycles (eg SETI at home/BOINC and other volunteer arrays, or 'botnets' used by crackers) (tens to hundreds of TFLOPS). Clustering is currently the most scalable model for supercomputers. Many expensive options exist for systems with large numbers of cores and shared memory--but year after year, more circuits get put on a single die. Generally when you think of supercomputers these days, it's a network of systems that each have a lot of x86_64 cores and a maybe nice co-processor (like the NVIDIA Tesla's). Some of the IBM machines (and Cray
Re: [PD] Super computer made of legos and Raspberry Pi computers
On Sun, Sep 16, 2012 at 8:24 AM, Alexandre Torres Porres por...@gmail.com wrote: now my question is; spending 4k to build a Pi supercomputer can give you more power and possibilities than with a top of the line MAC for example (which will cost just as much, and be a quad core 2.7 intel i7, 1.6GHz bus, 16GB Ram). I think what you'll want to spend 4k on is a Xeon Phi co-processor for a desktop instead. It has 50 cores and a 512-bit instruction word length on each core. I'm guessing that CPU wize it would be more powerful indeed; even thought it's a modest one, that's 64 cores against 4... what I'm not familiar to is how supercomputing works and optimizes the work by splitting it into all CPU units. Maybe it does work like getting hard drives into RAID 0 mode, right? Where the speed of file transfer does double up. You have to write software with MPI (for clustering) or OpenMP (massively multi-threaded) to take advantage of those extra cores. You always lose some efficiency when using multiple cores, but you may speedup the program. The highest possible speedup is achieved when all processes are independent. cheers Alex 2012/9/16 i go bananas hard@gmail.com yeah, separating individual instruments / voices from a mix does seem like a 'just over the horizon' application. I'd love to be able to have a stereo microphone in the room i'm in now, and separate the sound of the rain, the wind, the TV in the background, my typing at this keyboard ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Super computer made of legos and Raspberry Pi computers
On Sun, Sep 16, 2012 at 3:26 PM, Andy Farnell padawa...@obiwannabe.co.uk wrote: On Sun, Sep 16, 2012 at 10:24:45AM -0300, Alexandre Torres Porres wrote: now my question is; spending 4k to build a Pi supercomputer can give you more power and possibilities than with a top of the line MAC for example (which will cost just as much, and be a quad core 2.7 intel i7, 1.6GHz bus, 16GB Ram). We keep using the word 'supercomputer', and maybe a bit of perspective would help clarify matters of scale. ... A supercomputer is, by definition, that which is on the cutting edge of feasible research. Most supercomputers are in a single location and not distributed or opportunistic, they usually have a building dedicated to them and a power supply suitable for a small town of a thousand homes (a few MW). A team of full time staff are needed to run them. They cost a few hundred million to build and a few tens of millions per year to operate. Current supercomputers are measured in tens of Peta FLOPS, ten to a hundred times more powerful than the equivalent mainframe, and are primarily used for scientific modelling. Yeah, but when I tell people what I do, do you think I say cluster computing or symmetric multiprocessing or CUDA applications engineer? No, I tell them I work with supercomputers--It's not a term for practitioners, since there's more specific things to say, ... and it keeps people from thinking I'm going to waste time talking about nerdy shit that I don't want to talk about anyway :) The current guise of the 'mainframe' is what we would now see as a Data Center, a floor of an industrial unit, probably much like your ISP or hosting company with many rows of racked indepenedent units that can be linked into various cluster configurations for virtual services, network presence and data storage. Aggregate CPU power in the region of 10 TFLOP to 0.5 PFLOP At the moment, I'm (the engineer) putting together the proposal for a grant for GPU computing resources (for the researchers and scientists). We're looking to spend about $750,000 on hardware that will perform about 100 TFLOPS. Mostly it will be made up of--whatever NVIDIA Tesla is most cost/power effective--in servers that will hold 4 GPUs. Altogether, we hope this fills up 5-10 racks (in our shiny new energy efficient data center with 32 racks, that the f'ing fire marshall won't let us into for another month, when we've been postponed since June anyway). Supercomputers are still supercomputers, by definition they are beyond wildest imagination and schoolboy fantasies unless you happen to be a scientist who gets to work with them. A bunch of lego bricks networked together does not give you 20PFLOP, so it does not a supercomputer make. However, there is a different point of view emerging since the mid 1990s based on concentrated versus distributed models. Since the clustering of cheap and power efficient microcomputers is now possible because of operating system and networking advances, we often hear of amazing feats of collective CPU power obtained by hooking together old Xboxes with GPUs, (Beowulf - TFLOP range) or using opportunistic distributed networks to get amazing power out of unused cycles (eg SETI at home/BOINC and other volunteer arrays, or 'botnets' used by crackers) (tens to hundreds of TFLOPS). Clustering is currently the most scalable model for supercomputers. Many expensive options exist for systems with large numbers of cores and shared memory--but year after year, more circuits get put on a single die. Generally when you think of supercomputers these days, it's a network of systems that each have a lot of x86_64 cores and a maybe nice co-processor (like the NVIDIA Tesla's). Some of the IBM machines (and Cray, still?) use pipelined multi-core processors of a different architecture and 1000s of cores on a single system, but I don't see that as a trend that will survive. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] Portable webserver with static IP
On Mon, Sep 10, 2012 at 2:32 PM, Pierre Massat pimas...@gmail.com wrote: Ok, so the static IP is the way to go. Actually, Mr Goyard's suggestion is more like what you described. A static IP won't let you just set it up and go. Can I choose x and y arbitrarily ? How do I know what value of x will match my subnet ? As for the value of y, I guess any value high enough (say, 50) in a small home network will do, right? You have to get this information about the network by being connected to it. Choosing the right value for a static IP means that you have to know the DHCP range on the router, and that no IP is already assigned to the address you picked. You can get this information from the configuration of the router--my guess is that you won't have access to it, when you go somewhere else. The static IP option is going to be the most labor/time intensive. It would generally be better to be ~lazy, and just get the IP once you've connected via DHCP, or follow through the steps to setup zeroconf so you just use the same name every time (and disregard the network/IP). Thank you all for your help! Cheers, Pierre. 2012/9/10 Andy Farnell padawa...@obiwannabe.co.uk The simplest and most direct way is to go into /etc/network/interfaces and change the first entry for the interface you want to use (presumably wired ethernet eth0) to iface eth0 inet static 192.168.x.y netmask 255.255.255.0 broadcast 192.168.x.255 gateway 192.168.x.z Your choice of x and y shoud match your subnet and a free IP address. The value for z will be the router. BTW don't end your address with 255 as you suggested :) that is reserved for broadcast address, see the third line. The router should see this via gratuitous ARP quite quickly, no need for any other fancy announcements unless you are in a big and complicated network. Check it after reboot using ifconfig eth0 best Andy On Mon, Sep 10, 2012 at 04:41:33PM +0200, Pierre Massat wrote: Dear Pd-Listers, Sorry this obviously OT question. I'm trying to use my Raspberry Pi (yes I know, i'm also beginning to get fed up with its apparent ubiquity...) as by portable webserver. By portable I mean that i could carry it with me and plug it into any home router and make it accessible to every machine in the local network. The obvious problem i'm currently faced with is that of the IP given by the router to the RPi. I think it's possible to configure the RPi to have a static IP, but I have no idea how portable this solution is. Say, if I configured my RPi to alsways show up as 192.168.0.255, would this address work with every home router? Another option, perhaps : use the unique MAC address of my RPi ? I have no clue whether it is possible at all to connect to a local webserver using the MAC of its host. Any clue is more than welcome, i know practically nothing about networks. Cheers, Pierre. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] beamforming, mic array and audio source localization
I have not worked on it, but I think it's really interesting. Studying microphone arrays for source localization is on my list... once I get through everything else I started and didn't finish yet. I was really wondering about microphone arrays arranged in a circle, semi-circle, or around the perimeter of a room to pick up sounds selectively by location. I think that could be used to good effect for performance/recording. What are you up to now? Chuck On Sun, Aug 19, 2012 at 5:27 AM, Cyrille Henry c...@chnry.net wrote: Hello, did anyone ever worked on beamforming using microphone array for audio source localisation and noise reduction? thx Cyrille ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] 2009-2010 Macbook Pro 2.2GHz Latency?
On Thu, Jul 26, 2012 at 8:50 PM, Tyler Leavitt thecryofl...@gmail.com wrote: 10ms is around the human-ear latency, so anything at that level or below should be good enough for guitar/drumming (this is anectodtal... Iḿ not sure the exact science behind it). Ive never had a problem with my friends older 13 MacBook Pro used as a guitar FX box. Tyler I believe the phenomenon you're describing is called loudness integration. However, I can't find any good citations available on the internet to back it up--here's something that *might* be applicable: Plack, C. J., Moore, B. C. J. (1990). Temporal window shape as a function of frequency and level. Journal of the Acoustical Society of America, 87, 2178–2187. The basic idea is that the cochlea is fed a series of waves and a particular place on the basilar membrane resonates most for a given frequency. The instantaneous power delivered is low, so the power needs to accumulate before the stimulus is strong enough to be perceived. As I recall, it takes about 20 ms to reach a steady state, but it's been a while since I've read anything about it. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] is there a way to send a bang precisely when a sample is looped using tabread4~?
On Mon, Jul 16, 2012 at 2:26 AM, Roman Haefeli reduz...@gmail.com wrote: Hi Jim On Sun, 2012-07-15 at 16:25 -0400, Jim Kremens wrote: Here’s my setup: I’m using a phasor~ to read data out of an array using tabread4~. And I’m using snapshot and metro to let me know current position in that file. Basically, metro pings the snapshot object on an interval and gives me a reading of where we are. I’m trying to fire a bang exactly when the sample is looped. Don't measure something when that something can be known beforehand. Instead of a [phasor~] I'd use a [vline~] to control the play head. Then you only need to tell [vline~] in what time it should play your table. You can use the exact same value to control a [metro]. Example: [metro 2000] - 2s interval | [0, 88200 2000( - play the 88200 samples of your table in 2s | [vline~] | [tabread4~ yourtable] I agree with you Roman--the solution is to use metro+vline or delay+vline. In either case, you get the bangs exactly when the new loop starts. Where it's different: when changing the delay value, your loop will no longer reach the end of the table when it starts over. This could introduce clicks. That's where phasor~ has the advantage. I think you could compensate for that with a line object that counts down the interval. When you provide it another message telling it to change the rate, you'd know exactly how much time is left in the current loop and provide another message to vline~ to make sure it speeds up to compensate. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] ipoke~ ?
On Thu, Jun 21, 2012 at 9:28 AM, Matt Barber brbrof...@gmail.com wrote: I'm not sure how [ipoke~] does what it does, but I'd want to leave the idea of several approaches open (maybe along the lines outlined in this thread) to see what will work best for Pd. Matt One thing to consider is the possibility of a one-sided (non-symmetric) function instead of a strict interpolator. Using a symmetric interpolator adds some latency--to band-limit the incoming signal with a symmetric interpolator, your samples need to extend into the future. Now, if you take a non-symmetric function, what's the worst that happens? You get up to pi/4 radians of phase shift in the passband and up to pi/2 radians in the stopband. It jworks more like a band-limited estimator than an interpolator. If you condition the input signal well, then filling the table consecutively might work and be fast. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] creation parameters to inlets/outlets for documentation?
Hi Jörn Neat idea. And why not? The restricted words are hold, lin, and linear. The code in g_io.c has the creation methods for voutlet and vinlet. The creation argument is for deciding what type of interpolation method to use during upsampling. In the code below, you can see some if/then/else statements that cover what to do with the creation argument. It defaults to the same thing as no argument when the symbol does not match. I'm curious to know what happens (in code) when you provide extra arguments to objects--because from experience this does nothing. I think that's a safe practice, but I don't know for sure. Chuck http://pure-data.svn.sourceforge.net/viewvc/pure-data/trunk/pd/src/g_io.c?revision=9589view=markup 248 static void *vinlet_newsig(t_symbol *s) 249 { 250 t_vinlet *x = (t_vinlet *)pd_new(vinlet_class); 251 x-x_canvas = canvas_getcurrent(); 252 x-x_inlet = canvas_addinlet(x-x_canvas, x-x_obj.ob_pd, s_signal); 253 x-x_endbuf = x-x_buf = (t_float *)getbytes(0); 254 x-x_bufsize = 0; 255 x-x_directsignal = 0; 256 outlet_new(x-x_obj, s_signal); 257 258 resample_init(x-x_updown); 259 260 /* this should be though over: 261 * it might prove hard to provide consistency between labeled up- downsampling methods 262 * maybe indeces would be better... 263 * 264 * up till now we provide several upsampling methods and 1 single downsampling method (no filtering !) 265 */ 266 if (s == gensym(hold))x-x_updown.method=1; /* up: sample and hold */ 267 else if (s == gensym(lin))x-x_updown.method=2; /* up: linear interpolation */ 268 else x-x_updown.method=0; /* up: zero-padding */ 269 270 return (x); 271 } 272 273 static void vinlet_setup(void) 274 { 275 vinlet_class = class_new(gensym(inlet), (t_newmethod)vinlet_new, 276 (t_method)vinlet_free, sizeof(t_vinlet), CLASS_NOINLET, A_DEFSYM, 0); 277 class_addcreator((t_newmethod)vinlet_newsig, gensym(inlet~), A_DEFSYM, 0); 278 class_addbang(vinlet_class, vinlet_bang); 279 class_addpointer(vinlet_class, vinlet_pointer); 280 class_addfloat(vinlet_class, vinlet_float); 281 class_addsymbol(vinlet_class, vinlet_symbol); 282 class_addlist(vinlet_class, vinlet_list); 283 class_addanything(vinlet_class, vinlet_anything); 284 class_addmethod(vinlet_class, (t_method)vinlet_dsp, gensym(dsp), 0); 285 class_sethelpsymbol(vinlet_class, gensym(pd)); 286 } ... 558 static void *voutlet_newsig(t_symbol *s) 559 { 560 t_voutlet *x = (t_voutlet *)pd_new(voutlet_class); 561 x-x_canvas = canvas_getcurrent(); 562 x-x_parentoutlet = canvas_addoutlet(x-x_canvas, 563 x-x_obj.ob_pd, s_signal); 564 inlet_new(x-x_obj, x-x_obj.ob_pd, s_signal, s_signal); 565 x-x_endbuf = x-x_buf = (t_sample *)getbytes(0); 566 x-x_bufsize = 0; 567 568 resample_init(x-x_updown); 569 570 /* this should be though over: 571 * it might prove hard to provide consistency between labeled up- downsampling methods 572 * maybe indeces would be better... 573 * 574 * up till now we provide several upsampling methods and 1 single downsampling method (no filtering !) 575 */ 576 if (s == gensym(hold))x-x_updown.method=1; /* up: sample and hold */ 577 else if (s == gensym(lin))x-x_updown.method=2; /* up: linear interpolation */ 578 else if (s == gensym(linear))x-x_updown.method=2; /* up: linear interpolation */ 579 else x-x_updown.method=0; /* up: zero-padding; down: ignore samples inbetween */ 580 581 return (x); 582 } 583 584 585 static void voutlet_setup(void) 586 { 587 voutlet_class = class_new(gensym(outlet), (t_newmethod)voutlet_new, 588 (t_method)voutlet_free, sizeof(t_voutlet), CLASS_NOINLET, A_DEFSYM, 0); 589 class_addcreator((t_newmethod)voutlet_newsig, gensym(outlet~), A_DEFSYM, 0); 590 class_addbang(voutlet_class, voutlet_bang); 591 class_addpointer(voutlet_class, voutlet_pointer); 592 class_addfloat(voutlet_class, (t_method)voutlet_float); 593 class_addsymbol(voutlet_class, voutlet_symbol); 594 class_addlist(voutlet_class, voutlet_list); 595 class_addanything(voutlet_class, voutlet_anything); 596 class_addmethod(voutlet_class, (t_method)voutlet_dsp, gensym(dsp), 0); 597 class_sethelpsymbol(voutlet_class, gensym(pd)); 598 } On Tue, Jun 19, 2012 at 2:41 PM, Jörn Nettingsmeier netti...@stackingdwarves.net wrote: hi *! first of all, thanks for all your helpful replies to my earlier question about messages and abstraction - i'm still trying to understand some of the comments, but i'm going with claude's suggestion for now to keep the ID knowledge outside of all related objects and not use $0. so far, that seems to do the job, and the code is a lot cleaner now. will post asap. quick question: is it legal to (ab)use creation parameters to inlets and outlets for documentation,
Re: [PD] ipoke~ ?
On Wed, Jun 13, 2012 at 6:14 PM, katja katjavet...@gmail.com wrote: There should be an (optional) amplitude compensation for up- and downsampling, as an amplitude effect would be inconvenient in the case of a variable-speed sound-on-sound looper. Katja I think that a consideration here to justify a scaling effect is to deliver the same rate of power. I like looking at this problem with sinc functions, because the spectrum becomes easy to see, and the energy is easy to calculate. The function with sampling rate f_s and unit spectrum from -f_s/2 to f_s/2 is f_s*sinc(t*f_s). This function when it's convolved with itself, equals itself. and if you have f1 f2, f1*sinc(t*f1) convolved by f2*sinc(t*f2) = f1*sinc(t*f1) which is important for comparing interpolators at different frequencies. The L2 norm of f_s*sinc(t*f_s) = f_s. Here's the term that grows larger when we increase f_s. In a given block, you're always writing N samples. Your goal is to write N orthogonal functions that fills all the values in some interval and keep normalized the power during that interval. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] ipoke~ ?
I'm not sure I understood the whole thread so far... let me back up: I'm not sure that you want to write samples of a function to the table for each sample you want to write. You start with two signals (blocks of N), one is the data you want to write, the other is the indexes where you want the variables written. The data you want to write is an evenly spaced signal with spectrum on -1/2 f 1/2. Depending on how closely spaced the indexes are, you get aliasing on side, and on the other you have more spectrum than you need. Close together (data written to buffer slower than normal speed): aliasing. The signal that we're writing to the table has fewer points than what's needed to cover the spectrum of the input signal. If all you did was write 4 points from a constant interpolator, you'd still have the aliasing. Far apart (writing faster): There's evidently a possibility of a perfect reconstruction because you've got more points than you need. I think that can be done with sinc functions, and then you can choose finite-length interpolator functions as approximations. This is the easy part of the problem, if you just ignore how potentially expensive it is :) What I see happening is that you when you write-then-read with tabwrite4~ / tabread4~, you get back a sampling of convolving each of the interpolation functions and the input data. The effect of each sample spreads out to cover 8 samples on the output. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] ipoke~ ?
On Wed, Jun 13, 2012 at 3:27 PM, Matt Barber brbrof...@gmail.com wrote: I'm not sure I understand this - I assume you mean very small increments in the written table. So lets say you're going to try to write a whole 64-sample input block to between indices 10 and 11 of the table. If you're writing 4 samples each time, what you end up with is not cpu overload, but just four samples with possibly a very high amplitude, depending upon the nature of the signal. And actually, if you think about this with regard to the delay line, this would be what would happen if the sound source were moving toward a microphone at or near the speed of sound, so the very high amplitude would in effect be a digital sonic boom. Matt I think you'll need to apply a scaling factor so that samples that accumulate values over a short interval will not blow up. I've been reading your discussion, and it looks like a really fun math problem. I'm stuck wrangling servers and cultivating my ulcer for now... but I hope I can find some time to study it with you soon. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] an BUG on [expr] ???
On Wed, May 30, 2012 at 10:17 AM, Jonghyun Kim agitato...@gmail.com wrote: dear list, Ver: 0.42.5-extended 0.43.1-extended-20120510 on MacOS X 10.6.8 I think it is a bug... Could be... since when does Pd use integer arithmetic by default? for anything? Workaround: [expr (1000.0 / 60 ) * $f1] Try making sure that one or both of your numbers are parsed as floating point numbers and see what happens. 60 | [expr (1000 / 60 ) * $f1] | 960 It must be 1000, but it isn't... Am I wrong? Why I get 960?? Best, Jong ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] cheapest production-scale pd-anywhere platform?
On Thu, May 17, 2012 at 9:43 PM, Hans-Christoph Steiner h...@at.or.at wrote: Its going to be hard to beat the price of the Raspbery π. Why not use it? .hc The biggest problem for the near future is availability. One vendor sent an email to say the R-Pi would be shipping soon! and by soon! it meant 2 months away. At this point, if you want 100 of them, that's about 1% of their supply, and I'd expect they're swamped with orders for months to come. It's going to be hard to get very many of them. My guess: It should work well for the price and specs as long as you can wait 6 or so months. Chuck On May 15, 2012, at 8:19 PM, Tedb0t wrote: Hi all, I'm researching a possible project that would embed a pd patch into a product. It would basically be a couple of knobs and a 16-bit audio output. Anyone have any idea what's the cheapest way to do this that's production-scale? i.e. for hundreds of units, not hacked ipods, etc.. I'm looking for something on the order of $25, and ironically, Raspberry π is way, WAY overkill. Thanks in advance for any clues :) --t3db0t ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] change base of log
Divide the result by ln(10)=2.30258509 I'd put this into an abstraction named log10.pd for example: [inlet] | [log] | [/ 2.302585] | [outlet] Chuck On Fri, May 4, 2012 at 2:30 PM, Roberto Aramburu aramburum...@gmail.com wrote: Hello list, ive noticed that the object [log] only outputs the natural logarithm and im wondering if there is an object in Pd that can give me log base 10. Thanks in advance. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [Pd] Compile external with C++ compiler?
Hi guys The part that I don't get is how to call C functions from C++? I don't think I've even tried that before. Have you? Joe: I've built externals that just call C++ functions that I declared with extern C or wrote wrapper functions to export a C-callable public interface to C++ functions. Best suggestion I've got is to identify which functions you've got are going to be public and which ones are private and plan out how you're going to declare them. Chuck On 4/26/12, Ed Kelly morph_2...@yahoo.co.uk wrote: Hi Joe, Have you thought of using ofxPd? I'm involved in the creation of an app for the iPhone right now, and we're using ofxPd from Dan Wilcox: https://github.com/danomatika/ofxPd Since Openframeworks is a bunch of C++ wrappers for various libraries, ofxPd adds Pd to the libraries that you can work with in C++. Then you can call the setup function within the xcode build, and your object will work in libpd (i.e. ofxPd) in the app environment. Bear in mind that Apple do not like GnuGPL licensed stuff, so I've created BSD licensed versions of some of my own Pd externals for this project. And the app works. We're in the final stages now, so I'll post to the list when it's complete! Best, Ed Gemnotes-0.1alpha: Live music notation for Pure Data http://sharktracks.co.uk/ From: Joe White white.j...@gmail.com To: pd-list pd-list@iem.at Sent: Thursday, 26 April 2012, 16:51 Subject: [PD] [Pd] Compile external with C++ compiler? Hi all, Thought I might as well ask this here because you guys know everything :) I'm writing an external to be built into an iOS app that's running Pd. The catch is I need to interface with a C++ library within the external. The external builds and runs fine if I'm using the C compiler (in Xcode) but I can't access the C++ library functions. If I switch it to compile in C++ (by changing the objective-c file from .m to .mm) then I can use the C++ library functions but it complains that it can't find 'class_addmethod' 'No matching function for call to 'class_addmethod' I've tried declaring the setup function as C code like Katja explains on her site: extern C void external_tilde_setup(void) { } But that still didn't seem to work. I was also going through the list and found this thread but I'm not sure if it's the right approach. Plus I'm more of an audio guy than programmer :) Any ideas would be much appreciated. Thanks, Joe -- Follow me on Twitter @diplojocus ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] why does PD round numbers? (in tables, in messageboxes, etc)
On Tue, Apr 10, 2012 at 7:32 AM, IOhannes m zmölnig zmoel...@iem.at wrote: On 04/10/12 10:33, katja wrote: I mean to say that switching to any format other than decimal ASCII would make it impossible for Pd to interpret patch files using the current format. why? I think that using any non-decimal ascii format would be bad for backwards compatibility. You'd need to have a function that would be able to distinguish the decimal numbers from old patches from the newer format. For example, 9000 is both a decimal and hexadecimal number--so then, you'd need identifiers to know which method to use. It's not a very clear-cut tradeoff, to adopt anything other than longer decimal ascii numbers. Things could get very complicated trying to keep multiple formats alive--or they could be simple and just use a lot more characters. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] sf/bay area anyone?
I will be out to see the conference also. I noticed you and Peter will be the first presenters--I will look forward to it. Chuck On 4/8/12, IOhannes m zmölnig zmoel...@iem.at wrote: since i spend a few days in san francisco (for visiting the linux audio conference [1] in stanford) i wanted to ask whether there are some Pders round here who would like to go for a beer... fgmasdr IOhannes [1] http://lac.linuxaudio.org/2012/ ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [PD-announce] Pd 0.43-2 released (windows startup bug fix)
On 3/25/12, Jonathan Wilkes jancs...@yahoo.com wrote: - Original Message - From: Miller Puckette m...@ucsd.edu To: pd-annou...@iem.at Cc: Sent: Sunday, March 25, 2012 1:52 PM Subject: [PD] [PD-announce] Pd 0.43-2 released (windows startup bug fix) Hi all - Only Microsoft Windows users should care... but 0.43-2 is now finalized (essentialy the same as the test1 version), which fixes the missing TK library problem on Microsoft Windows. I think things are reasonably stable now and I can turn to some long-put-off projects. Foremost is a unification of message boxes with textfile functionality, and making a matching message type fr data structures (which will join float, symbol and array.) I'm afraid whatever message type you come up with for data structures will be severely limited unless you solve the problem of locality wrt data structures. Currently, one can choose either a) a modular approach with [struct $0-name] which can be used inside abstractions, or b) state-savable [struct name] which is global and thus requires part of the user's brain power to remember _not_ to load more than one instance of the patch that contains the template. An idea for workaround: create your abstraction with one of each--a local $0-struct and a global-struct. When loading the patch, write the data from global-struct into $0-struct, and if you intend to save the data, write the data back into global-struct before saving the patch. or maybe you'd need to make two abstractions--one global with one instance for saved data, and many instances of your local version. This starts to sound bad... ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Some more float weirdness/fun
On 3/10/12, Lorenzo Sutton lorenzofsut...@gmail.com wrote: On 09/03/12 19:18, Quim Llimona wrote: It's well-known that floats can't be treated the same way as integers... but since PD is aimed at non-engineers and non-scientists I think it would be a good idea to implement the good comparison algorithms (i.e. checking against a threshold, etc) inside [==] and so, just to make patching easier. Maybe it's already supposed to behave this way... No, no...I don't agree (and hope initiating the thread didn't suggest this idea). [==] should be what it says exact comparison. Actually in the patch I was making it would have been simple to put in a [=] instead which basically *is* a threshold... I just thought it would be nice to point out some float fun given all the discussions :) Lorenzo. How about an abstraction that uses = against 2xepsilon*|input|? That would be a reliable automatic way to ignore single-bit rounding errors. I'm just using this page as a reference: http://en.wikipedia.org/wiki/Machine_epsilon There's two inputs, so I'd choose the largest of them and use that in calculating the threshold. The test patch below just takes a vertical slider from -1e-7 to 1e-7 and adds the value to 0.999 to be compared against. This patch needs a little improvement--it seems to be obeying a threshold which is a little closer to 8.9e-8 (which is greater than the 32-bit machine epsilon so it still does what is wanted with a little extra room) nearly_equal.pd #N canvas 86 491 682 612 10; #X obj 91 39 inlet; #X obj 137 39 inlet; #X obj 182 39 \$1; #X obj 216 39 loadbang; #X obj 94 140 abs; #X obj 98 345 =; #X obj 139 110 abs; #X obj 185 110 abs; #X obj 93 74 t f f; #X obj 138 74 t f f; #X obj 140 212 =; #X obj 189 209 ; #X obj 139 145 f; #X obj 186 144 t b f; #X obj 202 244 *; #X obj 140 172 t f f; #X obj 140 244 *; #X obj 94 108 -; #X obj 140 276 +; #X obj 140 308 * 1.192e-07; #X obj 97 391 outlet; #X connect 0 0 8 0; #X connect 1 0 9 0; #X connect 2 0 17 1; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 20 0; #X connect 6 0 12 0; #X connect 7 0 13 0; #X connect 8 0 17 0; #X connect 8 1 6 0; #X connect 9 0 17 1; #X connect 9 1 7 0; #X connect 10 0 16 0; #X connect 11 0 14 0; #X connect 12 0 15 0; #X connect 13 0 12 0; #X connect 13 1 10 1; #X connect 13 1 11 1; #X connect 13 1 14 1; #X connect 14 0 18 1; #X connect 15 0 10 0; #X connect 15 1 11 0; #X connect 15 1 16 1; #X connect 16 0 18 0; #X connect 17 0 4 0; #X connect 18 0 19 0; #X connect 19 0 5 1; nearly_equal_test.pd #N canvas 0 25 264 184 10; #X obj 118 79 nearly_equal 0.999; #X obj 38 27 vsl 15 128 -1e-07 1e-07 0 0 empty empty empty 0 -9 0 10 -262144 -1 -1 0 1; #X floatatom 115 135 5 0 0 0 - - -; #X obj 116 18 + 0.999; #X connect 0 0 2 0; #X connect 1 0 3 0; #X connect 3 0 0 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] list etiquette
On 3/10/12, Dafydd Hughes dafyd...@gmail.com wrote: And there are pretty widely accepted norms about language (I'm talking about agressive langage and expletives here) on the list, too, even if they're not written down, correct? fuck no! Pd expands boundaries of what is music and art. Why expect any boundaries on the list? The same norm you're expecting might not be shared by other people who use the list too. I don't care for some things said on the list, but all you can really do is try to convince other people to see things your way. People just use etiquette on the list because they want to. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Some more float weirdness/fun
But 0.1 still cannot be represented exactly by float64, can it? For any floatX unless X is infinity the number of floats that are not exactly represented is always infinite. Martin There is a countably infinite number of rational numbers and a uncountably infinite number of irrational numbers that cannot be represented. We could also debate over whether infinity is exactly represented. When some math operation overflows (exceeds the range of floats), the result assigned is inf. That's not the definition of infinity either: Take the set of real numbers R and the ordering operation , then add an additional point infinity such that for any x belonging to R, x infinity. So, the inf in the float definition only represents infinity defined relative to the finitely countable set of numbers that can be represented as floats, not the actual infinity as represented in your head :) ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Is there a way to block/filter Mathieu ?
On 3/9/12, mahatGma rabintrah mahat...@gmail.com wrote: I would love to receive daily digest without Mathieu's unnecessary / arrogant comments. Is there a way to filter his posts? Now, if you'd just explain that you're quitting smoking, then that comment would be disregarded based on recent posts. The digest sucks anyhow--what you have is a technical problem ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] six sound outputs with sound blaster X-Fi Surround 5.1
Sorry--I have no good news for you... and perhaps this knowledge only adds to your injury. The ASIC in your sound card has many, many times the potential that it actually gets used for--up to 10,000 MIPS on a quad-core DSP and up to 128 channels. http://www.creative.com/oem/products/chips/CA20K2.asp So, should it surprise you that you can't use 6 separate channels with your sound card now that you know what a colossal waste of hardware it is to put the ca20k2 chip in a 5.1 sound card? Chuck (edited for public consumptionpublic) On Mon, Mar 5, 2012 at 2:10 PM, altern alte...@gmail.com wrote: hi I am trying to get this sound blaster X-Fi Surround 5.1 sound card to work on windows with 6 outputs http://www.google.com/search?q=Creative+Soundblaster+X-Fi+Surround+5.1hl=euclient=ubuntuhs=Mvzchannel=fsprmd=imvnstbm=ischtbo=usource=univsa=Xei=NxxVT_XdNYXF0QXTwvnXCwved=0CB4QsAQbiw=1024bih=699 The idea is to get a adc~ 1 2 3 4 5 6 and route different sounds to each of the outputs that connects to self powered mono speakers. But I am going nuts. The card only works with 2 outputs under ASIO. And with the default configuration if I set 6 outputs it does some kind of 5.1 mixing. I have tried to disable all 5.1 stuff under control panel but no way... anyone? thanks enrike ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] six sound outputs with sound blaster X-Fi Surround 5.1
On Mon, Mar 5, 2012 at 3:42 PM, Mathieu Bouchard ma...@artengine.ca wrote: Le 2012-03-05 à 15:03:00, Charles Henry a écrit : Sorry--I have no good news for you... and perhaps this knowledge only adds to your injury. The ASIC in your sound card has many, many times the potential that it actually gets used for--up to 10,000 MIPS on a quad-core DSP and up to 128 channels. It's just normal that increasingly more powerful technology becomes generic so that it can be used in many more products so that it can sell more so that it can pay for its own development and cut down on the production costs... eventually we put supercomputers inside chequebook-sized boxes and call them « telephones ». I believe the 20k2 chip was rolled out in 2007. By contrast, my 2009 HTC Hero had less power than that, but that's apples v. oranges. The problem I see with this chip is just that: it has so much capability that it could be used for a wide range of products, but then the designers program it and build salable hardware around just one sort of surround sound product. The free market has clearly failed... The best you can do is write a distributed-computing virus that detects any such ASIC and hook it on some math problem such as trying to crack exterrestrial prime numbers and stuff... ;) Yes, something USEFUL :) ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] six sound outputs with sound blaster X-Fi Surround 5.1
On Mon, Mar 5, 2012 at 4:35 PM, altern alte...@gmail.com wrote: I see. so basically I could use this sound card to seach for life across the universe but I cannot separate the ** output channels. great. not sure I have time to get another card on time. grrr... thanks! I'm sorry if I discouraged you from looking further -- I suspect the hardware is doing the mixing in a way that's not under software control, but I don't know for sure that's the case. I have a strong feeling about it, since Creative is restricting what the card is capable of. I suspect it's doing it's 5.1 mixing operations using the DSP. It could be that some obscure driver option will bypass the DSP and take 6 channels from software. Good luck! ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] getting the first and last element of an array using tabread4
On Fri, Mar 2, 2012 at 3:41 AM, Aykut Caglayan aykut_cagla...@yahoo.com wrote: What is the reason for not being able to get the accurate value of the first and last element of an array using tabread4? The array used by tabread4~ expects to have 1 sample copied from the last element of the array to the beginning, and 2 samples from the beginning copied to the end of the array. You get this automatically when using the sinesum/cosinesum array creation methods for example. Others? For a given fractional index x on [n, n+1) tabread4~ takes four points f[n-1], f[n], f[n+1], f[n+2]. So, if you start with an N length array, you want to have it be N+3 long to hold the extra points and index it between 1 and N. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] dsp graph question
On Thu, Mar 1, 2012 at 2:02 PM, Jonathan Wilkes jancs...@yahoo.com wrote: Not sure if this makes sense, but here goes: Can a Pd dsp graph be nested inside a Pd dsp graph? This occurs whenever you make a sub-canvas. For each canvas, there is a new dspcontext struct created. The canvas-dsp graph process creates a nested dsp graph, delimited from its parent by block prolog/epilog (when re-blocked from parent) and inlet/outlet prolog/epilog code. It may be possible to think of just any sub-graph as being a nested dsp graph, for that matter. But yes, I think it's clear that nested dsp graphs can be programmed and used. If this were the case, then would it be possible created/destroy any of these scalars at will and only have to rebuild this nested dsp graph that is associated with it's [struct]? Not possible yet! Every time you add/delete a connection (and some other conditions I'm not sure of), the dsp stops, rebuilds its entire graph, and re-starts. Just set ugen_loud to 1 and re-compile--you will be greeted with a representation of Pd building your dsp graph every time you make changes to it. Comments in d_ugen.c have said--for a long time--that this is not a preferred way of doing things. It's just the way things are done now. I'm obviously still very sketchy on signal graph compilation, so links to any documentation or resources are appreciated! -Jonathan I wouldn't want you to have to learn all the hard lessons about how Pd does it's internal management of dsp chains and the like, but--if it's interesting to you and you might want to become a developer, I recommend reading d_ugen.c, g_canvas.c, g_io.c, and d_resample.c. It's all in there. Feel free to ask any other questions. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd on ARM devices
On Wed, Feb 29, 2012 at 10:06 AM, Pierre Massat pimas...@gmail.com wrote: Dear List, I'm planning to buy a Raspberry Pi sometime soon, and I'd like to know the implications of the ARM11 chip on the use of Pd. I know nothing about the differences in architectures, so i'd like to know : - why an ARM chip would be a problem for compiling, installing and running Pd, It's not a problem--Pd compiles and runs on the arm architecture. Android devices for example have arm processors. Debian pure data packages are available for arm. compilation-wise... there's some gcc options that you use to specify arm architectures. I'd say nothing to it, but you'll most likely have to play a bit to find the differences. - if there exists another option that's up to date (Pda seems a bit old), - if Libpd could be used instead (given that i only want to run Pd patches on the Raspberry Pi, I don't need to edit anything on it). Don't you want to try the graphics processor on the R. Pi? At the very least, it should be good enough for tcl/tk. Thank you in advance! Cheers! Pierre. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd on ARM devices
On Wed, Feb 29, 2012 at 12:39 PM, Pierre Massat pimas...@gmail.com wrote: 2012/2/29 Charles Henry czhe...@gmail.com On Wed, Feb 29, 2012 at 10:06 AM, Pierre Massat pimas...@gmail.com wrote: Dear List, I'm planning to buy a Raspberry Pi sometime soon, and I'd like to know the implications of the ARM11 chip on the use of Pd. I know nothing about the differences in architectures, so i'd like to know : - why an ARM chip would be a problem for compiling, installing and running Pd, It's not a problem--Pd compiles and runs on the arm architecture. Android devices for example have arm processors. Debian pure data packages are available for arm. That's good news! I suppose Debian packages can't be installed in Fedora, can they? No--planet CCRMA has some i386 pd packages, but not arm. If you want to run Fedora and Pd, you will need to compile it.If only you knew the power of the dark side, and by dark side, I mean Debian. If you didn't get your pre-order in time for this batch, you'll have to wait a month, I bet. By the time I got to work this morning, it was too late. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] constants
On 2012-02-15 16:11, Jonathan Wilkes wrote: Let's go back: Instead of time units, let's take the incoming single-selector pi and replace it with the float value of pi for any object that doesn't have a pi method or an anything method (but does have a float method). Furthermore, if a class defines a float argument but the argument provided isn't a float, then check first if what it received was A_SYMBOL 'pi' and if so replace with the float value of pi. Is what I wrote above possible to do without causing huge problems to performance or creating ambiguities? Is it something people would look at as a feature, or a nuisance that makes it harder to learn Pd? If the answer is that something like this constant expansion is a bad idea then there's no point discussing macro expansion for time units. -Jonathan You could easily add a creator function for [pi] which becomes a float with initial value 3.14--and add a method to [f] for the message [ pi ( Still a little cumbersome to use because this doesn't get replacement in messages, arguments or anywhere else--but consistent with patching styles for symbols/floats. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] OT: faster than Fourier transform
On Thu, Feb 2, 2012 at 3:07 PM, Mathieu Bouchard ma...@artengine.ca wrote: Le 2012-02-02 à 02:36:00, Ed Kelly a écrit : Still the problem with any window-based FFT is that we have to get enough points (e.g. 512, 1024) before we can do the analysis, so there is always a delay (44100/1024 = ~43ms) between live input and output (latency). Heisenberg's Uncertainty Principle (in its acoustic version) is a hard theoretical limit, meaning it can't possibly be violated. As I understand it, it's just a sheer mathematical fact expressing the trade-off between the std deviation of a distribution in the time domain and the std deviation of the fourier transform of that distribution. But then you apply it to the Shrodinger equation (a differential equation involving position and velocity) and you get the most famous corollary in quantum. I agree that it's a hard limit, but it's really just a math problem to begin with :) All you can do is separate the analysis of frequencies so that you get frequent results for treble vs less frequent results for bass. This comes at the expense of having to customise, complicate and/or slow down FFT to make it do what you want. Much more interesting is the sliding phase vocoder (Russell Bradford, Richard Dobson, and John ffitch, 2005) where the FFT is adjusted in each sample rather than each frame, and the latency is significantly reduced. What's the speed of the sliding DFT ? I can think of an O(n) algorithm for it (per sample). I'd be surprised if there's anything better. You'd still have to do an FFT to begin with, and after shifting by m samples, you'd be in O(m*n) territory. Assume you've got a signal s on [0,N-1] and you have already computed its DFT plus this vector F1={e^(2*pi*i* k/N}, k=0,...,N-1 The next DFT to calculate is on [1,N]. First subtract out the contribution of s(0)--this is easy because the DFT of {s(0),0,0,..} is {s(0),s(0),s(0),...} Next, the values in the resulting vector are multiplied by F1. This has the effect of shifting the time domain signal to the left by 1 sample. Then, add in the effect of the new sample, F1*s(n). I see some ways those steps could be made simpler. Lump the 1st and 3rd steps together and just add s(n)-s(0) to all the DFT values, then multiply once by F1 (performing a circular shift in the time domain). On the next iteration, use s(n+1)-s(1). So, the total cost is a buffer of N samples, a complex vector of N DFT values (F1)---N+1 additions/subtractions, and N complex multiply operations (each is 4 multiply and 2 additions/subtractions), per sample. There might be some constants to shake out depending which DFT formula you decide to use. The sign convention on the DFT is arbitrary, so I often get mixed up (F1 could be e^(-2*pi*i*k/N){k=0,...,N-1} if I'm wrong). Note that they call it «DFT», and not «FFT», and that's presumably because it doesn't have to do much with FFT... whereas DFT is a more generic term for whatever computes harmonics on blocks of discrete signals. The access to the sliding DFT article is reserved to IEEE members... ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Resonant filter using cpole~ czero~
On 2/2/12, Patrice Colet colet.patr...@free.fr wrote: De: Ed Kelly morph_2...@yahoo.co.uk Hi all, Here is my first attempt at making a resonant lowpass filter using cpole~ and czero~ objects. It's the first version I've made which actually sounds halfway towards what I want to achieve, which is a decent diode-ladder or transistor-ladder filter emulation. I want to make this using only vanilla objects, particularly rpole~, cpole~ etc. so that they can be ultra-portable and signal-controlled. Also, http://www.timstinchcombe.co.uk/index.php?pge=poles#diode Does anyone else have any ideas, or patches we can share? Ed Gemnotes-0.1alpha: Live music notation for Pure Data http://sharktracks.co.uk/ hello, using biquad~ gives very nice results for resonant filtering, ggee audio filters show how it sounds. It should be possible to use vanilla's audio math objects only for the biquad mathematical functions instead of an external. Hi Ed, Patrice This patch ds~ (damped sines) uses the biquad. It works as a resonant filter--I like to feed it impulses. The arguments to the patch are frequency and the number of ms to decay 10 dB ( I think). Copied below. Chuck ds~.pd - #N canvas 0 0 337 561 10; #X obj 12 384 biquad~; #X obj 57 351 pack f f f f f; #X obj 145 188 exp; #X obj 156 98 * 44.1; #X text 209 96 ms to samples; #X obj 156 119 t b f; #X obj 145 154 / 44100; #X msg 91 118 -2.30259; #X obj 145 219 t f f; #X obj 17 148 * 6.28319; #X obj 63 208 sin; #X obj 26 210 cos; #X obj 60 257 * 2; #X obj 45 290 * 1; #X obj 92 256 t f f; #X obj 92 279 * 1; #X obj 82 313 * -1; #X msg 132 302 0; #X obj 166 303 * 1; #X msg 199 302 0; #X obj 32 119 / 44100; #X obj 34 180 t f f; #X text 176 189 a; #X text 13 229 cos and sin of b; #X obj 32 78 unpack f f; #X obj 56 460 outlet~; #X obj 11 31 inlet~; #X obj 73 32 inlet; #X obj 158 8 loadbang; #X obj 158 53 \$1; #X obj 188 53 \$2; #X obj 158 30 t b b; #X obj 124 75 pack 100 10; #X connect 0 0 25 0; #X connect 1 0 0 0; #X connect 2 0 8 0; #X connect 3 0 5 0; #X connect 5 0 7 0; #X connect 5 1 6 1; #X connect 6 0 2 0; #X connect 7 0 6 0; #X connect 8 0 12 0; #X connect 8 1 14 0; #X connect 8 1 17 0; #X connect 8 1 19 0; #X connect 8 1 18 1; #X connect 9 0 21 0; #X connect 10 0 18 0; #X connect 11 0 13 0; #X connect 12 0 13 1; #X connect 13 0 1 0; #X connect 14 0 15 0; #X connect 14 1 15 1; #X connect 15 0 16 0; #X connect 16 0 1 1; #X connect 17 0 1 2; #X connect 18 0 1 3; #X connect 19 0 1 4; #X connect 20 0 9 0; #X connect 21 0 11 0; #X connect 21 1 10 0; #X connect 24 0 20 0; #X connect 24 1 3 0; #X connect 26 0 0 0; #X connect 27 0 24 0; #X connect 28 0 31 0; #X connect 29 0 32 0; #X connect 30 0 32 1; #X connect 31 0 29 0; #X connect 31 1 30 0; #X connect 32 0 24 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] OT: faster than Fourier transform
On Wed, Jan 25, 2012 at 4:03 PM, Mathieu Bouchard ma...@artengine.ca wrote: Le 2012-01-20 à 23:55:00, Andy Farnell a écrit : Considering the paper is unpublished and sparse decomposition is a pretty heavy topic I thought that is a really nice bit of science journalism by Larry Hardesty. Since periodic music signals probably fit the bill quite well it's good news for our kind of work. Does it have better upper bounds ? If not, it doesn't change much for realtime. E.g. if I feed something somewhat like a white noise to this FFT, what exactly will it try skipping ? Every harmonic will be fairly nonzero. I've wondered about that too-from a perceptual point of view. There's not much differentiation among noise signals. They all mostly sound the same Even though there's a very large number of dimensions for variation, they must have a sparse representation somewhere (in the brains... brains...) but the FFT? no way... ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] a phase vocoder pitch shifter harmonizer in real time
On 1/10/12, Alexandre Torres Porres por...@gmail.com wrote: sorry, what dont you get? I guess the shifter+mixer makes sense for the harmonizer--I just don't see why it's running when I just want to hear the pitch shifting effect by itself. Is that just a mistake? This is unrelated, but when I use [openpanel] under linux, it only lets me select *.pd files. I guess I'll mess with readsf~ by passing messages so I can try it out with some sound files. you're supposed to first hear the beatings and then the shift up anyway. well, let me try with some oscilattors myself, that should be fun see ya 2012/1/9 Charles Henry czhe...@gmail.com Hey Alex I'm just trying this out. I didn't have a sound file I particularly wanted to try, so I just plugged in an osc~, and what I found on the output: a mixture of the original tone with the shifted one. So, the shifted tone was clearly audible, but as I shifted the frequency, I could hear first the beating of the tones then two tones. And upon reading into the patch, that's clearly what you're doing in a subpatch, but I don't get why? Chuck On 1/9/12, Alexandre Torres Porres por...@gmail.com wrote: Hi Folks, working with these phase vocoder stuff, I thought I'd try and do a simple shifter/harmonizer with it once and for all. The phase vocoder shifter I found in pdmtl doesn't work as a harmonizer, and the latency was pretty high and not constant, so I did this. It's all as a Vanila abstraction! I have 2 short buffers (arrays) and do crossfade between them, I got some phase issues trying out and building it, but they now seem reasonably fine. I just did this, so I should work more on it to make it more stable and robust. I'm sure there are some bugs around, and it's still very dirty and needs code cleaning. Maybe I should try and implement it with delay lines as in pdmtl, hmmm, I guess it'd be better, right? Hmm... Later on when I have the time... Anyway, this goes back to the Pd Shifting thread I started here a while ago. I really like the quality of the phase vocoder. Somehow I don't get interested so much on other techniques and such. Yes, I assume there are some advantages out there, so what exactly would I be missing? Well, Check this thing I did out, see what you think, let's talk some more about pitch shifting get it here: http://sites.google.com/site/porres/pvoc-shifter.zip I wish to officially release it along with some other tools I'm building for my PhD, soon to be over... by the way, I see this object is finally available http://www.katjaas.nl/pitchshift/pitchshift.html need to try it out. cheers alex ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] a phase vocoder pitch shifter harmonizer in real time
Hey Alex I'm just trying this out. I didn't have a sound file I particularly wanted to try, so I just plugged in an osc~, and what I found on the output: a mixture of the original tone with the shifted one. So, the shifted tone was clearly audible, but as I shifted the frequency, I could hear first the beating of the tones then two tones. And upon reading into the patch, that's clearly what you're doing in a subpatch, but I don't get why? Chuck On 1/9/12, Alexandre Torres Porres por...@gmail.com wrote: Hi Folks, working with these phase vocoder stuff, I thought I'd try and do a simple shifter/harmonizer with it once and for all. The phase vocoder shifter I found in pdmtl doesn't work as a harmonizer, and the latency was pretty high and not constant, so I did this. It's all as a Vanila abstraction! I have 2 short buffers (arrays) and do crossfade between them, I got some phase issues trying out and building it, but they now seem reasonably fine. I just did this, so I should work more on it to make it more stable and robust. I'm sure there are some bugs around, and it's still very dirty and needs code cleaning. Maybe I should try and implement it with delay lines as in pdmtl, hmmm, I guess it'd be better, right? Hmm... Later on when I have the time... Anyway, this goes back to the Pd Shifting thread I started here a while ago. I really like the quality of the phase vocoder. Somehow I don't get interested so much on other techniques and such. Yes, I assume there are some advantages out there, so what exactly would I be missing? Well, Check this thing I did out, see what you think, let's talk some more about pitch shifting get it here: http://sites.google.com/site/porres/pvoc-shifter.zip I wish to officially release it along with some other tools I'm building for my PhD, soon to be over... by the way, I see this object is finally available http://www.katjaas.nl/pitchshift/pitchshift.html need to try it out. cheers alex ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] ring buffer with an array
On 1/8/12, Alexandre Torres Porres por...@gmail.com wrote: Hi folks, I'm trying to implement a ring buffer with a table for a sampler patch based on an array. But I'm having the hardest time cause it always clicks when I start writing back on the beginning of the array. I made this simple test attached below using metro. But I'm figuring the flaw is because is not trivial at all to keep control data in sync with audio blocks any hints or ideas? I think you might be better able to keep the data in sync with a vline~/metro/tabread4~ construction, because it preserves the timing information in the messages. Instead of vline~/metro, you could also use phasor~ which makes the looping implicit. To work around clicks, crossfading is what I hear about the most on list. I'm not sure how it's implemented. When I think about coding in C, I always want to have N contiguous samples to avoid having to check against the end of the array. To do that, you make the buffer 2*N-1 in length. Then, on each write, you write to two locations (0,N), (1,N+1), (2,N+2)... That ensures there is always N samples in a row to read from, and you just move the read pointer by 1 each time you get a vector of N samples long. (my personal method...nothing more). ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [tabwrite4~], is it possible at all?
On 1/8/12, Miller Puckette m...@ucsd.edu wrote: Hi all -- Peter Brinkmann and Michael Goggins did some related work recently: http://nettoyeur.noisepages.com/2010/10/doppler-effects-without-equations/ but back in the dark ages Barry Vercoe made a Music 11 ugen called 'pipadv' that added a signal into a delay line assuming the write location was continuous and could be stably differentiated (so that for each point of the delay line you could associate a fractional pposition in the incoming signal. He then interpolated to get fractional-indexed values of the incoming signal to correspond with successive sample locations in the delay line, turning the problem around backward.) I've thought about this for a few hours but so far my only conclusion is that it's very interesting :) Miller The problems that I see are with orthogonality and reconstruction. A sample really just represents a sync that's centered on a point in time (in the easy case). Integer numbers of samples are orthogonal... but the fractionally-centered sample is not orthogonal to samples at all the integer indexes. Then, the reconstruction problem follows from it. When you want to read a value from a table, does it exactly retrieve the value that was recorded there? It seems like the interpolator needs to be modified continuously with the spacing of adjacent samples. All I know right now is, I can't spend my whole vacation on a math problem, even if it's good :) Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] no pd?? WTF ????
2012/1/6 Jonathan Wilkes jancs...@yahoo.com: - Original Message - From: alex a...@lurk.org To: András Murányi muran...@gmail.com Cc: Pd - list pd-list@iem.at Sent: Tuesday, January 3, 2012 7:12 PM Subject: Re: [PD] no pd?? WTF Ha, I got a different reply earlier: We decied to avoid the use of Pd and SuperCollider for internal and technical resons and unfortunately we cannot change our policy. So please, if you are interested in the call, please send a more pertinent question. I wonder what software would be good for quickly prototyping a solution to whatever technical problem prevents the use of Pd and Supercollider in a realtime DSP performance... lack of tech support phone numbers? Maybe they think they won't be able to set up the patches for their review process and so opted only to accept patches for performances they think they are confidently able to. Otherwise, the technical issues are between their ears--or in IT support speak, between the chair and keyboard (BTCK). ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] no pd?? WTF ????
On Fri, Jan 6, 2012 at 5:02 PM, Patrice Colet colet.patr...@free.fr wrote: De: alex a...@lurk.org Envoyé: Mercredi 4 Janvier 2012 01:12:14 Ha, I got a different reply earlier: We decied to avoid the use of Pd and SuperCollider for internal and technical resons and unfortunately we cannot change our policy. So please, if you are interested in the call, please send a more pertinent question. So apparently there are reasons but they forgot what they were? They spent all the budget to get softwares, now there isn't enough to give out free beer... ^^ Lousy excuse. Please submit patches for music for suckers, and I will gladly provide all the free beer I'm able to make XD I'm only serious about the beer. My next brew will be an ESB! ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] no pd??
On 1/4/12, Julian Brooks jbee...@gmail.com wrote: From Sanlist (sonic arts network) alex a...@slab.org 18:42 (15 hours ago) to *coloursofnoise*, Sanlist So you want genuine, respectable composers to produce new pieces for a specific situation, for an open competition with apparently no extrinsic reward, using expensive software (with excellent free alternatives explicitly excluded with no explanation)? Great satire! I'm usually in favor of sarcasm in order to cope with the world. You don't like it, fine! Make your own call for works: Music for suckers Because suckers pay for software or aren't talented enough to write what they want to use. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] noise floor: median in audio signals, for peak extraction
On Wed, Dec 21, 2011 at 11:15 AM, Charles Henry czhe...@gmail.com wrote: 1. How to handle the endpoints of the signal blocks? I've thought this over, and concluded that it really doesn't matter, for the case of the magnitude of power spectral density. Any high or low values of the spectrum at DC and at the Nyquist frequency will be rejected, because of the symmetry of the Fourier transform about these points. You'd probably treat the blocks as circular buffers for the purpose of median filtering your spectrum. It stays a little neater that way anyhow, with no samples held over from the previous block. 2. The statistical properties of median and weighted median filters are tough to describe analytically. If you've got to justify your choice of this one component... it may take some research. Estimating threshold values with mean/variance calculations are much easier analytically. I've also thought this over, and the median filter is the black magic of non-linear filtering. It rejects some bad points in the data no matter how bad they are which makes it robust and really practical, but quantifying the effects is some kind of arcane secret. Another way to look at it is what it does for your spectrum's continuity--it might be good to rid of some of the variability in the noise floor estimation, just making the spectrum smoother, which the median filter certainly does. I wonder if there could be something analogous for smoothing out phase in a spectrum? On Tue, Dec 20, 2011 at 5:29 PM, Alexandre Torres Porres por...@gmail.com wrote: Hi there, this is a technique for calculating the noise floor of a spectrum, and extracting the peaks. It'd be used pretty much like I04.Noie Gate Miller's example, that has the mask table with a constant multiplier. We'd have instead this noise-floor block of audio, also multiplied by a constant. To get the noise floor, we take the magnitude (or power) spectrum and get the median of small bits of it, like every 32 samples. So the values of every 32 samples would be the median of that section... this is where I got this from, check page 4 and 5 http://homepages.cae.wisc.edu/~sethares/software/SpectralTools.pdf this would be kinda like using the [median] or [median_n] objects, but over audio blocks and not number lists. Since there's the need of calculating this in and using the result back in the same block round into the audio chain, I can't put the spectrum into a table, and then calculate the median over bits of it. But then, how to do it? Should I be able to pull this out only if I write a median~ or [noise_floor~] external? Or somehow there's another way to do this with some existing external, or a similar technique, or even some audio math trick using [fexpr~] or something? This has to do with the other post I did about a project that attempts to isolate notes into a chord in a spectrum, something like melodyne is does. thanks Alex ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] noise floor: median in audio signals, for peak extraction
Hi Alex I've been reading all your posts lately. Very interesting--I will look forward to your new phase vocorder stuff, when I get free time and enough rest. Have you considered weighted median filtering? It's a non-linear filter structure that takes non-negative integers as arguments. At each sample, you create a list of samples, the adjacent values taken according to the filter arguments. Then, count through the list finding the lowest value each time, and add up the filter weights until you cross the median. The purpose of weighting is to allow some more flexibility to shape the spectrum and prefer values that are closer to the original signal. It still has the same ability to reject outliers if you select good weights. I had made a badly written external, and a cpu-hungry abstraction (with fexpr~ and a fixed number of weights) a while back. I'd be happy to dig up the code and algorithm after work today. There's just two things that sound difficult in this application: 1. How to handle the endpoints of the signal blocks? 2. The statistical properties of median and weighted median filters are tough to describe analytically. If you've got to justify your choice of this one component... it may take some research. Estimating threshold values with mean/variance calculations are much easier analytically. Chuck On Tue, Dec 20, 2011 at 5:29 PM, Alexandre Torres Porres por...@gmail.com wrote: Hi there, this is a technique for calculating the noise floor of a spectrum, and extracting the peaks. It'd be used pretty much like I04.Noie Gate Miller's example, that has the mask table with a constant multiplier. We'd have instead this noise-floor block of audio, also multiplied by a constant. To get the noise floor, we take the magnitude (or power) spectrum and get the median of small bits of it, like every 32 samples. So the values of every 32 samples would be the median of that section... this is where I got this from, check page 4 and 5 http://homepages.cae.wisc.edu/~sethares/software/SpectralTools.pdf this would be kinda like using the [median] or [median_n] objects, but over audio blocks and not number lists. Since there's the need of calculating this in and using the result back in the same block round into the audio chain, I can't put the spectrum into a table, and then calculate the median over bits of it. But then, how to do it? Should I be able to pull this out only if I write a median~ or [noise_floor~] external? Or somehow there's another way to do this with some existing external, or a similar technique, or even some audio math trick using [fexpr~] or something? This has to do with the other post I did about a project that attempts to isolate notes into a chord in a spectrum, something like melodyne is does. thanks Alex ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] noise floor: median in audio signals, for peak extraction
On Wed, Dec 21, 2011 at 11:15 AM, Charles Henry czhe...@gmail.com wrote: I had made a badly written external, and a cpu-hungry abstraction (with fexpr~ and a fixed number of weights) a while back. I'd be happy to dig up the code and algorithm after work today. Here's the abstraction: wmed5~.pd Below is also a pasted test patch. How it works: it computes all branches! Just for fun, because it's not something that scales well with more taps, but works. wmed5~.pd #N canvas 0 0 765 642 10; #X obj 150 132 t b b; #X obj 189 132 loadbang; #X obj 452 188 expr $f1+$f2+$f3+$f4+$f5; #X obj 455 225 expr int(($f1+1)/2); #X text 591 227 median index; #X obj 11 33 inlet~; #X obj 62 230 fexpr~ $f3*($x1$x1[-1]) + $f4*($x1$x1[-2]) + $f5*($x1$x1[-3]) + $f6*($x1$x1[-4]) \; $f2*($x1=$x1[-1]) + $f4*($x1[-1]$x1[-2]) + $f5*($x1[-1]$x1[-3]) + $f6*($x1[-1]$x1[-4]) \; $f2*($x1=$x1[-2]) + $f3*($x1[-1]=$x1[-2]) + $f5*($x1[-2]$x1[-3]) + $f6*($x1[-2]$x1[-4]) \; $f2*($x1=$x1[-3]) + $f3*($x1[-1]=$x1[-3]) + $f4*($x1[-2]=$x1[-3]) + $f6*($x1[-3]$x1[-4]) \; $f2*($x1=$x1[-4]) + $f3*($x1[-1]=$x1[-4]) + $f4*($x1[-2]=$x1[-4]) + $f5*($x1[-3]=$x1[-4]); #X obj 19 449 fexpr~ $x1*(($x2+$f3) = $f4)*($x2 $f4); #X obj 62 475 fexpr~ $x1[-1]*(($x2+$f3) = $f4)*($x2 $f4); #X obj 102 501 fexpr~ $x1[-2]*(($x2+$f3) = $f4)*($x2 $f4); #X obj 143 527 fexpr~ $x1[-3]*(($x2+$f3) = $f4)*($x2 $f4); #X obj 179 552 fexpr~ $x1[-4]*(($x2+$f3) = $f4)*($x2 $f4); #X obj 27 594 expr~ $v1+$v2+$v3+$v4+$v5; #X obj 27 625 outlet~; #X obj 78 31 inlet; #X obj 78 54 unpack f f f f f; #X obj 85 163 \$2; #X obj 125 165 \$3; #X obj 152 165 \$4; #X obj 181 165 \$5; #X obj 210 165 \$6; #X text 253 44 1-D weighted median filter using expr \, expr~ \, fexpr~ ; #X text 351 88 uses 5 integer arguments \, representing the weights of choosing a median from a weighted set of samples as x[0] \, x[-1] \, x[-2] \, x[-3] \, x[-4]; #X text 348 129 the weighted set includes a number of duplications of x \, equal to the argument; #X connect 0 0 16 0; #X connect 0 1 17 0; #X connect 0 1 18 0; #X connect 0 1 19 0; #X connect 0 1 20 0; #X connect 1 0 0 0; #X connect 2 0 3 0; #X connect 3 0 7 3; #X connect 3 0 8 3; #X connect 3 0 9 3; #X connect 3 0 10 3; #X connect 3 0 11 3; #X connect 5 0 6 0; #X connect 5 0 7 0; #X connect 5 0 8 0; #X connect 5 0 9 0; #X connect 5 0 10 0; #X connect 5 0 11 0; #X connect 6 0 7 1; #X connect 6 1 8 1; #X connect 6 2 9 1; #X connect 6 3 10 1; #X connect 6 4 11 1; #X connect 7 0 12 0; #X connect 8 0 12 1; #X connect 9 0 12 2; #X connect 10 0 12 3; #X connect 11 0 12 4; #X connect 12 0 13 0; #X connect 14 0 15 0; #X connect 15 0 16 0; #X connect 15 1 17 0; #X connect 15 2 18 0; #X connect 15 3 19 0; #X connect 15 4 20 0; #X connect 16 0 2 0; #X connect 16 0 6 1; #X connect 16 0 7 2; #X connect 17 0 2 1; #X connect 17 0 6 2; #X connect 17 0 8 2; #X connect 18 0 2 2; #X connect 18 0 6 3; #X connect 18 0 9 2; #X connect 19 0 2 3; #X connect 19 0 6 4; #X connect 19 0 10 2; #X connect 20 0 2 4; #X connect 20 0 6 5; #X connect 20 0 11 2; wmed5-test.pd #N canvas 0 0 724 559 10; #X obj 175 73 noise~; #X obj 44 180 +~; #N canvas 0 0 450 300 (subpatch) 0; #X array array1 64 float 1; #A 0 -0.989722 -0.998962 -0.998581 -0.988581 -0.969059 -0.940204 -0.902292 -0.85569 -0.800846 -0.738288 -0.668619 -0.59251 -0.510694 -0.423959 -0.33314 -0.239112 -0.142782 -0.0450761 0.0530638 0.150693 0.24687 0.34067 0.431188 0.517553 0.598933 0.674544 0.743658 0.805609 0.859801 0.905711 0.942897 0.971002 0.989753 0.998972 0.998569 0.988549 0.969007 0.940132 0.902201 0.855581 0.80072 0.738147 0.668464 0.592342 0.510515 0.42377 0.332944 0.238911 0.142576 0.0448686 -0.0532713 -0.150898 -0.247071 -0.340865 -0.431375 -0.517731 -0.599099 -0.674697 -0.743797 -0.805732 -0.859907 -0.905799 -0.942966 -0.971051; #X coords 0 1 63 -1 200 140 1; #X restore 364 56 graph; #N canvas 0 0 450 300 (subpatch) 0; #X array array2 64 float 1; #A 0 -0.970948 -0.989722 -0.998581 -0.998581 -0.988581 -0.969059 -0.940204 -0.902292 -0.85569 -0.800846 -0.738288 -0.668619 -0.59251 -0.510694 -0.423959 -0.33314 -0.239112 -0.142782 -0.0450761 0.0530638 0.150693 0.24687 0.34067 0.431188 0.517553 0.598933 0.674544 0.743658 0.805609 0.859801 0.905711 0.942897 0.971002 0.989753 0.998569 0.998569 0.988549 0.969007 0.940132 0.902201 0.855581 0.80072 0.738147 0.668464 0.592342 0.510515 0.42377 0.332944 0.238911 0.142576 0.0448686 -0.0532713 -0.150898 -0.247071 -0.340865 -0.431375 -0.517731 -0.599099 -0.674697 -0.743797 -0.805732 -0.859907 -0.905799 -0.942966; #X coords 0 1 63 -1 200 140 1; #X restore 366 218 graph; #X obj 135 214 tabwrite~ array1; #X obj 196 273 tabwrite~ array2; #X obj 224 147 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X floatatom 46 30 5 0 0 0 - - -; #X obj 43 103 osc~ 689.11; #X obj 173 174 metro 166; #X obj 169 124 expr~ $v1*(abs($v1) 0.99); #X obj 43 244 wmed5~ 2 3 4 3 2; #X obj 255 151 loadbang; #X connect 0 0 10 0; #X connect 1 0 4 0; #X connect 1 0 11 0; #X connect 6 0 9 0; #X connect
Re: [PD] Findings regarding performance
On Thu, Dec 1, 2011 at 4:02 PM, Mathieu Bouchard ma...@artengine.ca wrote: Le 2011-12-01 à 10:39:00, Charles Henry a écrit : When using [*~ 0], the inlet and outlet are borrowed. The scalar multiply operation is performed in place and no data transfer occurs. What do you call « data transfer » ? multiplying in place by a constant involves as many reads and writes as doing a (single) copy. This at least needs to stream data from the highest-speed RAM to the CPU and back. It's less noticeable than the copy time of very large buffers (e.g. [table] or [pix_separator]) because those really need big RAM (which is slower), but in any case, calling scalartimes_perf8 (or whatever) means an implicit copy in some kind of way, just like nearly anything else does. You make a good point--I wasn't counting the data transfer that occurs between registers or the way that the compiler breaks out the steps involved, and of which I am mostly ignorant. The part I was differentiating from: there's significant data transfer operations that has to do with switch~. The inlet~ inside a subpatch and outlet on the parent from canvases using switch~ have signals that aren't borrowed. This means there's another data transfer (a copy) between signals on the parent and the sub-canvas. So, using switch~ as in Roman's example involves 2 copy operations on the signals. Is that what we're seeing? I'm not sure how to count the operations--and how to compare the scalartimes perform routines vs inlet_doprolog/inlet_dsp and outlet_dsp/outlet_doepilog (which I'm contending is the difference we're seeing in the performance numbers). Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Findings regarding performance
On Thu, Dec 1, 2011 at 10:09 AM, Mathieu Bouchard ma...@artengine.ca wrote: Le 2011-12-01 à 15:24:00, Roman Haefeli a écrit : reason, let's just use an invented arbitrary unit for expressing the CPU time (ct) consumed by an object. It turned out that [gate~] uses 0.52ct when it is on and 0.4ct when it is off. But how much does [*~ ] use? No matter whether turned on or off, [*~ ] uses a stable 0.39ct. Even though [switch~] does not use tight conditionals, instead checking only once per block, it still takes some time copying stuff and switching contexts. I suppose that this is the kind of thing that Pd could do more efficiently than it does now, if someone is brave enough to edit d_ugen.c... and knows how to do it. For further explanation: In an abstraction where the block sizes match and there's no switch~, signals are borrowed from the parent context. When switch~ is used, inlet~ and outlet~ signals are not borrowed, even when block sizes match. block_prolog handles the switch~ behavior, returning a pointer to the end of the block epilog when switched off. This comes before data is copied into buffers in inlet_doprolog. On the outlet~, there is an un-borrowed signal allocated, and I think it's also assigned to be zero when switched off. This would be the only major point where an assignment operation occurs. When using [*~ 0], the inlet and outlet are borrowed. The scalar multiply operation is performed in place and no data transfer occurs. It's all relatively fresh in my mind, but I need a good week's vacation to re-focus and study d_ugen.c some more. I've done enough to understand what's in there, but I've rarely asked the question how to make it work better. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Findings regarding performance
On Thu, Dec 1, 2011 at 11:34 AM, Roman Haefeli reduz...@gmail.com wrote: Hi João On Thu, 2011-12-01 at 16:04 +0100, João Pais wrote: would it make sense to do a general test patch, where these and more objects could be tested empirically? or, put your patches somewhere, so that other people can work on them, and have a test-repository? I attached my test setup. It's very naive and it doesn't serve much more than to compare different classes on a specific setup (Hardware/CPU, specific Pd version, probably it's even specific to certain compile time flags). main.pd loads many (actually 4096) instances of [gate~]. I simply edited an instance of [gate~] and compared what CPU meter displayed while main.pd was running. On different computers you probably need to add more or remove instances of [gate1024~] in order to get meaningful results. Actually, I think you're looking at scalibility--to get a better measurement, you'd need to compare across several numbers on a single machine, e.g. 1024, 2048, 4096, etc... and do a linear regression to separate out the fixed costs and marginal costs. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Variable number of objects?
I'd really hope to hear from Krzystof on this topic. His [more]/[less] objects presented at the PdCon were really interesting for creating large numbers of voices. The difference in approach embeds the new instances (without having a graphical representation) into the same abstraction and sums their outputs on the outlets provided. It behaves a lot like MPI programming where each program instance is an exact copy, differentiated only by index. Messages piped in can be sent to specific embedded instances through [less] if I remember correctly. Increasing or decreasing the number of voices sounds like a dynamic patching application. I don't know much about it, myself. Chuck On Wed, Sep 28, 2011 at 10:55 AM, Ludwig Maes ludwig.m...@gmail.com wrote: Im not sure what the best way is to instantiate variable number of objects, for example consider polysynth.pd: Theres a fixed number of manually placed voices, suppose I want to have the top patch to contain a counter through which one may increase or decrease the number of voices, how would I go about that (without manually placing a load of voices and disabling them...)? Whats the vanilla way to do this? Whats the pd-extended way to do this? ... ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Variable number of objects?
On Wed, Sep 28, 2011 at 1:13 PM, Ludwig Maes ludwig.m...@gmail.com wrote: Where do I learn more about the more/less objects? Here's the abstract: http://www.uni-weimar.de/medien/wiki/PDCON:Conference/Self-replication:_how_to_do_more_using_less The full conference proceedings are due to be published online any time soon. On 28 September 2011 20:02, Charles Henry czhe...@gmail.com wrote: I'd really hope to hear from Krzystof on this topic. His [more]/[less] objects presented at the PdCon were really interesting for creating large numbers of voices. The difference in approach embeds the new instances (without having a graphical representation) into the same abstraction and sums their outputs on the outlets provided. It behaves a lot like MPI programming where each program instance is an exact copy, differentiated only by index. Messages piped in can be sent to specific embedded instances through [less] if I remember correctly. Increasing or decreasing the number of voices sounds like a dynamic patching application. I don't know much about it, myself. Chuck On Wed, Sep 28, 2011 at 10:55 AM, Ludwig Maes ludwig.m...@gmail.com wrote: Im not sure what the best way is to instantiate variable number of objects, for example consider polysynth.pd: Theres a fixed number of manually placed voices, suppose I want to have the top patch to contain a counter through which one may increase or decrease the number of voices, how would I go about that (without manually placing a load of voices and disabling them...)? Whats the vanilla way to do this? Whats the pd-extended way to do this? ... ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [PD-announce] AntiDataMining project in ZKM (Karlsruhe) using Pd and Gem
A very nice project. What do you make of the robot and tts voices in the video? Chuck On Sat, Sep 24, 2011 at 9:01 AM, Jack j...@rybn.org wrote: See the video of a trade bot in the panoramic room ;) http://www02.zkm.de/videocast/index.php?option=com_contentview=articleid=446:rybncatid=115 http://www02.zkm.de/videocast/index.php?option=com_contentview=articleid=446:rybncatid=115 ++ Jack ___ Pd-announce mailing list pd-annou...@iem.at http://lists.puredata.info/listinfo/pd-announce ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [PD-dev] removing path and libs from Pd-extended preferences GUI
Sorry-I'm a bit confused as to the difference between libs and paths, at the moment. Here's a situation where I like to have the path dialog: I download an archive of abstractions (like RJDJ), and I'd like to be able to put them anywhere, so if there's a couple different versions, I can just tell them apart from folders. With the path dialog, I can just right away see what set of abstractions are on the path, change it, apply, and get to work. How would I accomplish the same thing without it? Chuck On Tue, Sep 20, 2011 at 10:58 AM, Hans-Christoph Steiner h...@at.or.at wrote: Please give an example of how this would make this more confusing. My experience is the exact opposite and it is exactly this problem that leads me to want to remove those preferences. The are a big source of confusion and problems, and most Pd-extended users do not use them. I am not proposing removing them from Pd-vanilla, only Pd-extended. I think globally loading libraries is a broken idea. If you remember in the days before Pd-extended, patches that relied on external libraries were mostly unsharable. It could take a long time to track down all the dependencies, etc. and you couldn't be sure which [wrap], [split], [prepend], [scale], etc. the patch needed. Having the configuration in the patch means at worst you know what you need to get it running. At this point I've taught Pd to 10 year olds, high school kids, college kids, masters students, and all sorts of people in workshops, college courses, and patching circles. I also answer a lot of questions on email, on forums, and on IRC. It is from this experience that I am coming from on this issue. I have no desire to control people, I do have a strong desire to make Pd-extended very user friendly to newbies and a excellent editing experience for advanced users. And those that like the Pd-vanilla way are welcome to use it, Pd-extended will remain compatible with patches from Pd-vanilla as long as I work on it. Of course, it is not possible to maintain 100% compatibility when going from Pd-extended to Pd-vanilla since extended includes many more objects. There is also pd-l2ork, desiredata, etc. for those who want different approaches. .hc On Tue, 2011-09-20 at 13:02 +0100, Andy Farnell wrote: Whenever I see the words this would _make_ people... alarm bells start ringing for me. Yes, the proposed behaviour is perfectly correct, logical, and consistent. And utterly the wrong thing to do IMHO. It would frighten off newcomers and disorientate students. It's why we create the cushion of fairy stories for kids, to soften the harsh realities of the _actual_ world. Later on you learn that there isn't a magic library fairy that loads everything, but it helps you cope with the first steps. If anybody made PD that broken out of the box it would require lots of work to fix in order to make it fit to teach with again. On 2011-09-19 19:32, Hans-Christoph Steiner wrote: Hey Miller, I actually think this would make switching between vanilla and extended easier because it would make people use [import] or [declare] to load libs, then when using vanilla, you'll know which libraries the patch needs. Can you think of examples where it would make things more difficult? ___ Pd-dev mailing list pd-...@iem.at http://lists.puredata.info/listinfo/pd-dev ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [PD-dev] removing path and libs from Pd-extended preferences GUI
I don't actually *like* those solutions for the scenario I just described. I think the path dialog has a distinct purpose of its own that is not shared by those options. (These aren't always advantages--just differences) --It's persistent across sessions. --I can use my own organization of abstractions in some far flung corner of my user directory. --It's always the full path. For some types of work, the path dialog really makes sense to me. I work on it sporadically, I crash Pd frequently, and when I start it up, having those settings saved in the config will save me some time. [declare] and [import] are really for sharing patches with other people--but maybe I'm not sharing anything and I'm just cooking up some buggy externals. Then, I want to be able to work quickly--*not* correctly. Chuck On Tue, Sep 20, 2011 at 1:44 PM, Hans-Christoph Steiner h...@at.or.at wrote: For this situation, I think there is no need for custom paths, you can use the built-in default paths, which are the default in pd-vanilla, pd-extended, and pd-l2ork. For the rjlib, merely drop the 'rj' folder into the standard default install location: http://puredata.info/docs/faq/how-do-i-install-externals-and-help-files Then use the object by doing [rj/s_fm4] or whatever. Or you could you: [import rj] [s_fm4] or: [declare -lib rj] [s_fm4] The only use case for setting your own path that I know is like [declare -path lib/] where you set a folder within your project to load libs from. That is accomplished much better with [declare -path] than setting a global pref because it means the patch has the whole config included with it. .hc On Tue, 2011-09-20 at 13:30 -0500, Charles Henry wrote: Sorry-I'm a bit confused as to the difference between libs and paths, at the moment. Here's a situation where I like to have the path dialog: I download an archive of abstractions (like RJDJ), and I'd like to be able to put them anywhere, so if there's a couple different versions, I can just tell them apart from folders. With the path dialog, I can just right away see what set of abstractions are on the path, change it, apply, and get to work. How would I accomplish the same thing without it? Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Multiplying signal by complex number to create and see phase shift
On Sun, Sep 11, 2011 at 7:33 PM, Rick T ratull...@gmail.com wrote: Greetings All I plan on adding a phase shift to a signal/a wave file I import which is easy enough mathematically example: if the signal is x=sin(2*pi*1*t) to do a phase shift I would just multiply x*e(-i*pi) which would phase shift the signal by 90 degrees. But how does one multiple signals by complex numbers in PD like -i? note: there will be a several different phase shifts so a simple hibert transform won't work in this instance I guess you already know what this is about then--as Patrice said, you'll have to use fft~ on windows of your signal to accomplish different frequency-specific phase shifts. The Hilbert transform accomplishes one type of complex signal decomposition that applies to phase shifts by complex number multiple: the complex signal c(t)=x(t) + i * Hx(t) can be written as magnitude(t) and phase(t) c(t)=magnitude(t) * e^( i * phase(t)) Then, applying multiple of e^( i * (phase shift) ) just adds the phase shift into this decomposition of the signal. As you said, it applies to not just one frequency, and it also doesn't just shift every phase by the same amount. Now, notice the hilbert~.pd abstraction---This is a pair of all-pass filters that shifts the signal by approximately 90 degrees at each frequency. You'll have to open it up and analyze it yourself to see if it really does what you want--but it's been shown to be a very practical and reliable way to accomplish phase shifts. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] SSE/MMX tips?
On Thu, Sep 8, 2011 at 1:02 AM, Mathieu Bouchard ma...@artengine.ca wrote: On Wed, 7 Sep 2011, Charles Henry wrote: On Wed, Sep 7, 2011 at 7:59 PM, Mathieu Bouchard ma...@artengine.ca wrote: On Wed, 7 Sep 2011, Mathieu Bouchard wrote: On Wed, 7 Sep 2011, Bill Gribble wrote: So far iteration on plain floats seems to be the best I can come up with, but HADDPS is tantalizingly close to what I want to do. Any hints? Sorry, what's HADDPS? http://www.rz.uni-karlsruhe.de/rz/docs/VTune/reference/HADDPS--Packed_Single-FP_Horizontal_Add.htm This is really interesting. Your compiler probably knows how to optimize this kind of information. How can you tell that ? I bet it doesn't... Yeah, I thought it over. I was wrong. I was also wrong about SSE4.2--AVX is the new instruction set with 256-bit wide operations. What could it be doing about a scan like this, anyway ? fft-multiply by 2*pi*i*f-ifft and fall over... I dunno, but I'm working on it a bit. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] SSE/MMX tips?
On Wed, Sep 7, 2011 at 7:59 PM, Mathieu Bouchard ma...@artengine.ca wrote: On Wed, 7 Sep 2011, Mathieu Bouchard wrote: On Wed, 7 Sep 2011, Bill Gribble wrote: So far iteration on plain floats seems to be the best I can come up with, but HADDPS is tantalizingly close to what I want to do. Any hints? Sorry, what's HADDPS? Once I thought that with some commutativity you could speed things up like this : (f0+f1+f2+f3)+(f4+f5+f6+f7)+... can be rearranged as : (f0+f4+...)+(f1+f5+...)+(f2+f6+...)+(f3+f7+...) But what I said does not apply to your case, because you want a scan, whether I didn't really read and assumed a fold. I don't know how to optimise a scan. This is really interesting. Your compiler probably knows how to optimize this kind of information. SSE3 is really about memory allocation. The instructions pack floats into a bigger section of memory. In SSE3, this means 4 floats in a 128-bit single operation. SSE 4.2 has 256-bit wide (8 flops per clock)--the latest increase in single-threaded computing power is in favor of single-precision float (lucky for Pd-ers) ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Headphones question on pd list
On Wed, Aug 24, 2011 at 5:40 PM, Jonathan Wilkes jancs...@yahoo.com wrote: Without knowing anything in advance about the speakers being used, is there a way to construct some kind of [aural-faxbomb~] that outputs in the -1 to 1 range which could be used generally to at least get in the ballpark of what you want the maximum level of perceived loudness to be when wearing headphones? You should be able to pick a suitable frequency band. A reasonable expectation is that headphones can produce sounds between 200Hz and 20kHz. Loudness seems to fall off pretty quickly above 10kHZ, so there's no point in including much of the higher frequencies, if avoidable. Maybe another way to ask: can you construct an example patch with output that is louder than [noise~]--[*~ max_float_value]--[clip~ -1 1]--[dac~]? The spectrum distributes energy to frequencies that will not be reproduced or perceived loudly (which should be the case for the above, having a very flat spectrum). If the sound gets focused into a smaller band, which is more relevant for speakers/hearing, the loudness will be greater. I think one place to start looking is a non-bandlimited square wave function. It's known that this kind of function has odd-numbered partials that fall off according to 1/n, or in other words, the power spectral density falls off at -6dB/octave. The only problem with this function is that again the sound could be more focused into a narrower band. One thing that comes to mind is multiplying square waves together (since this keeps the values at +1/-1), but that would only distribute more energy to higher frequencies. What about PWM? I think we are designing the worst possible sound here. Sound check. Play the horrible noise, so we know nothing that comes after that can sound as horrible. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Headphones question on pd list
On Wed, Aug 24, 2011 at 2:15 PM, Mathieu Bouchard ma...@artengine.cawrote: On Wed, 24 Aug 2011, Jonathan Wilkes wrote (outside of pd-list): If I do this, can't I be fairly certain that I won't get a sound with greater perceived volume than the clipped [noise~]--[*~ 99] that I started with? [...] I'm just talking about things that could potentially cause ear damage. a harsh-clipped [noise~]-[*~ n] is probably close to the highest loudness you can get, even for not-so-high values of n. However, if you want to find the loudest, you'd have to start from the dBA loudness curve, and try to solve an equation involving a bunch of samples that can range from -1 to +1... at 44100 Hz over 1 second, that'd be 44100 variables, for example, though a lot less variables could be enough to get an idea. It doesn't look like an easy problem to me, but I haven't tried. And then, the loudness curve, the pain curve and the damage curve are three different things. I don't even know whether the latter two have been computed. My only real experience with the loudness curve(s) is from writing Alexandre T Porres' externals (for what he presented in Weimar). I haven't studied the topic much more than that. Maybe the equal loudness curves aren't as important as the peaks in the loudspeaker transfer function. Gotta add that to the analysis, too, but you'll never know what those are like unless you actually have them and measure it. I think the math makes sense: if a sequence of samples has only -1,+1 as values, then the intensity must be maximized--only the frequency spectrum has to be known. We have by isometric property of the Fourier tranform that the total energy in the frequency domain matches the energy in the time domain. So, it's only a matter of distribution. So, if we made a simple alternating sequence +1,-1,... then only the Nyquist frequency has any energy, but because most speakers (and ears) will weakly respond at this frequency, it's not very loud. Same goes for a repeating sequence, +1,+1,... or -1,-1,... for which no response is expected. The next thing to notice is that you can't produce a single frequency with some signal that is only distributed as -1 or +1 on each sample. So, it's no good just finding the peak of the loudspeaker + loudness curves either, we need big bands of frequencies that respond loudly. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] RK4 for Pd
Runge-Kutta is for integrating functions that you know a formula for. So, at least in terms of signals in Pd, there's nothing better than the simple recursion formula (x is input, y is output): y[n] = y[n-1] + x[n] Now, you may also want to scale by the sample rate y=integral(0 to t, x*dt) Then, it's just y[n] = y[n-1] + x[n]/44100 (or whatever sample rate) In z-transform terms we get: Y(z) * (1 - z^-1) = X(z) or Y(z) = X(z) / (1 - z^-1) which tells us we have a single real pole at z=1 So, the object I think you want is just [rpole~ 1] And you can apply the scaling by the samplerate as needed. for messages, I don't know. To integrate them over time, you would have each value multiplied by the time in between messages. Chuck On Wed, Aug 17, 2011 at 4:10 PM, Jeppi Jeppi jepp...@hotmail.com wrote: Hi all! I would like to know whether there is any object or abstraction available to perform numerical integration (at control or audio rate, whatever) for Pd. Any examples around there? Thanks in advance! Josep M ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] RK4 for Pd
On Wed, Aug 17, 2011 at 4:48 PM, Charles Henry czhe...@gmail.com wrote: Runge-Kutta is for integrating functions that you know a formula for. Afterthought--suppose you do have a formula that has some nasty integral that you can only compute numerically. Put it into expr--then we could implement the RK4 method with messages and some patching. Or maybe make some implementation with expr~, although it could be a bit more difficult. I guess it just depends on the application you want to create. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [PD-announce] Pd Convention - Data structures workshop: Taking your requests
Hi João I'm mainly interested in using Pd for scientific and engineering research. I have a mixed level of experience--I'm deep into the DSP routines, but I have no clue how data structures work. About the only application I can think of right now is a data logger--recording info about a particular trial/experiment and its results. I'd like to learn easy or more compact ways to accomplish things with data structures. I will look forward to your workshop! Thanks much! Chuck On Mon, Aug 1, 2011 at 5:57 AM, João Pais jmmmp...@googlemail.com wrote: Hello everyone, in the first 2 days of the Pd Convention I will be giving a workshop about data structures - http://www.uni-weimar.de/medien/wiki/PDCON:Workshops/Data_Structures. My plan is to talk about the theory in the first session, and practical implementations + patch analysis in the second session. I have already a group of example patches ligned up, but I wanted to see if anyone has their own desires. So, if you are interested in coming to the data structures workshop, and already have a goal in mind on where/how to use them, you can send me your requests. If time is available, I might be able to do some work for you, which you can afterwards develop further. If you want to send me a patch, try to follow the following steps: - describe to me what the patch does, possibly leaving some comments inside near some important parts - describe what you wish to do And for everyone else: I would also like to know who will come to my workshop. In case you have time, just send me a small message privately with: - your name - your interests - your experience level Hope to see many of you next week, João Pais -- Friedenstr. 58 10249 Berlin (Deutschland) Tel +49 30 42020091 | Mob +49 162 6843570 Studio +49 30 69509190 jmmmp...@googlemail.com | skype: jmmmpjmmmp ___ Pd-announce mailing list pd-annou...@iem.at http://lists.puredata.info/listinfo/pd-announce ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] [OT] technological parody was: Pd performance at TED
eheh, I'm glad the concept of technological parody is giving so much to discuss :) We should put up a twitter account with the #technologicalparody (kidding) M I caught on to it, just because I liked the phrase so much. But there are some real examples--Rube-Goldberg machines come right to mind, but you never see them in real life as anything other than comedy. There may be more real-life examples from hacker/builder communities--like, say, a robotic fridge designed to fire a can of beer into the air. Although it may be an awesome novelty, it's not actually practical. Hence, it's nearly a mockery of robotics to build it. No offense to the creators of beer can canons--but you knew it was going to be a joke before you started. So, there's a clear comparison between Pd and Guitar Hero that illustrates the difference. With Guitar Hero on your favorite console, you have a specialized controller, useless for any other games, that only plays canned guitar riffs from a CD. Moreover, the software has to run on particular hardware. Then, a clever programmer with Pd can take that same ridiculous controller and use it for whatever he/she wants. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] technological parody was: Pd performance at TED
On Wed, Jun 22, 2011 at 2:43 PM, Jonathan Wilkes jancs...@yahoo.com wrote: The Rube Goldberg machines and the fridge are great examples of parodies-- I suppose we can call them technological parodies if we want to be precise. But for things that are not actually meant as parodies, it's a misnomer that just seems like an ideological term of derision. Correct. It's a kids game, I know... and it works as intended. Yes--I am deriding it even though I probably don't have to. so, I guess you mean to say that a *real* parody has to be intentional? I doubt the creators of the robotic beer fridge thought they were creating a parody--but the sheer impracticality and high-technology implementation *makes* it one. So, calling *anything* a technological parody is as you said, just an ideological term of derision. But after all, you can create anything you want, it depends on how it's received by other people what labels they would put on it. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] technological parody was: Pd performance at TED
On Wed, Jun 22, 2011 at 2:43 PM, Jonathan Wilkes jancs...@yahoo.com wrote: How is the guitar hero example not just an example of locked down proprietary consoles vs. free software ideals? I think you missed the contrast. Pd is clearly not a technological parody, even if it looks like just a software version of patching together synthesizers/effects. That was the point. I think we're going to suck all the fun out of this expression now... I do this often enough on the list. Other than that--GH is stupid. and I think that's a perfectly good reason to trash it. I selected it as the first real example of something that I think is a joke of technology. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd performance at TED
On Mon, Jun 20, 2011 at 8:39 PM, Mathieu Bouchard ma...@artengine.cawrote: On Sun, 19 Jun 2011, Jonathan Wilkes wrote: --- On Sun, 6/19/11, Mathieu Bouchard ma...@artengine.ca wrote: What's a « technological parody » ? It's where you take something like a modern digital computer and do DSP by using an interface modeled after 30 year-old analog audio equipment. Therefore Pd is a technological parody ? Seems like this fits into the discussion of CV's in digital synthesizers, however briefly on-topic it was :) Pd is *not* a technological parody by being able to do everything that a 30-year-old analog interface could do, because it does it better. Hardware for running Pd to accomplish the same tasks can be smaller and less specialized. There's lower noise, less distortion--things that would take a team of engineers several years to build with hardware would be programmable in Pd in less time. A technological parody ought to be defined by: 1. usage of high-tech hardware to fulfill a low-tech purpose 2. an unwarranted degree of specialization or wasteful usage of hardware size/power e.g. a wind controller shaped exactly like a clarinet, running off a DSP board, and all it does is sound exactly like a clarinet. Why don't I just mic a clarinet? Anybody else got one? Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd performance at TED
On Tue, Jun 21, 2011 at 12:08 PM, Charles Henry czhe...@gmail.com wrote: On Mon, Jun 20, 2011 at 8:39 PM, Mathieu Bouchard ma...@artengine.cawrote: On Sun, 19 Jun 2011, Jonathan Wilkes wrote: --- On Sun, 6/19/11, Mathieu Bouchard ma...@artengine.ca wrote: What's a « technological parody » ? It's where you take something like a modern digital computer and do DSP by using an interface modeled after 30 year-old analog audio equipment. Therefore Pd is a technological parody ? A technological parody ought to be defined by: 1. usage of high-tech hardware to fulfill a low-tech purpose 2. an unwarranted degree of specialization or wasteful usage of hardware size/power Guitar Hero. It's a mockery of music and almost certainly a technological parody. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] writing dsp externals for variable number of inlets
Hi, Ahmet I don't know how to create a variable argument type of function definition for this purpose, but it should be clear that your dsp function knows how many inlets there will be. You will be setting the number of inlets when the object is created. You could make a maximum number of inlets and add a data structure element to store the number of inlets. Then, in your dsp function, put a case statement to look up the dsp_add call with the correct number of arguments. I'm not sure that's the best way, since dsp_add has a variable number of arguments in its definition. It would make sense to me if function calls had to have a fixed number of arguments, but I'm just not sure. Chuck On Sat, May 7, 2011 at 10:01 AM, Ahmet Kizilay ahmet.kizi...@gmail.comwrote: Hello, I want to write an external which creates the signal inlets dynamically depending on the number of arguments, just like the multiplex~ object from zexy. My question is about writing the dsp_add function. How do I set the arguments when I don't exactly know how many signals I will be handling? I hope my question is appropriate for the list (first post)? Thanks. -- ahmet kizilay http://www.ahmetkizilay.com ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Making a Realtime Convolution External
On Wed, Apr 6, 2011 at 2:08 PM, IOhannes m zmoelnig zmoel...@iem.at wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 2011-04-06 21:04, Seth Nickell wrote: I use a thread per core, it does parallelize nicely. that's what i thought. please don't let yourself turn down by all those misers :-) fgmasdr IOhannes As a young curmudgeon myself, I might *grumble* seem discouraging. But really, I'd encourage you to take on convolution externals... but don't create a monster. In the context of threading/part. conv, I had an idea to compute ahead. Most of the calculations for a given block can be computed ahead. Only the most recent block of samples needs to be actually convolved, right away. Then, once you've summed the most recent block with the other partitions, you'd start a thread to compute ahead the next cycle's partitions. If the load is low enough, it would complete by the next cycle--of course, you'd need to wait/join the background thread to make sure that it completes. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Making a Realtime Convolution External
On Tue, Apr 5, 2011 at 2:33 PM, Seth Nickell s...@meatscience.net wrote: Hi Mathieu, Thanks, I assumed (without checking :-P) that the dsp call happened every time, didn't realize it was a setup/patching call that registers my _perform function with a call graph. Exactly what I need. I think the difference in approach comes from the needs of the external. fiddle~ probably needs much larger blocks than typical to discriminate between low frequencies. In my case, I can run at 64 sample sizes, but I'll take your whole CPU to do it. It might be smart to default to some internal buffering (say 512), and let people order the external to do really really low latency if they need it and are willing to pay in CPU. Here's where your users' choice of block sizes comes in--if your user puts a partitioned convolution external into a canvas with block size 64, it means to be low-latency. If the user puts it in with [block~ 1024], then the buffering is defined. Pd means to be ~user~programmable and modular. The more you try to monolith your externals, the worse they work (I've done this). I know I'm not expressing it well, but I hope the point comes through. That said, Peter reminded me of an optimization that I hadn't implemented yet. AudioUnits are rarely asked to run below 128 sample block sizes, so it didn't make sense for the AU, and I forgot that it was on the TODO list from 2 years ago. ;-) By convolving very small blocks in the time domain, and switching to frequency domain for larger blocks, I think we can get excellent CPU usage at very small block sizes too. It sounds like you'd have a bit of a problem without first profiling the system or having known profiles for different hardware. Can you tell me more about your partitioning method (just the math)? -Seth On Tue, Apr 5, 2011 at 8:49 AM, Mathieu Bouchard ma...@artengine.ca wrote: On Mon, 4 Apr 2011, Seth Nickell wrote: Are the DSP calls liable to vary t_signal-s_n (block size) without notification? 64 samples, apparently the default on pd-extended, is doable without buffering for partitioned convolution on a modern computer, but it exacts a pretty high CPU toll, and if I have to handle random blocksize changes, it gets more expensive. Also, since convolution is much more efficient around block sizes of 256 or 512, perhaps I should default to one of these, buffer a little, and have a runatpdblocksize message or somesuch? There's always a notification. Any change of s_n will result in a new call to the dsp-function. Note that it's best to make sure that the dsp-function is fairly fast most of the times, because any patching may retrigger the dsp-function in order to recompile the graph. dsp objects working with some kind of blocks don't have to be using s_n as a setting. I mean that you can accumulate several dsp-blocks in order to make your own kind of bigger block. This is what [fiddle~] and [env~] do, for example. But some other object classes use s_n as a setting. For example, [fft~] does. I don't know why this is not consistent across all of pd. (I'm not saying either approach is better than the other.) ___ | Mathieu Bouchard tél: +1.514.383.3801 Villeray, Montréal, QC ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Call for papers and workshops: Pure Data Convention 2011
Yer gonna make me panic. Seriously? On Sun, Mar 27, 2011 at 3:42 PM, Marco Donnarumma de...@thesaddj.comwrote: 2h 20' from now! :) yeah... How many hours left??? -- Marco Donnarumma Independent New Media and Sonic Arts Professional, Performer, Instructor ACE, Sound Design MSc by Research (ongoing) The University of Edinburgh, UK ~ Portfolio: http://marcodonnarumma.com Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net | http://www.flxer.net Event: http://www.liveperformersmeeting.net ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Call for papers and workshops: Pure Data Convention 2011
Not really panicked. haha I'll post something and edit it again in a few hours, kinda psyched about it On Sun, Mar 27, 2011 at 3:50 PM, Charles Henry czhe...@gmail.com wrote: Yer gonna make me panic. Seriously? On Sun, Mar 27, 2011 at 3:42 PM, Marco Donnarumma de...@thesaddj.comwrote: 2h 20' from now! :) yeah... How many hours left??? -- Marco Donnarumma Independent New Media and Sonic Arts Professional, Performer, Instructor ACE, Sound Design MSc by Research (ongoing) The University of Edinburgh, UK ~ Portfolio: http://marcodonnarumma.com Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net | http://www.flxer.net Event: http://www.liveperformersmeeting.net ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Call for papers and workshops: Pure Data Convention 2011
On Sun, Mar 27, 2011 at 4:33 PM, Marco Donnarumma de...@thesaddj.comwrote: mm, from the website: ~ Calls for Papers and workshops Please submit papers to the openconf Deadline for abstracts: March 28, 2011 Yeah, I know that. It's Mar 27th where I am. :D greetings from Central Standard Time--f'n snow, I thought we were done with that til next year Please send an extended version of your abstract (1 page or 500 words) ~ The call for music will be still open for some time. M On Sun, Mar 27, 2011 at 9:50 PM, Charles Henry czhe...@gmail.com wrote: Yer gonna make me panic. Seriously? On Sun, Mar 27, 2011 at 3:42 PM, Marco Donnarumma de...@thesaddj.comwrote: 2h 20' from now! :) yeah... How many hours left??? -- Marco Donnarumma Independent New Media and Sonic Arts Professional, Performer, Instructor ACE, Sound Design MSc by Research (ongoing) The University of Edinburgh, UK ~ Portfolio: http://marcodonnarumma.com Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net | http://www.flxer.net Event: http://www.liveperformersmeeting.net ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list -- Marco Donnarumma Independent New Media and Sonic Arts Professional, Performer, Instructor ACE, Sound Design MSc by Research (ongoing) The University of Edinburgh, UK ~ Portfolio: http://marcodonnarumma.com Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net | http://www.flxer.net Event: http://www.liveperformersmeeting.net ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] The economics of Open source
I thought I'd pose a question to you, for academic curiosity. For example, in my current line of work, cluster computing, there's a lot of possible funding models for supporting maintenance, and they all have different ~unintended consequences. (ex) You lose customers, waste cycles, delay research schedules, and they all have some other costs associated. Economics just works that way. But in general, I wonder what produces the best outcomes for software development. It's an impossible question to answer without having much time to waste, so don't try too hard :) Could a open-source project with a funding model lead to better code than a professional solution? Could you just dangle some cash on the end of a string and the cats will just herd themselves? On Sat, Mar 19, 2011 at 2:34 PM, Mathieu Bouchard ma...@artengine.cawrote: On Sat, 19 Mar 2011, Bernardo Barros wrote: Hello , Mathieu! Well, I did not refer to implementation of new features, but the maintenance of that code that already works, fixing bugs. Ok, so, basically, buggy software gets rewarded for requests to fix bugs. Bugless software is not rewarded : it does not pay. Therefore we are encouraged to put enough bugs in there so that we get money. Nevermind the high-reliability ideals. (Of course, don't let my comments prevent you from contributing money. I'm just trying to say that some assumptions about funding may encourage the wrong things and cause strange compensations.) ___ | Mathieu Bouchard tél: +1.514.383.3801 Villeray, Montréal, QC ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] dissonance_curves_mod.pd
Yeah, I wrote that one. It can be used to approximate the graphs for dissonance between two complex tones having up to 5 components. Chuck On Sat, Jan 22, 2011 at 6:33 AM, richard duckworth richduckwo...@yahoo.comwrote: Hi all, does anyone know who authored this patch 'dissonance_curves_mod.pd' ? It's a dissonance curve calculator Thanks, Rich Rich Duckworth Lecturer in Music Technology Department of Music House 5 Trinity College Dublin 2 Ireland Tel 353 1 896 1500 It's the most devastating moment in a young mans life, when he quite reasonably says to himself, I shall never play The Dane! ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] dissonance_curves_mod.pd
On Sun, Jan 23, 2011 at 4:54 PM, Alexandre Porres por...@gmail.com wrote: Hey Chuck, nice to meet more people that work with this. I had a fast glimpse at it, is it done over Parncutt's implementation of Hutchinson and Knoppof's model? cheers Alex No, it's not a technically accurate model--I was just using it as a tool to look at some equal tempered scales for instruments with non-harmonic spectra. I was using the patch posted by Julian, here: http://lists.puredata.info/pipermail/pd-list/2006-05/038620.html I just made an assumption about the additivity of dissonance from pairs of frequencies in complex tones. Each pair of tones in the patch contributes an amount of dissonance (which depends on the frequencies) that's multiplied by the square root of the product of the amplitudes. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] HHT HilbertHuangTransform objects in Pd?
On Mon, Nov 15, 2010 at 10:54 AM, Mathieu Bouchard ma...@artengine.cawrote: On Mon, 15 Nov 2010, Charles Henry wrote: However, there's an interesting and useful approximation given by the hilbert~.pd patch (provided in the extra directory perhaps?). It uses two all-pass biquad filters that are ~90 degrees out of phase with each other to approximate the hilbert transform. Unfortunately, there are two different things called Hilbert Transform, and the one with the two biquads doesn't approximate Hilbert's decomposition, they approximate the other thing called after Hilbert. (is that right ?) I don't know... The Hilbert transform on a function g(t) is this thing: Hg = 1/pi * integral( s=-inf, inf , 1/(t-s)*g(s) *ds) or in other words, convolution by 1/(pi*t) and there's a complex valued signal based on g(t) h(t) = g(t) + i*Hg(t) The Hilbert transform gives you just the imaginary part. The hilbert~.pd patch approximates this complex valued signal h(t). I know there's a reference to single-sideband modulation in the help patch if that's related--is h(t) called the analytic signal? ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] OT: Emotiv EPOC
Hi, The Open EEG list has been following the Emotiv EPOC hacks for quite a long time now. See this thread on the Emotiv Epoc for starters: http://sourceforge.net/mailarchive/forum.php?thread_name=4CA4EA3C.5060206%40jetned.deforum_name=openeeg-list On Thu, Nov 11, 2010 at 7:04 AM, cosmin O_O horiacos...@hotmail.com wrote: Take a look at: http://www.ghostlab.org/1_consurgens Open EEG BrainBay MidiYoke Pd-extended Cosmin Date: Wed, 10 Nov 2010 19:06:02 -0500 From: mgr...@syr.edu To: pd-list@iem.at Subject: [PD] OT: Emotiv EPOC Hello, Just wondering if anyone has seen this? Or used it with PD? Just read about it on the max/msp forums OR other ways to get brain waves into PD? Just curious what projects there might have been. I am trying to conceptualize my own. cheers mark -- ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] how many [your favourite os here] users does it take to screw in a light bulb? [WAS]: Re: Pd-extended 0.42.5 release candidate 6 released!
how many classic macintosh users does it take to screw in a light bulb? One. It does everything you want as long as all you want it to do is screw in light bulbs. On Sat, Sep 18, 2010 at 12:16 PM, Lorenzo lsut...@libero.it wrote: João Pais wrote: how many linux users does it take to screw in a light bulb? None: Someone hacked a Perl script in 1992 using vi to do it and it still works. :P Lorenzo 3 full time people, plus the help of online pages in the internet, and lots of hours going around forums and chats. and in the end the bulb still doesn't work because it can't compile, or one of the libraries is too old/too new, or the software is allergic to the hardware, or something else that no one can explain. that sums up my experience with linux so far. windows works for me, I do all my performances with it and never regreted it. Windows7_Error: 001 Windows 7 loaded - Warning your computer is now in danger 2010/9/17 Mathieu Bouchard ma...@artengine.ca: On Fri, 17 Sep 2010, patko wrote: (please don't read this serioulsy) Hahaha ! Hey, I have one : Q: how many Windows users does it take to screw a light bulb ? A: None : Windows can very well screw anything on its own ! (intraduisible) ___ | Mathieu Bouchard -- Villeray, Montréal, QC ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [ot] sueing the mailing list...
On Mon, Aug 23, 2010 at 5:49 AM, IEM - network operating center (IOhannes m zmoelnig) n...@iem.at wrote: what do you think of all this? fgmasdr IOhannes The best thing to do would not be to waste too much time on it. Maybe this is an unfair generalization, but an admin's work involves unreasonable/stupid requests on a daily basis. Maybe this one is exemplary, but it belongs in the same file with the rest, and a token reply: Here ya go, jerk. It's done. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Yet another post about cpu consumption... (for Linux users)
On Thu, Aug 5, 2010 at 11:21 AM, Pierre Massat pimas...@gmail.com wrote: Can it be harmful to let the cpu run at full speed all the time? Or is it just a matter of energy consumption? It's not particularly harmful, but your cpu may run hotter and consume more power. You can disable the cpu throttling and thermal protection features in the bios usually. That's what I do with my overclocked core2 duo desktop machine. The performance gets bad at above 60C and you'll be in danger of damage. I've stress tested this one and haven't broken it yet. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] py/mysql
I am just now debugging a completely different application at work (CellProfiler Analyst), and trying to figure out this same error. The application is pre-compiled, and the *.pyc files are put into site-packages.zip. It retrieves the correct files from the archive, but then complains about not having the init_mysql function. I also am running a 32-bit application on a 64-bit capable machine. Chuck On Wed, Jun 9, 2010 at 12:45 PM, Dafydd Hughes dafyd...@gmail.com wrote: Hey everybody It's been a while - I hope everybody's good. Having a bit of an issue, and hoping somebody can help. I'm trying to use py in pd-extended 0.41.4 to add to a mysql db table using MySQLdb. The python script works fine on its own, but once I get it into py I get the following errors: py - No namespace available Traceback (most recent call last): File /Users/dafydd/Documents/pd/Sound Sorter/db_add.py, line 1, in module import MySQLdb File build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py, line 19, in module File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 7, in module File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 6, in __bootstrap__ ImportError: dynamic module does not define init function (init_mysql) I've done some searching and it sounds like this might be an issue with 32bit vs 64 bit builds, but I have no idea where to start. I'm on a macbook pro i7 (64 bit, right?). Would Pd have an effect here? Have I screwed something up? Sorry to be so vague - using the py/python/mysql combination is pretty new to me. cheers dafydd ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] py/mysql
Okay, my situation has been somewhat different, after all. I am running into architecture related problems with libraries. In particular, I was able to diagnose the problem using the file and dyldinfo commands. The library you (probably) need to find is _mysql.so and take a look at what the library does. file _mysql.so _mysql.so: Mach-O universal binary with 2 architectures _mysql.so (for architecture i386): Mach-O bundle i386 _mysql.so (for architecture ppc): Mach-O bundle ppc dyldinfo -arch i386 -export _mysql.so which shows me a full table of exported symbols. however, dyldinfo -arch x86_64 -export _mysql.so is empty and so is the table printed by: dyldinfo -arch ppc -export _mysql.so I hope that helps somewhat. Chuck On Wed, Jun 9, 2010 at 2:39 PM, Charles Henry czhe...@gmail.com wrote: I am just now debugging a completely different application at work (CellProfiler Analyst), and trying to figure out this same error. The application is pre-compiled, and the *.pyc files are put into site-packages.zip. It retrieves the correct files from the archive, but then complains about not having the init_mysql function. I also am running a 32-bit application on a 64-bit capable machine. Chuck On Wed, Jun 9, 2010 at 12:45 PM, Dafydd Hughes dafyd...@gmail.com wrote: Hey everybody It's been a while - I hope everybody's good. Having a bit of an issue, and hoping somebody can help. I'm trying to use py in pd-extended 0.41.4 to add to a mysql db table using MySQLdb. The python script works fine on its own, but once I get it into py I get the following errors: py - No namespace available Traceback (most recent call last): File /Users/dafydd/Documents/pd/Sound Sorter/db_add.py, line 1, in module import MySQLdb File build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py, line 19, in module File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 7, in module File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 6, in __bootstrap__ ImportError: dynamic module does not define init function (init_mysql) I've done some searching and it sounds like this might be an issue with 32bit vs 64 bit builds, but I have no idea where to start. I'm on a macbook pro i7 (64 bit, right?). Would Pd have an effect here? Have I screwed something up? Sorry to be so vague - using the py/python/mysql combination is pretty new to me. cheers dafydd ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] tabread4~ broken interpolation algorithm - was Re:, Max Smoother Audio than Pd?
You're trying to restrict the analysis to a convenient (but reasonable) class of signals, and to assume that the signal to be interpolated, x, belongs to that class. Right? Well, sort of. What works well as an interpolator for one signal may not work well for another. The point I started from was asking the question, what would make a good measure of the error when we use a given interpolator? So, if I just wanted to average across all frequencies the squared error, I thought the problem would be equivaled to this one: E=|f(x)-sinc(x)|^2 is minimized when f(x)={sinc(x) -2x2 ,0 elsewhere And then it's the same as having an operator acting on a flat spectrum signal. It doesn't make any sense, as far as I can see, to assume that the signal being interpolated belongs to the class of function whose spectrum has a flat modulus (and any phase). Why not assuming then, for example, that x(t) is a constant? (please don't take my tone as sarchastic) What does make some sense (it is a strong hypothesis but discussing its plausibility would bring the discussion to a much higher level) is to treat the signal x as a stochastic process with a given power spectrum - such as flat, or pink. So, I assumed the signal spectrum flat so that I could average over all the frequencies. True it doesn't fit the actual use cases and give us the error in a signal we'd actually like to see--it's just sort of a toy problem, but it goes back to the reason why we're looking at it in the first place, to consider what happens when we just choose one measure (L2 normed error in signal reconstruction averaged across all frequencies) and then find the best result. This class of functions to consider is useful if we're going for rigourous math here... but maybe we've strayed too far outside the topic and should just stick to calculus? Suppose we choose our metric and work it out. If the correct result doesn't behave well or doesn't fit our criteria, then how should we create a better measure? But that means that the quantity you're minimizing is no longer an integral of the signal minus some other signal all squared: it is the expectation of something. The power spectrum of a stochastic process x(t) is not the fourier transform of x(t), it is the fourier transform of tha autocorrelation function of x (or something like that). The hardest class I ever had was stochastic analysis (as recent as 4 years ago), where we solved problems like this. Fundamentally, it's not too hard, but the details of the calculus are tricky. I'd prefer to stay away unless there's a real good reason to do so :) ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Spectral Shiffting
There's a method of tuning partials that William Sethares uses in his compositionss and he talks about it in his book Tuning Timbre Spectrum Scale. Specifically, he was also using inharmonic instruments which would be arranged into consonant scales, and the similar problem of using arbitrary scales with inharmonic spectra to fit with least dissonance. I know I read the spectral mapping technique he uses, but I didn't really understand how it works. On Fri, Apr 2, 2010 at 2:38 PM, Alexandre Porres por...@gmail.com wrote: Hi folks, I'd lke to distort a sound spectrum by transposing partials the way I want. Like making the spectrum more inharmonic or harmonic. Anyone done something similar? What kind of processing should I use? I was thinking that maybe a Phase Vocoder, where you could control the frequency separately, huh!?!? Anyone did this by the way? thanks a lot Alex ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] tabread4~ broken interpolation algorithm - was Re:, Max Smoother Audio than Pd?
On Wed, Mar 31, 2010 at 5:12 PM, Matteo Sisti Sette matteosistise...@gmail.com wrote: It occurs to me that there exists one very obvious function for which the squared error is minimized for a 4-point interpolator. 4-point interpolator impulse functions have to be 0 outside the interval [-2,2]. So, E=|f(x)-sinc(x)|^2 is minimized when f(x)={sinc(x) -2x2 , 0 elsewhere I may be missing something but I'm afraid the E in your formula is not the error that is supposed to be minimized. Sorry, I often go kind of fast-and-loose with the math, but I think you'll see it's true within a certain context, which you may or may not accept. The ideally interpolated signal (which is the one in reference to which the error has to be minimized) is not just a sinc: it is the sum of an infinite series of sinc's centered at the sampled points and scaled with the sampled values. Let x be the series of samples, each multiplied by Dirac-delta functions at the sample times. Let S be the convolution operator which convolves a function by sinc(t) and let F be our arbitrary convolution operator which convolves by an interpolation function f(t). Then, the quantities we need to compare are Sx and Fx where we want to minimize the L2 norm, the integral of the squared error (Sx - Fx)^2 |Sx-Fx|^2 = |(S-F)x|^2 The error depends on x the signal. Here, I want to make the *convenient* assumption that the spectrum of x is flat, since we want some kind of generality and we want to minimize average error across frequencies. This would make the problem equivalent to using just *one* dirac-delta in place of x and we would get the problem to reduce back to just the difference of the impulse responses |sinc(t)-f(t)|^2 For a little while, I was going in circles on how to minimize operator norms, but it's not quite the right problem for that and I'd probably spend all day on it, that way :) (I won't try to write it in a latex-like fashon, I would certainly get it wrong - not because of latex syntax, I mean I would get it wrong even if I tried to write it down manually) I'm reluctant to try latex because it looks like too much work, but I think lyx (a wysiwyg latex editor) is more my speed. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Combat aliasing!
The interpolation, since it cannot be an ideal interpolation, may introduce other noises or artifacts, not aliasing as far as I can see. There's two parts to it, aliasing (stopband) and non-flat frequency response (passband). Since interpolation of uniform samples is linear, what we see in interpolation is the introduction of other frequencies. The intermediate stage between sampling and playback is a dirac-delta comb which takes our original spectrum and copies it centered at n*fs for all n. It's an infinitely long spectrum. The interpolation is a linear convolution operator on the dirac-delta comb. The distortion we observe comes from non-flat frequency response in the passband (0 to Nyquist) and from the copied spectra above the Nyquist frequency. Now, we hardly realize its there, because we don't represent the intermediate stages. We only need to get the output at a series of discrete points, so we only need to evaluate the convolution at those discrete points. Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] tabread4~ broken interpolation algorithm - was Re:, Max Smoother Audio than Pd?
I get what you're saying too, and I'm at least a little skeptical myself. But as I think about it generally, my entire approach to looking at these problems has been very similar. I basically thought that when comparing interpolators, I could disregard the signals involved and just look at the properties of the impulse responses (or convolution kernels or spectra, etc...). So, if I can't do that, I really have to rethink what I know. On Thu, Apr 1, 2010 at 10:44 AM, Matteo Sisti Sette matteosistise...@gmail.com wrote: Here, I want to make the *convenient* assumption that the spectrum of x is flat Stated this way, it sounds reasonable, doesn't it. If it does, then it means that by flat spectrum you mean the _power spectrum_ of x considered as a _stochastic process_ rather than a deterministic signal. When it comes to the general class of functions with flat spectra, the only difference is in phase, right? But the error is the same in time domain as in frequency domain thanks to the isometric property of the Fourier transform. Our interpolation is the same as a convolution, so we're still just multiplying our spectra and the phase comes out differently in each frequency. So, when we integrate the error^2 in the frequency domain, the phase makes no contribution, and then, it's really just the same thing as the error in the time domain. Then, all flat spectra are equivalent for this problem. I really am enjoying this math discussion, and I do want to be corrected or shown something I don't see yet. Please let me know if there's something wrong with what I'm saying. Brought to the domain of time, assuming x has a flat power spectrum means assuming x is white noise. (btw a closer-to-reality assumption would be that it is pink noise - but that's not the point here) Not a dirac delta. So minimizing the error would be to minimize the power, or probably energy, of the error meant as a stochastic process. Though I should have the notions to go a bit further in at least _formulating_ (not solving) the problem, those notions are a bit oxidated, if not completely gone from my head :( But I'm sure it is not equivalent to minimizing the integral of the difference between the operators applied to a delta function. -- Matteo Sisti Sette matteosistise...@gmail.com http://www.matteosistisette.com ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Combat aliasing!
On Thu, Apr 1, 2010 at 11:11 AM, Matteo Sisti Sette matteosistise...@gmail.com wrote: Matteo Sisti Sette escribió: Oh no, maybe not. I read your explanation more carefully and of course, the non-perfectness of the interpolation process (i.e. its non-zero frequency response in the stop band) is responsible for the persistence of attenuated copies of the original spectrum at multiples of the original sampling rate, which then appear aliased into the passband when the signal is sampled again at a different rate. This is what's going on when discontinuities in the interpolated signal cause noise at high frequencies, isn't it? Yes, that's my interpretation and explanation of it. It works out nice and linear in the spectral domain *if* we can make that intermediate step with the Dirac-delta comb which copies the spectrum. Then, *all* the deviations in the reconstructed signal come from the places where the spectrum does not match the ideal response. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] tabread4~ broken interpolation algorithm - was Re: Max Smoother Audio than Pd?
I don't know either. We have the formulas for each, so we can calculate squared error vs. sinc(x), but there also appears to be differences in which frequencies the distortion occurs and some could be more audible. It occurs to me that there exists one very obvious function for which the squared error is minimized for a 4-point interpolator. 4-point interpolator impulse functions have to be 0 outside the interval [-2,2]. So, E=|f(x)-sinc(x)|^2 is minimized when f(x)={sinc(x) -2x2 ,0 elsewhere Note that since the Fourier transform is isometric and linear, we know that a function which minimizes the error in the time domain also minimizes error in the frequency domain. This spectrum ought to have a lot of ringing in the upper frequency range, and in the stopband. So, if we only considered the squared error in the reconstruction and not the smoothness of the result, this would be the clear choice. How would we factor in the smoothness as well? ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [PD-dev] CUDA discussion
I'm still studying the Pd source code and trying to figure out the best place to tie in CUDA functions. I think, What I'd like to do is create a special canvas that owns cuda pd objects, handles their memory allocation and adds them to the dsp graph. Is this on the right track? Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Echo cancellation, adaptative filtering
On Thu, Jan 7, 2010 at 1:18 PM, Roman Haefeli reduzie...@yahoo.de wrote: Seriously, I think there is only little point in pointing to how others did it better. I haven't looked at your externals, though, but I pretty sure, that they are _very_ advanced (from my perspective. me, who doesn't have a clue about adaptive filtering at all, yet). It seems to be quite an interesting subject, when looking at your webpage. Doing it better or worse is not the issue. It's how well it fits your application. There's as many adaptive filters as you've got fingers and toes, and there's quite a few different methods for the adaptation. Questions for the application are things like: How long is the filter going to be? Are you trying to solve a system modeling problem or a system inverse problem? Acoustic echo cancellation can mean either identifying the system on the receiving end, or solving the inverse problem on the output side. Are you trying to filter a non-stationary system or make a calibrated system? How fast does the convergence need to be? How much latency is in the system? You can't realistically expect to make good adaptations if you're updating the system when the output hasn't reached its way back since the previous adaptation. Last one, and trickiest... are you trying to solve a problem that's badly conditioned? One class of methods is gradient descent. These would be LMS, NLMS, and RLS. These typically have a burn-in period of about 10^2 to 10^4 and then a logarithmic rate of error decreases. These are better for system identification problems than inverses. One issue here is that the gradient can be very small along certain vectors. So, your system acts as a unary operator on the signal you feed through it. It has eigenvectors and eigenvalues. For linear systems, the Riesz representation theorem applies, and we have an integral equation with a kernel that can be decomposed into eigenvector/eigenvalue pairs. For systems good for filtering, we have convolution operators whose eigenvectors are complex sines/cosines, and your eigenvalues are the spectrum of the signal in convolution. Gradient descent methods can only converge in the bad spots at the rate of f_min/f_max (the spread of the magnitudes in the spectrum). This is generally not a problem, since these spots also make small contributions to the error. But you will have some vectors in your filter that just never converge to anything good, and depending where you start from, you will get different solutions. Then, there's the Gauss-Newton methods. These are like magic for certain problems. Where the error function is linear-quadratic and your operator is positive definite, the filter will converge to something good in one shot. An example of this method is the block frequency domain method. It's problematic where operators are positive semi-definite--things can blow up easily and the system will be prone to noise. There are ways to regularize the 2nd derivative operator so that it's inverse is stable, but it also reduces the convergence rate. I've got a method in the works (all except for implentation) for minimizing the product of error and filter variance that will achieve a trade-off between goodness of fit and computational expense at a uniformly fast convergence rate, regardless of the ill-behavior of the system. It's sort of halfway between gradient descent and regularized Gauss-Newton. The idea of which is to solve the system closely where the solution is good and be able to set the remaining parts of the filter arbitrarily to make the filter look good, since they can't affect the results much. This is all much in how I just look at these problem and analyze things to death, even when it's not warranted. You might just grab an implementation that exists, integrate it correctly on the first try, and forget all about the analysis. But the interesting problems generally require a couple tries and a couple good guesses :) Chuck ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Echo cancellation, adaptative filtering
I tried to do it with wavelet subbands. I failed miserably. Mostly, it was because I didn't get all the math the first time around. I also tried making some adaptive reverberation analysis routines, which failed due to lack of computational power. Now, I've got the math nailed down and put together a solid development computer but have not worked on the implementation lately. Let me know if you need any help with this stuff. Perhaps we can collaborate to make something that actually works! Chuck On Wed, Jan 6, 2010 at 10:47 AM, Damien Henry d...@dh7.net wrote: Hi List, Does anyone implemented some echo cancellation or adaptative filtering with pd ? Cheers, Damien. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list