I was doing some digital housekeeping recently and came across an unfinished DTMF decoder that I started in Pd. DTFM is also commonly known as "touch tone" and is a signaling system traditionally used over telephony systems (and things like ham radio repeaters). I opened up the patch and found that it wasn't working quite right, so I tinkered and made something usable/releasable.
The help patch above shows decoding from a recording, live from the computers audio input (mic), and also from a fake DTMF dialpad that I made (which also uses my [dtmf~] abstraction). If you're watching a movie or listening to the radio and hear some gold old-fashioned touch tones, you can now decode the digits using this Pd abstraction. Good times.
Back in the 90s, I built several DTMF decoder circuits by hand, some that even interfaced wiht the computer's parallel port for logging. Wow, that was a long time ago. If you hunt around, I suppose you can still find DTMF decoder ICs, but they're certainly becoming harder to find. I guess these days, it makes sense to use the $2000 general-purpose computer on your desk/lap to do that work instead of $10 in parts. :-)
You can download this DTMF decoder (as well as my other DTMF related pd abstractions) over at my github repo: https://github.com/breedx2/pure-data. Let me know if you find them useful!
Sun Jun 06 2010 22:08:28 GMT-0700 (PDT)
I need practice. ...but this video gives a brief demonstration of the Ghetto Drum System that I built several years ago, and I just recently added MIDI over USB. The sounds you hear are from a pretty sizable collection of samples ripped from (mostly commodity) synthesizers and played horribly by me in real time. The Ghetto Drum is triggering MIDI into Pure Data (Pd) in order to play the samples, and the Dickhole Keypiss controller sitting on top of it is used to do bank programming and selection. Audio is routed out of the cheap-o netbook and into an even cheaper guitar amplifier.
Sometimes when I'm prototyping patches in Pd and working at a computer keyboard (without an external controller), I like to be able to quickly map keyboard keys to trigger events.
The vanilla key objects are fine ([key], [keyup], and [keyname]), but [keyname], in particular, likes to send redundant events when a key is held (due to key repeats). As a result, I created [keyonoff]:
This abstraction will take a given key (and an optional timeout duration) and will map a keypress onto a simple 1 or 0, while eliminating duplicates. In other words, when your desired key is pressed, it will output a 1 and will output a 0 iff a zero has been seen from [keyname] and no 1 has been seen within the filtering period. The default timeout period is 50ms, which is suitable for command-like actions, but will need tweaking for time-sensitive rhythmic work.
Tue Aug 25 2009 22:53:57 GMT-0700 (PDT)
So I picked up this nice USB foot pedal at Goodwill on the cheap: I wrote some C code that allows it to act as an "external" (plug-in library if you will) for Pd. Click the above link and you can read all the gory details about how I turned it into a controller for Pd. Demo video is forthcoming.
There's been a fair amount of talk on the pd list lately about doing a new batch of shirts and since I've long thought it might be nice to have a pd shirt, I decided to bang out a design:
Now it's up to the community to decide how much they love it!
Fri Dec 28 2007 00:22:58 GMT-0800 (PST)
This is what the internet is really all about -- collaboration! A really generous German guy named Stefan fixed a deficiency (bug?!) in my NRPN abstractions. Thanks Stefan!
Previous versions wouldn't allow for controller numbers greater than 127...which is like half the point of even having NRPN (the other half being data values > 127). In any case, his modifications were somewhat simple and necessary and I incorporated them into and updated my pd abstractions page.
In order for me to confirm that the abstractions do what they claim, I used my BCR2000 control surface. I stumbled for quite some time with the nrpn_out.pd code, because the BCR200 was just absolutely refusing to recognize NRPN for a controller above 127. I hooked up a software midi dump (amidi -p hw:2,0 -d) to confirm that the bytes coming out of pd were as expected, and they were.
I feared that my controller was maybe shot or in a funky mode (everything else was working fine tho), and I tracked down a firmware update on the Behringer website. As is usual with this kind of firmware upgrade, it is a miserable Windows-only application, and I ended up resorting to using my wife's laptop to run it. Just once I'd like a manufacturer to properly support Linux...and if that's asking too much, just release the source and let people know how they can write their own. Trust me, given the code or at least a description of how to get the bytes into the device (protocol anyone!), the community will friggin build it for you!
Once the firmware was upgraded, the BCR2000 instantly started recognizing its incoming NRPN messages for controllers above 127. Goodie!
Thanks again for Stefan for helping out and contributing back to a community. It's exactly that kind of thing that helps make things better for us all.
Mon Nov 26 2007 00:13:16 GMT-0800 (PST)
This little abstract recording is a 22 minute trek into the insufferable human psyche. It was composed mostly for several pure data (pd) patches and instruments (like the cracklebox and atari punk console) that I built earlier this year. The foldout covers are printed in full color, and the CD labels were each individually hand drawn and painted.
All things considered, I'm pleased with the final recording product. I do wish I would have spent more time on the final mix (the sound/range is a bit low, so crank it up loud!) and made things a bit louder, but the end result is a rich dynamic range balanced on a lofi string of radio and electromush.
Fri Sep 22 2006 10:20:41 GMT-0700 (PDT)
I've been banging around on another pd abstraction that's turning into a nice sound generation tool. As with most pd interfaces, it's not much to look at, but it's being called "caradisio" and it looks something like this:
I'm posting prematurely and apologize for not having sample audio yet.
Although the number of controls is smallish, this thing can sound like an epileptic seizure in a field of cold mud, rusted metal, and broken glass. The concept is pretty straightforward: Take a wavetable synth and evolve the waveform in nasty ways (in this case, pin, lin, and sin). With some reverb, it starts to sound nice and thick...and sometimes there are secret eerie voices that creep in from the muck.
When I finish and clean it up more, I'll post it to my pd page.
(Aside: I think that if pd ever gets antialiasing [for both fonts and controls] and gets more/enhanced drawing primitives for data structures [hello...arc or circle!], we could start to generate some decent interfaces.)
Oh, and I've recently started associating with the newly started dorkbot pdx collective. It's still in its infancy, but the people seem smart and interesting, and I'm sure we can turn the group into something wonderful.
I posted a few new abstractions (mostly controls stuff) on my pure-data page and finally decided that it was time to join the pd webring. Of course, I have no idea if I'll generate the 4 hits/month to actually stay in the ring...heh, but being next to Frank's footils.org sure does help. Guess I got lucky. :) I've also got a set of 3" mini CDRs and jewel cases and labels being delivered today for the two simultaneous releases I hope to do in the next month or so. Maybe that's optimistic, but sometimes you gotta be. Oh yeah, and of all things, I'm playing golf today with the dorks from work. At least it's not 1000 degrees outside like the previous years.