Skip to content
NoisyVolt
NoisyVolt

music electronics make code

  • Build
  • Play
  • Watch
  • Listen
NoisyVolt

music electronics make code

Teensy Synth

andy, April 29, 2026

A classic subtractive synth

  • 2 VCOs
  • Mixer
  • LFO
  • ADSR x2
  • VCF
  • VCA

Why Teensy 4.0 is Great for This

The Teensy 4.0 has a 600MHz ARM Cortex-M7 processor and the Teensy Audio Library which provides hardware-accelerated DSP — it’s practically designed for synthesizers.

Hardware You’ll Need

Teensy 4.0 + Teensy Audio Shield (Rev D) — the shield gives you a proper 16-bit stereo codec (SGTL5000), headphone amp, and line out.

Analog Inputs for Knobs/Switches:

  • Teensy 4.0 has 14 analog inputs (A0–A13)
  • For your module count you’ll need more — use a 74HC4051 or CD4067 analog multiplexer (8:1 or 16:1) to expand to 32–64+ inputs
  • Standard 10kΩ linear potentiometers for all knobs
  • Toggle switches or momentary buttons for on/off functions

Rough knob count:

ModuleKnobs/Controls
VCO × 2Tune, Fine, Octave, Waveform select = ~8
MixerLevel × 2, Pan = ~3
LFORate, Depth, Waveform = ~3
ADSR × 2Attack, Decay, Sustain, Release = ~8
VCFCutoff, Resonance, Env Amount, KBD track = ~4
VCALevel = ~1
Total~27 controls

You’d need ~2× CD4067 (16-channel mux) chips to handle all of these.


Software Architecture (Teensy Audio Library)

The Audio Library uses a patch-cable style object graph — you wire objects together in code exactly like a real synth:

cpp

#include <Audio.h>

// VCOs
AudioSynthWaveform       vco1;
AudioSynthWaveform       vco2;

// Mixer (combines VCOs)
AudioMixer4              mixer;

// LFO
AudioSynthWaveformSineHires lfo;

// VCF (State Variable Filter)
AudioFilterStateVariable vcf;

// VCA (via amplifier with envelope control)
AudioEffectEnvelope      adsr1;   // for VCF
AudioEffectEnvelope      adsr2;   // for VCA
AudioAmplifier           vca;

// Output
AudioOutputI2S           audioOut;
AudioControlSGTL5000     sgtlCodec;

// Patch cables
AudioConnection patchVCO1(vco1, 0, mixer, 0);
AudioConnection patchVCO2(vco2, 0, mixer, 1);
AudioConnection patchMix(mixer, 0, adsr1, 0);   // ADSR1 on audio path
AudioConnection patchADSR1(adsr1, 0, vcf, 0);
AudioConnection patchVCF(vcf, 0, vca, 0);        // lowpass out
AudioConnection patchVCA(vca, 0, audioOut, 0);

The multiplexed knob reading then maps to .frequency(), .amplitude(), .resonance(), .attack() etc. calls on each object.


Reading Multiplexed Knobs

cpp

// Example with CD4067 (16-ch mux) on SPI/digital pins
int readMux(int channel) {
    // Set S0–S3 select pins
    digitalWrite(S0, channel & 1);
    digitalWrite(S1, (channel >> 1) & 1);
    digitalWrite(S2, (channel >> 2) & 1);
    digitalWrite(S3, (channel >> 3) & 1);
    delayMicroseconds(5);
    return analogRead(MUX_SIG_PIN);  // 0–1023
}

Key Considerations

  • MIDI input — add a 5-pin DIN MIDI jack or USB-MIDI (built into Teensy) for note control
  • Power — pots + Teensy + audio shield runs fine from USB 5V; use decoupling caps near mux chips
  • Panel — design a front panel in something like Front Panel Designer or laser-cut acrylic
  • Polyphony — you could extend this to 4–8 voices given the Teensy 4.0’s CPU headroom
  • Audio memory — call AudioMemory(20) in setup; increase if you get clicks

Good Starting Points

  • Teensy Audio System Design Tool — drag-and-drop patch graph generator at https://www.pjrc.com/teensy/gui/
  • Teensy Forum synth projects — PJRC forums have many complete DIY synth builds to reference
  • Look at the Ambika and Mutable Instruments open-source designs for panel layout inspiration

Build

Post navigation

Previous post

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Teensy Synth
  • Enclosure Concept
  • My Workflow
  • The Thin Wall Sounds
  • Insomnia

Archives

  • April 2026
  • March 2026
Listen Watch Read Reference
©2026 NoisyVolt | WordPress Theme by SuperbThemes

Powered by
►
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
►
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
►
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
►
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
►
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by