Embedded Whistle Synth

post by jefftk (jkaufman) · 2024-05-15T02:50:02.284Z · LW · GW · 0 comments

A few years ago I ported my whistle synth system from my laptop to a Raspberry Pi. This was a big improvement, but I still wasn't that happy:

After my Electronic Harp Non-Mandolin project I was feeling more at home with electronics, and decided to build an embedded version of my whistle synth.

It's built around a Teensy 4.0 with the audio shield. [1] This gives me stereo 44.1kHz in and out, though currently I'm just using mono. It's plenty fast for the processing I'm doing.

I'm using a standard dynamic mic, which puts out a very weak signal. Instead of connecting that directly to the line in on the Teensy, I need a pre-amp. A normal pre-amp is fancy, but literally all I need here is something that preserves zero crossings and gets amplitude about right, so I made my own around an LM358P (github):

If you want any of these boards let me know; I have dozens of them because the minimum order was five sheets and each sheet has six boards.

I breadboarded it to make sure it worked, and then mounted the electronics in a project box:

This is an absurd number of lever nuts: once this isn't a prototype anymore I'll take all of them off and solder the connections.

The box has XLR connections for input and output, because it incorporates the A/B switching functionality. With the 3P3T switch on the top I can send the XLR input to the whistle synth, or pass it unmodified to the XLR output.

The whistle synth output is 1/4", for use with guitar pedals:

It gets power (and updated programming) over micro USB:

Here's an example of it generating a simple sine wave, transposed down from my whistling:

And here's what it sounds like feeding that sine wave into the SY-1:

I'm quite excited about this, and it's now to a stage where I could play it at a gig, but there are still a bunch of things I'd like to add:

A lot more work to do! But for now I'm very happy with it, and am planning to use it this Thursday at the Scout House.

[1] I initially tried using an ADC pin for input and a HiLetgo PCM5102 I2S DAC for output, because I didn't notice there was a standard Teensy audio shield. After some frustration around no audio output I got it working, but then I ran into issues getting it to work well with the audio library and switched to doing the normal thing.

[2] fc = 1 / (2 * pi * C * R). So 1 / (2 * pi * 13.3e-6 * 600) = 20Hz

Comment via: facebook, mastodon


Comments sorted by top scores.