Soba

Soba is a modular synthesizer you patch on a canvas. You place modules (oscillators, filters, envelopes, effects) as nodes, draw cables between their jacks, and hear the result as you go. Nothing is wired in advance: the patch is the instrument.

The name comes from the cables. Blender, whose node editor Soba takes after, calls the wires between nodes noodles, and soba are long, fine noodles. In Japanese, soba (傍) also means "beside": an instrument whose patches sit by you and explain themselves.

The Soba window with a patch loaded A patch on the canvas. Cables are colored by what they carry, and light up as signal passes through them.

A node graph, not a rack

Most software modulars imitate hardware: rows of panels, screws, and cables that sag in front of everything. Soba borrows instead from node editors like Blender's. Every module is a rounded card with inputs on its left edge, outputs on its right, and knobs along the bottom. You can put modules anywhere, zoom out to see the whole patch, and zoom in to work on one corner of it.

What it keeps from hardware is the feedback. Cables glow with the signal they carry, so a note becomes a pulse of light running down the wire and an LFO draws its waveform along the cable. Knobs under modulation turn on their own. Oscillators, envelopes, filters and LFOs draw what they're doing on the module itself. You can see a patch working as well as hear it.

Signals

Each cable carries one of three kinds of signal, and takes its color from it:

ColorSignalWhat it carries
BlueAudioSound, from −1 to 1
OrangeControlModulation (CV): envelopes, LFOs, pitch
GreenGateOn or off: a key held down, a clock tick

A cable can also carry up to eight voices at once, which is how Soba plays chords. MIDI doesn't travel on cables: Note In listens to the controller you choose in the toolbar and turns what you play into pitch, gate and velocity. Signal Types and Polyphony cover both in depth.

Modules

There are 44 modules in six categories. A module's header takes its category's color:

CategoryHeaderModules
SourceBlueOscillator, Noise, Drum, Resonator, Sampler, Chopper, Cloud, Audio Input, Note In
FilterTealSVF Filter, Ladder Filter
ModulationOrangeADSR Envelope, LFO, Slope
EffectCyanStereo Delay, Reverb, 3-Band EQ, Distortion, Chorus, Tape, Slicer, Compressor, Vocoder
UtilityGrayClock, VCA, Attenuverter, Mix, Mixer, Sample & Hold, Quantizer, Clock Divider, Logic, Looper, Oscilloscope, Dancer, Step Sequencer, Chord Sequencer, Trigger Sequencer, Arranger, MIDI Monitor
OutputPurpleAudio Output, Link Out

The Module Overview introduces each one.

Where to start

If you're new to modular synthesis, read the Getting Started pages in order:

  1. Installation gets the app running.
  2. Interface Overview shows you around the window.
  3. Your First Patch builds a playable synthesizer from an empty canvas, one cable at a time.
  4. Lessons teach the same ideas inside the app: five short tutorials that show you each move, then wait while you make it.

If you already know your way around a modular, open the 📚 Examples menu, load a patch, and keep the module reference to hand. The recipes explain how each example works, one idea at a time, and the songs are whole pieces that play themselves from the first note to the last.

Under the hood

Soba is written in Rust, with egui for the interface and cpal for audio. The audio engine runs on its own thread and never waits on the interface: edits travel to it over lock-free queues, every buffer is allocated before playback starts, and a test in the build fails if the audio thread ever allocates memory. That is what keeps the sound from glitching while you patch.

The source is on GitHub.