Skip to content

v0.2.0 — the October glow-up

Choose a tag to compare

@github-actions github-actions released this 07 Oct 02:06
· 412 commits to master since this release

The October glow-up. Version 0.1 was built in a three-day sprint in January; it looked finished, but several knobs didn't do what they said. This release makes every knob keep its promise. See it and hear it at https://chaps.dev/projects/modular.

Sound

  • In tune: the oscillator defaults to C4 and is measured within half a cent (it used to play a major sixth sharp).
  • Oscillator v2: tune section, hard sync, through-zero FM, sub-oscillator, up to seven unison voices.
  • Filters: the SVF is rebuilt as a TPT design with log-domain cutoff, a notch output and 1V/oct cutoff CV; a new four-pole ladder filter saturates and is 2× oversampled.
  • Envelope v2: accurate stage times, analog-style curves, velocity.
  • Reverb v2: a modulated feedback delay network; Size and Decay now do what they say.
  • Distortion v2: oversampling, antiderivative anti-aliasing and a real wavefolder.
  • Delay: tape mode (wow, flutter, record-head saturation, tape loss) and tempo sync.
  • Chorus, compressor and EQ quality pass; a real output stage with denormal protection.

Playing

  • Polyphonic cables (up to eight voices) and a Poly MIDI module; poly cables draw as bundles, one strand per voice.
  • Sample-accurate MIDI on the audio thread.
  • Bypass footswitch on every filter and effect (Ctrl+B).
  • Cables show the last few seconds of their signal flowing from output to input (Chevrons, Dots or Comets).

Workflow

  • Opens on First Sound; an Examples menu holds six patches that teach the basics.
  • Undo/redo, a quick-add palette (Space or Tab), copy/paste/duplicate/delete, and right-click menus on modules.
  • Autosave and crash recovery, recent files, and a save prompt before closing.
  • Patches save parameters by name, so older patches keep loading.

Engine

  • The audio thread never allocates, locks or blocks: edits compile into a plan that is swapped in between buffers. A CI test enforces it.
  • An offline renderer (render binary) renders patches to WAV; 832 tests measure pitch, filter response, reverb decay and more.
  • A frame-stepped capture mode (--capture) films the app with its sound in lockstep.