Author |
Message |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Mon Dec 29, 2008 6:30 pm Post subject:
|
 |
|
Alright I have verified my design, looks promising!
I have reduced the computations per input channel from a 32 point FFT to 8 multiplies and 16 additions (and some memory). In general N multiplies and 2*N additions where N is the number of carriers/pickups you're using. So I think there is a significant savings compared with a 32 point FFT, but as the FFT grows to accommodate more channels I think this method will show an even greater efficiency.
I am very curious to see whether it has the same/better/worse usability as the FFT method. The result is calculated on a per-sample basis but could be down sampled at will for free (basically) so I think it should have a good "feel" when playing. The dynamic range exceeds 100dB using double precision floats. I'm very interested to see how well it would work in your real world system.
I will prepare some drawings and plots and try to get my thoughts into words.  |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Mon Dec 29, 2008 8:39 pm Post subject:
|
 |
|
Hello Randy,
Here's my design. Let me know what you think and if you'll try it. I am interested in the real world "feel" of it, also the computational savings.
http://homepage.mac.com/nicksdsu/temp/randyfilt2.pdf
Let me know if you have any questions, I wrote that paper up in a rush.
Nicholas |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Mon Dec 29, 2008 8:57 pm Post subject:
|
 |
|
Note: I'd call this a poor mans FFT.  |
|
Back to top
|
|
 |
gogmagog
Joined: Nov 08, 2008 Posts: 19 Location: Nashville, TN
|
Posted: Mon Dec 29, 2008 8:59 pm Post subject:
|
 |
|
So, your solution is basically a DFT on only the eight carrier frequencies? That would make sense... |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Mon Dec 29, 2008 9:03 pm Post subject:
|
 |
|
That's not what I originally had in mind, but yes.
I was originally thinking of some polyphase bandpass filters which I think is probably on the same level of computations of the FFT, but this modulator -> CIC seems to beat all of the above. |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Mon Dec 29, 2008 9:09 pm Post subject:
|
 |
|
Something still doesn't add up. An 8 point DFT should have N^2=64 multiplies. What I did only has 8.
I don't think this is a DFT but similar. The CIC filter is where the magic happens. Either way I think its pretty cool. |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Dec 29, 2008 11:10 pm Post subject:
|
 |
|
Hi, this is a truly brilliant invention! My thoughts on the possibility of a hardware implementation are as follows:
Send a composite signal out on one channel of the headphone output of your computer into a bank of active band-pass filters to drive the stimulus array. Then use a buffered summing amp to receive the signals and send them to one channel of the line-in jack of the computer. Use an FFT in software to obtain the response data. This would completely remove the multichannel sound card and would still leave one channel of line-in and one channel of headphone out for audio purposes. If you have a multichannel sound card anyway then you can still have your stereo or whatever on the remaining channels.
Have you thought of this approach? I'm sure you probably have. It would be very inexpensive and would not require digital circuitry at all, just some opamp circuits. Besides low cost and simplicity, it allows any computer user without a multichannel sound card to simply hook up your product and work with it right away. What can I say, I love my opamps!
Again, wonderful job and thanks for making such an excellent video and sharing your technology with the DIY community.
Edit: Then again, perhaps a dsPIC could do this job very well with a little opamp output filtering, and give you a USB interface instead of the audio jacks. Well, I guess there are lots of possibilities and I'm sure you've given them all some thought. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
mistercooper

Joined: Jul 17, 2006 Posts: 62 Location: Seattle
|
Posted: Tue Dec 30, 2008 12:35 am Post subject:
|
 |
|
Simply amazing. I've been messing around with some applications for the iphone/ipod touch recently, and the potential is incredible. I think a dsp powered version of this with a dac would make an excellent diy project in the model of the monome... Write a serial bridge and let everyone tweak opensource maxmsp patchers! |
|
Back to top
|
|
 |
gogmagog
Joined: Nov 08, 2008 Posts: 19 Location: Nashville, TN
|
Posted: Tue Dec 30, 2008 7:38 am Post subject:
|
 |
|
urbanscallywag wrote: | Something still doesn't add up. An 8 point DFT should have N^2=64 multiplies. What I did only has 8.
I don't think this is a DFT but similar. The CIC filter is where the magic happens. Either way I think its pretty cool. |
Wouldn't a DFT on N frequencies only be N*2 multiplies? One for sine, one for cosine? Or am I waaayy off base (all too possible)? |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 8:19 am Post subject:
|
 |
|
A DFT takes N*N multiplies, an FFT N*log2(N) multiplies (that's log base 2, and depending on FFT algorithm). So if you could do a Fourier Transform with 2*N multiplies you'd be famous!
http://en.wikipedia.org/wiki/Fft |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 8:38 am Post subject:
|
 |
|
Inventor: I've thought about trying to do all of the outputs over 1 DAC but I don't think that's the way to do it (but then again I'm a whole lot less analog than some of you!).
His tones are separated by 1.3 kHz. The easiest case will be at low frequency, so 6 kHz up to 7.3 kHz. That's almost a quarter octave. So your filter needs a minimum of 40dB attenuation in a quarter octave, or 160dB/oct. Wow can that be right? You could try and build a high Q notch filter but components tolerances would be a problem, but then again its been awhile since I did the hardcore analog thing.
Meanwhile an 8 channel CODEC is $14 in quantity 1, and will take up less space and fewer (low tolerance) components. It might even be lower power but I'm not sure.
Now on the receiver I don't understand how you can sum all of the signals into 1 line. |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Dec 30, 2008 8:53 am Post subject:
|
 |
|
urbanscallywag, you're right, I didn't think of that! How about a PIC sending out square waves that get low-passed? Or is that what you're doing? I haven't understood your posts well enough. Anyway, cool that you're developing something. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 8:59 am Post subject:
|
 |
|
I'm not doing anything in hardware, just providing alternatives for the FFT.
Let's see a pulse wave with an LPF. Second harmonic of 6 kHz is 12 kHz, which also happens to be an octave so a minimum of 40 dB/octave, that's realistic and worth a try.
But if I still need 8 inputs for the audio I can get the 8 outputs for "free" in a CODEC. |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Dec 30, 2008 10:07 am Post subject:
|
 |
|
OK, i'll take your word for it. The only CODEC i'm familiar with is a telecom interface chip.
There's also PWM and SAR waveforms which would have low harmonics, but hey, you can't do better than "free", as you say!
Could you tell me 'bout your CODEC chip a little? _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
bugfight

Joined: Aug 02, 2007 Posts: 188 Location: Arlington, TX USA
|
Posted: Tue Dec 30, 2008 10:31 am Post subject:
|
 |
|
why not skip the audio encoding altogether, and just send pulses via a digital pin down each row in sequence, and use adc pin (or mux) for each column? |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Dec 30, 2008 10:46 am Post subject:
|
 |
|
bugfight wrote: | why not skip the audio encoding altogether, and just send pulses via a digital pin down each row in sequence, and use adc pin (or mux) for each column? |
I'm trying to imagine the recognition algorithm for that. Maybe if the frequencies were done like notes, packed within an octave, then you could use an FFT for it and detect the fundamentals, is that what you were thinking? Yeah, that would remove the need for filters altogether I guiess, though you would probably want a passive RC in there just to knock the corners off a bit to prevent too much harmonic return siignal. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 10:54 am Post subject:
|
 |
|
With pulses I think you'd have to do time division multiplexing or else analysis is a lot more difficult since pulses have more than 1 tone. |
|
Back to top
|
|
 |
bugfight

Joined: Aug 02, 2007 Posts: 188 Location: Arlington, TX USA
|
Posted: Tue Dec 30, 2008 11:00 am Post subject:
|
 |
|
should be no need for fft, processing would be all time domain. this is how a digital scan matrix works, just adding adc to the receivers. maybe the capacitive coupling would throw a wrench in... |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Dec 30, 2008 11:32 am Post subject:
|
 |
|
bugfight wrote: | should be no need for fft, processing would be all time domain. this is how a digital scan matrix works, just adding adc to the receivers. maybe the capacitive coupling would throw a wrench in... |
Yeah, that should work just fine. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 11:38 am Post subject:
|
 |
|
Without an FFT how would you distinguish which regions were pressed? You could with time division multiplexing but sine waves are much more elegant I think. |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 12:00 pm Post subject:
|
 |
|
I don't think the key-scanning method would work well in this application. |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Dec 30, 2008 12:24 pm Post subject:
|
 |
|
urbanscallywag wrote: | I don't think the key-scanning method would work well in this application. |
How about scanning with a pulsed sine wave or square wave? That would work. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
urbanscallywag

Joined: Nov 30, 2007 Posts: 317 Location: sometimes
|
Posted: Tue Dec 30, 2008 12:29 pm Post subject:
|
 |
|
Using time division or frequency division? |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Dec 30, 2008 12:48 pm Post subject:
|
 |
|
urbanscallywag wrote: | Using time division or frequency division? |
I guess you'd call it time division. You send a square or sine wave into channel one and measure it on every channel with the dacs, then you shut that off and move to channel 2, and so on. for an 8x8 device you could use a PIC and do the whole job for a few bucks, plus get a USB interface to boot. It's a simple solution and I think it would work OK. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
 |
|