|The business end. Speaker below, and a small microphone on top.
||The two buttons here are used to seek the next higher or the next lower peak response frequency.
|The device is held with all fingers, though the index and middle rest on the seek buttons. It is intentionally both one-handed and symmetrical, so a single user can operate a pair.
||View from the rear. In future, I should cover this carefully.
Now, if the user mostly covers the tube, it creates a resonant chamber behind the speaker, significantly increasing its volume.
|Breadboards and an amp gutted from a set of computer speakers.
||Rezzer in use. Here it is aimed down 8 feet of cardboard tube.
|VIDEO: Scope readings from the device when pointed down a tube.
There is no peak detection, but this illustrates the natural frequencies of the tube well. The upper wave
is the speaker output. Not how the lower wave (mic input) varies with frequency.
||VIDEO: The device in action. The scope shows mic input, and
that the system finds and holds a peak once found. Holding the button down skims past peaks until released.
|System overview. The microcontroller at left goes through the upper blocks to generate a frequency sweep,
the response is then recorded and filtered through the lower pathway. The microcontroller finds the local peak in this response, and halts on that note.
Pressing either button will cause the device to seek the next peak.
- DAC: Here I only used 8 bits to cover about a kilohertz range of frequencies. This resolution is inadequate, I reckon, as the device can be 2Hz away
from the true resonant peak of an object. This meant that the device would sometimes not match the satisfyingly loud hum I could find manually with a
- VCO: Initially, I'd hoped to make this a self-contained handheld device. So I avoided generating my tones with PD, and instead sought a chip that could do it.
This was a mistake. It was difficult to set the range on the chip, but generating tones with PD is a snap. Plus, PD would have allowed me to do some interesting
interpretation of the result, like basing a simple melody on the peak found, or saving and stacking peaks.
- Follower: Just a simple op-amp follower, but it gave me no end of trouble. The VCO generated lower tones at higher voltages (5V max). A voltage input above 4V
would cause the opamp I used to rail at 5V, and so I'd lose the 200Hz worth of low frequencies (which are the most satisfying). I'd kept assuming it was a
failing of the speakers. Turns out the "rail-to-rail" designation doesn't include inputs. Get the hammer.
- Speaker amp: I first limited myself to little low-power chip amps. This made corresponding quiet response heard by the mic difficult to interpret, and I wasted an age
trying to amplify it and remove noise. I then gutted a set of PC speakers, and life became much much simpler.
- Speaker: Finally an easy part. However, I was concerned that the speaker would have sweet spots (i.e. greater volume per volt at particular frequencies) which could
confuse peak detection. I didn't make any attempts to fix this, as I wouldn't know whether it was the speaker, my ears, or the microphone with the sweet spot.
Dave suggested in class that I might have the mic listen to the speaker directly as well as to the reflection, allowing me to normalize the response and
eliminate speaker/mic quirks.
- Electret mic: The tiny size was ideal. I first tried both dynamic mics and speakers as mics, frustrated by the little silver ones
until Angela explained that they were electret mics and required special circuitry.
- Audio amp: A giant swirling pit of amplifying and filtering with op amps until Angela cannibalized an appropriate chip from an old project.
- Variable Bandpass: I haven't implemented this yet, though it should mitigate the effect of extraneous sounds on peak detection. As is, a loud outside noise (like a shout)
can yield a false peak. I think this will be particularly necessary when using a pair of Rezzers.
- AVR (peak detection): I keep a running average of the last 40 adc values. This provides me with a baseline and should eliminate gradual sweetspots
(low dvolume/dfreq and dvoltage/dfreq) in the speaker and microphone. I then sum the area between the signal and the average for a set amount of time,
and consider that the local volume. The peak detection is a little simplistic, working only with the nine most recent values, and I overshoot the peak
and step back to it once confirmed. So this aspect could be better done with a curve fit.
- Numerical readout: A curiosity which will allow users to compare frequencies within a single or multiple objects.
- Better performance: Improve the frequency generation resolution, as well as the peak detection algorithm.
- Dual rezzers: One for each hand. This may require the variable bandpass filter.
- Make it more musical: I'd like to include the lower frequency range I lost in my voltage follower. I find that the higher-pitch sine waves
the device generates are not particularly sonorous, especially when standing alone. The lower-pitches are much more satisfying.
I'd also consider migrating to PureData, allowing the system to generate a simple melody to play over the lower tones found in an object.
Maybe give people the option to seek and play multiple inherent tones at once.
- Found objects: Finally, I can see this being used to play a heap or tableful of found objects.