Teensy Drone
This is a mashup of some interesting audio designs I found lying about the internet.
A Benjolin and a Blippo box are similar and both make use an intriguing device called a Rungler.
So I put them together in one synthesizer, with a better-than-average user interface to control it.
Effects:
Features:
Technology
Synth Section
Audio processing is handled by the Teensy4 with an Audio Shield. The Teensy4 is headless; it takes control inputs via MIDI from the user interface section.
Teensy Drone Audio Architecture
The Teensy receives MIDI control messages and converts the values (which are 0 to 127) to the appropriate frequencies, mixer levels, etc. and sets the audio object properties. The Teensy audio library takes care of the rest, pumping data through the audio objects and audio connections.
User interface (UI)
The user interface is implemented on a Raspberry Pi Pico RP2040 with an external EEPROM. The UI takes input from the knobs, plus MIDI in, and sends it to the synth section. UI to synth communication is via an internal MIDI channel. So the RP2040 receives MIDI from a controller and/or keyboard, which it then sends back out to the Teensy on channel 1. The Teensy doesn't send MIDI anywhere.
The settings are automatically saved to EEPROM after a few seconds of inactivity. The standard grade 24c128/24c256 EEPROM endurance is 100,000 writes. To improve the synthesizer endurance a wear leveling algorithm multiplies the EEPROM endurance by 127, allowing 12,700,000 settings updates (minimum). The smallest EEPROM chip needed is 24c128, and a 24c256 may be substituted.
The user interface incorporates a VelociRotor 6 Dial Panel plus a VelociRotor 9H to implement the knobs. The 320x240 color display is mechanically mounted on the 6 dial panel, but it is just a pass through connection to the RP2040.
Isolated Power
An optional ADuM1201 digital isolator separates the Teensy4 and the RP2040 power supplies to make software development easier. When development is complete a jumper block replaces the ADuM1201, which joins the power supply busses.
Design Documents
Schematic Diagram | teensyfx_schematic.pdf |
PCB Gerbers | teensyfx_gerbers.zip |
Mechanical | T4 Drone Panel.stl |
Source Code - Teensy4 | teensydrone_teensy4_code.zip |
Source Code - RP2040 | teensydrone_rp2040_code.zip |
Front Panel Module | Six Dial Panel Module |
Navigation Dial Module | VelociBus Modules |
MIDI control
All the audio settings can be controlled via MIDI. The channel used for MIDI control is selectable, or the MIDI control can be disabled entirely leaving manual control only.
The mode is set by a MIDI Program Change message.
MIDI Program | Synth Mode | Description |
0 | Benjolin | Benjolin Mode |
1 | Blippo 1 | Blippo using Oscillator 1 and Oscillator 2 |
2 | Blippo 2 | Blippo using Compare and Oscillator 2 |
3 | Blippo 3 | Blippo using Oscillator 1 and Rungler |
The settings are Continuous Control (CC) messages.
CC | Applies To | Description |
7 | All Modes | The master output volume. This applies to all modes. |
82 | All Modes | Output can be Mono or Stereo. The stereo effect is simulated. Value 0 for mono, nonzero for stereo. |
26 | All Modes | Oscillator 1 base frequency. The frequency is on a log scale, so it can be used as a LFO or audio tones. |
27 | All Modes | Oscillator 2 base frequency. The frequency is on a log scale, so it can be used as a LFO or audio tones. |
20 | All Modes | The amount of frequency modulation from the Blippo sample-and-hold to apply to Oscillator 1. |
23 | All Modes | 'The amount of frequency modulation from the Rungler to apply to Oscillator 1. |
21 | All Modes | The amount of frequency modulation from Oscillator 2 to apply to Oscillator 1. |
24 | All Modes | The amount of frequency modulation from the primary Rungler to apply to Oscillator 2. |
25 | All Modes | The amount of frequency modulation from the secondary Rungler to apply to Oscillator 2. |
22 | All Modes | The amount of frequency modulation from Oscillator 1 to apply to Oscillator 2. |
17 | Benjolin | The amount of Oscillator 1 to include in the audio mix. |
18 | Benjolin | The amount of Oscillator 2 to include in the audio mix. |
16 | Benjolin | The amount of comparator output to include in the audio mix. The comparator input is Oscillator 1 vs. Oscillator 2. |
74 | Benjolin | The Benjolin filter corner frequency. The frequency is on a log scale. |
71 | Benjolin | The Benjolin filter's response level near the corner frequency. |
85 | Benjolin | The amount of rungler output to use for filter frequency modulation. |
86 | Benjolin | The amount of Oscillator 2 to use for filter frequency modulation. |
87 | Benjolin | Applies a constant level to the filter frequency modulation. |
79 | Blippo | The amount of Sample-and-hold output to include in the audio mix. |
89 | Blippo | The amount of the primary Rungler output to include in the audio mix. |
90 | Blippo | The amount of the secondary Rungler output to include in the audio mix. |
76 | Blippo | The corner frequency for one of the Blippo ladder filters. |
77 | Blippo | The corner frequency for one of the Blippo ladder filters. |
75 | Blippo | The Blippo filter's response level near the corner frequency. |
MIDI CV
The oscillators can be modulated with MIDI note on and note off messages. MIDI notes are recognized from all channels, and disabling MIDI control does not disable MIDI CV. Note numbers 64 and above modulate Oscillator 1. Note numbers 63 and below modulate Oscillator 2. Note that this synthesizer is monophonic, so only one note will play at a time.
Build Pictures