Skip to content

Development Roadmap

Development follows four phases, each validating a critical assumption before the next phase adds complexity.

Goal: Validate that the CY8C29466’s switched-capacitor fabric can produce musically useful self-oscillation, and characterize the clock noise floor.

TaskDetail
PSoC Designer setupInstall toolchain, verify programmer connectivity, build a basic blink project
Bandpass self-oscillationConfigure a biquad bandpass filter at high Q, verify it oscillates at the target frequency
Relaxation oscillatorConfigure integrator + comparator as a relaxation oscillator, measure waveform shape
Pitch trackingSweep the SC clock ratio, measure output frequency, characterize linearity
Clock noise measurementSpectrum analyzer capture of output, identify clock leakage products
Output filteringDesign and test a reconstruction lowpass filter for the SC output
ESP32 I2C controlBasic I2C communication: ESP32 sends a cutoff frequency, PSoC updates its SC clock
MIDI note-onEnd-to-end: USB MIDI note-on → ESP32 → I2C → PSoC analog output

Hardware: One CY8C29466 on a breakout/dev board, one ESP32-S3 DevKitC, bench power supply, oscilloscope.

Exit criteria: A single voice that responds to MIDI notes with a clean analog tone and characterized noise floor.

Goal: Prove that polyphonic voice allocation over I2C works at musical speed, and that multiple SC voices can coexist on a shared bus without interference.

TaskDetail
4-chip I2C busFour CY8C29466 chips with unique addresses on a shared I2C bus
Voice allocationRound-robin and lowest-available allocation in ESP32 firmware
ADSR envelopesPer-voice envelope generation at ~1kHz update rate
Polyphonic playbackPlay 4-note chords from a MIDI keyboard, verify all voices respond independently
Bus timingMeasure I2C transaction timing under load — can all 4 voices update within 5ms?
Audio mixingSum 4 voice outputs through a simple op-amp mixer, evaluate crosstalk
PSoC firmware standardizationSingle firmware image for all voice chips, address set by jumper or boot config

Hardware: Four CY8C29466 breakout boards, ESP32-S3, TCA9548A mux (for evaluation, may not be needed at 4 voices), op-amp summing mixer.

Exit criteria: 4-voice polyphonic operation from a standard MIDI keyboard with clean voice allocation and no audible bus contention artifacts.

Goal: Full MPE-capable polyphonic synthesizer with modulation routing and a designed audio output stage.

TaskDetail
16-voice I2C busTwo 8-voice bus segments via TCA9548A
MPE voice allocationPer-channel voice assignment, zone-aware allocation, voice stealing
Modulation routingLFO → filter cutoff, velocity → VCA + cutoff, aftertouch → resonance, CC74 slide → oscillation mode
Mid-note reconfigurationTopology switching under envelope or CC control, validate glitch-free transitions
Per-voice characterDifferent oscillation modes running simultaneously across the voice pool
Audio output stageDesigned output board: per-voice outs (for Eurorack/modular use) + stereo mix bus
Panel UIParameter display, patch selection, basic editing interface
Preset storagePatch memory in ESP32 NVS or SD card

Hardware: Custom voice board PCB (4 CY8C29466 per board, 4 boards), ESP32-S3, output stage PCB, front panel.

Exit criteria: A playable 16-voice MPE synthesizer with preset storage and a finished audio output stage.

Goal: Production form factor, expansion architecture, and Funmaker 555 integration.

TaskDetail
Expansion connectorsHardware headers for additional voice boards (beyond 16 voices)
Funmaker 555 integrationTOS divider input, shared Leslie routing, ESP-to-ESP communication
Form factorStandalone desktop enclosure or rack-mount; 555-compatible mounting option
MIDI 2.0 investigationEvaluate MIDI 2.0 property exchange for richer controller communication
Documentation and schematicsComplete build documentation for reproducibility

Exit criteria: A finished instrument with a defined form factor and documented build process.