Skip to content

v0.6.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 06:58
· 9 commits to main since this release

transit v0.6.0

Known regression (2026-11-02): some VST3 plug-in editors do not open in this build. A VST3 view that reports its size only after it is attached is refused with "zero size" in the log (#295). Fixed in v0.6.1, which is otherwise this release; download that instead. This release stays marked as a pre-release for that reason only.

This is the instruments release. transit is alpha-quality software and the session format may still change, so back up anything you care about.

v0.5.0 shipped the Macro Oscillator (24 models, concert pitch, 1 to 16 voices with a note-to-macro mapping), clip tools and fades, browser preview, Touch mode, the Info panel, editor windows that follow the main window, Linux plug-in editors and disk-backed long takes (v0.5.0 notes). What is new here: two Breaking changes (twelve inherited effects and the Subtractive Synth are removed), racks and a MIDI effect slot, the ported instruments and effects (Resonator, Modal Voice and Texture Synth; Texture, Time Stretcher, Cross Modulator and Tuner; the Random Sequencer), take lanes, the Filter insert with note-triggered envelopes, System Audio input, and an opt-in to render the aux and bus tail through the render graph.

Highlights

  • Breaking: twelve inherited built-in effects are gone. A session that used one opens with the slot emptied, and the load report names it.
    Pitch Shifter (the two-tap one), Drum Synth, Channel Strip, Maximizer, De-Esser, Rectifier, Lo-Fi, Time Shift, Mod Delay, Chorus, Flanger and Phaser are removed, with their panels and help. transit is alpha software, and keeping a user base on devices it will scrap is worse than breaking now. A session saved with one opens with that slot emptied: the device's settings, and the MIDI mappings, automation lanes and rack macro targets that pointed at it, are dropped, the load report lists each track, slot and device by name, and the status line reads "N insert(s) used retired built-in effects and were removed". The session opens as modified so the removal shows on save; nothing else on the track changes. A track whose instrument was the Drum Synth keeps its clips but has no instrument until you pick one. Replacements: the Macro Oscillator's drum models for the Drum Synth, the Compressor in limiter mode for the Maximizer, the Filter and Texture inserts and the Time Stretcher (#199) for the modulation and pitch effects. Stage 2, as each replacement lands (separate issues): Compressor/Limiter and Expander/Gate (a transit dynamics section), EQ 7-Band and EQ 1-Band (the Pro EQ, #233), Room and Plate Reverb (a transit or ported reverb), Saturator and Gain; they stay untouched until then (#264, ADR 0040).
  • Breaking: the Subtractive Synth is gone and the Macro Oscillator is the default instrument. Old sessions get a Macro Oscillator in its place, at a lowered level.
    A new instrument track now carries the Macro Oscillator (default model, 8 voices). The built-in Subtractive Synth is removed, with its panel, presets and help. A session saved with it opens with a Macro Oscillator in its place: the old synth's parameters, and the MIDI mappings, automation lanes and rack macro targets that pointed at them, are dropped, the load report says what was dropped, and the status line reads "N track(s) used the retired Subtractive Synth and now carry the Macro Oscillator". The session opens as modified so the substitution shows on save. Notes, clips, the track's mixer settings, racks and inserts are untouched, but the track sounds different until you pick a patch. Levels may differ: the Macro Oscillator plays louder than the old synth did, so substituted tracks get a lowered level (-19.5 dB) to land near the old loudness; adjust it to taste (#234, ADR 0033).
  • Racks. Group tracks that play several instruments from one MIDI input, each in its own key and velocity zone, with eight macros.
    A rack is a group that sums its member tracks and also plays every instrument in it from its own MIDI: select the tracks and choose Group into Rack, then turn on I to play it live. Each instrument has a key zone and a velocity zone with a fade at each edge, so a note goes to every member whose zones contain it, softer inside a fade. The rack's eight macro knobs map to parameters of the instruments and effects in the rack, each mapping with a range and a curve, MIDI Learn on the knob, and a lane in the automation picker (#197, #239, ADR 0034).
  • MIDI effect slot. Up to eight MIDI effects ahead of an instrument: Transpose, Velocity and the Random Sequencer.
    The MIDI effects sit in the device chain above the instrument, in order and each one bypassable (right-click to move one up or down); every event on its way to the instrument passes through them: live input, clips and controllers. Adding, removing, moving or bypassing an effect ends the notes it is playing, so none is left hanging, and the slot never refuses a note release, even at extreme generator rates (#201, #278, ADR 0036).
  • Take lanes. See the stacked takes, choose the one that plays, flatten.
    After cycle recording (or recording over clips) a track's takes show as lanes under it, newest on top, with the newest take playing, and the rest of the track keeps playing (before, a cycle recording left the rest of the track silent, and an audio cycle recording cut away the clip under the loop). Click a take's clip in its lane to play that take there, or its label to play it wherever it was recorded; choosing a longer take back makes it whole again. Flatten Takes keeps what plays and removes the other takes; Delete Take removes a take that does not play. The T button on the track header and the track menu show or hide the lanes. Each change is one undo step, and a frozen track refuses them (#25, ADR 0039).
    Sessions recorded with an earlier build now restore their cycle laps as numbered takes on open, with the newest playing and one Migrate takes undo step; frozen tracks stay unchanged and are reported. A hand-made arrangement whose active playlist holds a single trimmed or re-placed variant over a clip on an earlier playlist is read the same way and migrates too; the step is one undo away and the load report names the track (#249).
  • System Audio input: record what the computer plays. On Windows through WASAPI loopback; on Linux the output's monitor.
    Audio Devices > I/O paths has a System Audio switch: on Windows it captures the output you choose (the system default unless you pick one) through WASAPI loopback, whatever driver the session uses, and audio tracks can pick System Audio as their input to monitor and record it, with no cable or virtual device. The capture runs at that output's rate and clock, converted to the session's and trimmed for drift; Audio Devices shows what it captures, the latency it adds, the drift and a level meter, and says why when Windows refuses (the output is open in exclusive mode). On Linux an output's PipeWire or PulseAudio monitor is named "System Audio (monitor of ...)". The clip is not lined up with the rest of the session, so move it into place by ear; a 5.1 or 7.1 output is folded to its front pair. The drift estimate can read tens of parts per million off on a few device classes (K100 to K102 in the known issues). You are responsible for the rights to what you record (#268).
  • Resonator instrument. Six physical-modeling voices, a port of Émilie Gillet's resonator firmware (MIT).
    A new built-in instrument, Resonator, beside the Macro Oscillator in the instrument picker: a port of Émilie Gillet's resonator firmware (MIT), bit-exact against her C++ (at 48 kHz the instrument plays the port's samples unchanged). Six models (Modal, Sympathetic Strings, Inharmonic String, FM Voice, Chord Strings, String and Reverb) with Structure, Brightness, Damping and Position; each note strikes the next of 1, 2 or 4 voices with the module's internal exciter while the others ring on (the module takes one strike per 24-frame block, so a chord's notes strike 0.5 ms apart); there is no gate, so note-offs and the sustain pedal leave a voice ringing. Velocity darkens Brightness by an Accent amount, Spread sets how far apart the two outputs sit (the module's odd and even voices), and the Macro Oscillator's shaper and modulation matrix are there too, transit's addition and off by default. The firmware runs at 48 kHz; at other session rates its output is converted at the edge and the delay (35 samples at 44.1 kHz, 70 at 96 kHz) goes to delay compensation. An instrument cannot take a track's audio as its exciter yet. Presets Struck Bell, Sympathetic Harp, Steel Pluck, FM Mallet, Strummed Chords and Ambient Pluck (#198, ADR 0033).
  • Modal Voice instrument. Bowed, blown and struck modal sounds, a port of Émilie Gillet's modal firmware (MIT).
    A new built-in instrument, Modal Voice, after the Resonator in the instrument picker: a port of Émilie Gillet's modal synthesizer firmware (MIT), bit-exact against her C++ (in a 32 kHz session the instrument plays the port's samples unchanged). One voice with a real gate: a key strikes and holds it, the bow and the blow sound under the Contour envelope while it is up, a new note while one is held strikes again, letting go returns legato to the newest held key, and the sustain pedal holds the gate. The exciters (Bow, Blow with its reed-pipe model, Strike with nine samples, a mallet, a plectrum or bouncing particles) feed one of three resonators (Modal, String, Chord Strings) or the module's hidden FM Pair voice; Geometry, Brightness, Damping and Position shape them and Space sets the stereo spread and the reverb (frozen at the top). Velocity is the module's strength input, through its own accent curve. The Macro Oscillator's shaper and modulation matrix are there too, transit's addition and off by default (Aftertouch to Strength plays the module's pressure input). The firmware runs at 32 kHz; its output is converted to the session rate and the delay (49 samples at 44.1 kHz, 53 at 48 kHz, 105 at 96 kHz) goes to delay compensation. Presets Bowed Glass, Breath Pipe, Struck Bar, Temple Bell, Plucked Wire and Noise Pad (#198, ADR 0033).
  • Texture Synth instrument. Wavetables and grains, the synth of Émilie Gillet's texture firmware (MIT).
    A new built-in instrument, Texture Synth, after the Resonator in the instrument picker: the synth of Émilie Gillet's texture synthesizer firmware (MIT), the Texture insert's instrument form, bit-exact against her C++ (at 48 kHz the instrument plays the port's samples unchanged at every quality). A wavetable oscillator (Time scans the waves, Bank picks one of 12 banks) and grains of the same wavetables (size, shape, pitch and randomness), mixed by Dry/Wet, into the module's reverb. It plays one pitch at a time with up to 32 grains: a key sets the pitch and holds the module's seed gate, so Density gives a steady stream of grains while the key is held, one grain per note at the center, or a random stream; Latch turns the notes into a clock that Density divides. Freeze holds the cloud and is saved with the session; Seed and Freeze map to MIDI controls like any parameter. Velocity sets the level. It runs at the module's 48 kHz in 12-frame blocks, converted at other session rates with the latency compensated, and has the Macro Oscillator's shaper and matrix (the shaper's amp envelope gates the oscillator, which the module never closes). Presets Grain Pad, Grain Pulse, Frozen Cloud and Tape Keys (#241, ADR 0033).
  • Texture insert. Clouds of grains and tape delay, a port of Émilie Gillet's texture firmware (MIT).
    A new built-in insert effect, Texture: a port of Émilie Gillet's texture synthesizer firmware (MIT), bit-exact against her C++ at every buffer quality. It records its input and plays it back as clouds of grains (time, size, shape and pitch, each with its own randomness; density, feedback, dry/wet, reverb), freezes and saves its frozen recording as a WAV with the session and autosave (the WAV restores alone; an optional companion restores the exact continuation, and the load report says when that continuation was unavailable), seeds grains from a button or an automatable trigger, and turns into a tape delay with Size at the top. Each quality (Digital, Vintage Digital, Clean Tape, Dirty Tape) runs at the module's own rate, converted at the device's edges, so a 48 kHz session with Digital or Clean Tape hears the firmware's samples unchanged; the latency goes to delay compensation. Buffer 4 to 8 seconds; the module's automatic input gain on by default. Presets Granular Cloud, Frozen Pad and Tape Delay (#241, ADR 0033).
  • Time Stretcher insert. Pitch and time apart, a port of Émilie Gillet's texture firmware (MIT).
    A new built-in insert effect, Time Stretcher: the pitch shifter and time stretcher of Émilie Gillet's texture processor firmware (MIT), bit-exact against her C++ at every buffer quality. Two overlapping windows read its recording at the pitch you set (two octaves either way, with cents), each placed where it lines up best with the last, so pitch moves without speed and Position moves through the recording without pitch: freeze it and scrub, or trigger it to restart from the oldest audio. Window, Diffusion, Tone, Feedback, Reverb and Dry/Wet as on the module; four buffer qualities (1 to 7 seconds). It runs at the module's 32 kHz behind the Texture's converters at any session rate, with about 3.1 ms of latency for delay compensation. The inherited two-tap Pitch Shifter was retired in the same release (ADR 0040), so the Time Stretcher is the pitch shifter now. Presets Octave Shimmer, Sub Doubler and Stretch Pad (#199, ADR 0033).
  • Cross Modulator insert. Ring mod, folding and a vocoder, a port of Émilie Gillet's meta-modulator firmware (MIT).
    A new built-in insert effect, Cross Modulator: a port of Émilie Gillet's meta-modulator firmware (MIT), bit-exact against her C++. It combines the track with a second signal from the sidechain key picker (or its own oscillator when no key is set) by crossfade, cross-folding, diode or digital ring modulation, XOR or comparison, morphing between neighbors, or by a 20-band vocoder whose release grows to a freeze; a swap makes the key the modulator, for vocoding a synth from a voice. The firmware runs at its own 96 kHz, converted at the device's edges, so a 96 kHz session hears it unchanged; the latency goes to delay compensation. Presets Ring Bell, Vocoder and XOR Grit (#200, ADR 0033).
  • Tuner insert. Tune a hardware synth or a guitar without loading another program.
    A new built-in insert, Tuner, for tuning a hardware synth or a guitar without loading another program: put it on an audio track or on an External Instrument's return and play a note. It shows the note with its octave, a cents meter (green within 3 cents), the frequency and a reference pitch from 415 to 466 Hz (440 by default), holds the last reading with Hold, and says "No signal" below -50 dBFS or when it cannot hear a clear pitch. The audio passes through bit for bit with no latency; the pitch is found on the UI thread from a tap the mix fills only while the panel is open (#266).
  • Filter insert with note-triggered envelopes. A resonant filter whose ADSR plays from the track's notes, after any instrument.
    A new built-in insert, Filter: a resonant low, high, band or notch filter (12 or 24 dB, with drive) whose ADSR plays from the track's notes after the MIDI effects, at the note's exact sample, paraphonically (one envelope for all held notes, Every note or Legato retrigger), plus an LFO (free or tempo-synced), an envelope follower, key tracking and an optional amp envelope. It works after any instrument, built-in or hosted. Presets Pluck, Wah and Paraphonic Brass (#242, ADR 0038).
  • Macro Oscillator: per-voice shaper and modulation matrix. Envelopes, a filter and two LFOs per voice, with a 16-row matrix; off by default.
    An optional section after each voice's low-pass gate, transit's addition and off by default: an amp envelope with velocity, a low, band or high pass filter (12 or 24 dB, drive, key tracking) with its own envelope, and two LFOs (six shapes, free or tempo-synced and locked to the song position, retrigger or free-running, fade-in). A 16-row modulation matrix routes LFOs, envelopes, velocity, key, release velocity, aftertouch, poly aftertouch, the mod wheel, pitch bend, a per-note random value and, on a rack member, the rack's eight macros to pitch, the macros, decay, level, cutoff, resonance, the filter envelope amount, the LFOs' rates and amounts and pan, each row with a curve and a via source; every row is an automation target. Breaking / Migration: the note-to-macro grid is gone: sessions and presets that used it open with its depths as matrix rows and sound the same, bit for bit (a session that never used it opens unmodified). A session saved by this version loses its matrix rows and shaper settings when opened in v0.5.x, which ignores the parameters it does not know, and the old grid's depths are not there either (#243, ADR 0033).
    • Re-striking the note that is still sounding on the six-op FM models restarts it cleanly instead of layering the old note's release under the new one, which could sound hollow for up to 90 ms with the pitch jumping an octave (heard on loops that replay a note ending at the loop end) (#263).
    • Turning the shaper on or off now applies to held notes at once, with a short crossfade and no new attack; released notes keep the path they had (#262).
  • Random Sequencer MIDI effect. Random gates and pitches on the tempo grid, a port of Émilie Gillet's random firmware (MIT).
    A new built-in MIDI effect, Random Sequencer: a port of Émilie Gillet's random sampler firmware (MIT), bit-exact against her C++. Ahead of the instrument it plays random gates on the song's tempo grid (Rate from 4/1 to 1/64 with dotted and triplet values; six models from a coin toss to drum patterns and clock divisions; jitter; gate lengths that are the notes' lengths) with pitches drawn by spread and bias through one of seven scales (the module's six and Chromatic) at a root and octave, quantized by Steps, and velocities from a fourth random channel. Deja Vu loops 1 to 16 decisions, exactly across its middle and shuffled above; Freeze locks the loop. A latched Seed restarts the sequence at every play, locate and loop, so a passage plays the same notes each time; the notes are the same at any buffer size. Presets Drifting Melody, Locked Loop and Sparse Random Bass (#202, ADR 0033).

Engine

  • The aux and bus tail can render through the render graph (the task graph) when you start transit with TRANSIT_RENDER_TAIL=1 (#174 slice 2). It is opt-in: the serial tail stays the default until the paired measurement on the reference hardware (K88, K105).

Fixes

  • A note no longer sticks when a sequencer restarts a key inside one render window with the Macro Oscillator's shaper on (#290).

  • The MIDI effect slot never refuses a note release: a full event buffer drops the newest pending note start instead, and recovers after a flood (#278).

  • Bypassed built-in effects now receive every parameter change while idle (#219).

  • Fresh built-ins start at their stored session parameters in bounces and live playback, removing the initial sweep from defaults (#280).

  • The automation lane picker now offers MIDI effect parameters and rack macros, with matching lane labels and parameter ranges (#239).

  • In the automation lane picker, pressing Enter in the search box now also picks the first matching Volume, Pan or send entry; before, only device parameters were reachable that way (#239).

  • File > Session Settings > Automation now offers Touch return ramp (Logic's Ramp Time), saved per project from 0 to 2000 ms with the existing 200 ms default (#223).

  • Plug-in editors: refused or failed CLAP and VST3 opens log the plug-in name and reason; plug-ins with no editor have a disabled Edit button (#289).

  • Synced bar-length LFO divisions in the Filter and Macro Oscillator stay aligned with bar lines after meter changes (#253).

  • Tempo and meter changes take effect at the same sample in live playback and offline renders, including when they fall inside a device block (#254).

  • Bounces, freeze and exports follow plug-in latency changes during the render, removing the lasting timing shift after Texture Quality or compressor lookahead automation (#251).

  • Removing or replacing an instrument now releases retained note-reading inserts such as Filter and clears their delayed notes, preventing stuck envelopes. Re-picking the same instrument, loading a channel-strip preset and opening a session into a running runtime now replace the instrument instance, which releases its note readers, consistent with inserts (#275).

  • Bypassed, inactive or failed note-reading inserts now lift the sustain pedal when releasing, so the Filter's next note closes on its note-off (#276).

  • The Filter's note-triggered envelopes now follow the latency of its instrument and preceding inserts, including latency changes and notes carried across audio blocks (#247).

  • A note-off that lands on its own note-on's sample (a zero-length note in a sequenced or imported clip, or a same-sample retrigger behind a moved release) is now heard one sample after the note-on on every path, offline render included, so no note is zero-length (#257). The diagnostics strip rows count the skips a strip takes before its first send (#256).

Known issues

The full list is in docs/known-issues/README.md. The ones you are most likely to meet:

  • K88: the aux and bus tail on the render graph is opt-in (TRANSIT_RENDER_TAIL=1); the serial tail is the default.
  • K107: a plug-in editor that finishes opening after the 30 second timeout can open an untracked window; a late failure logs its reason after the timeout warning.
  • K105: with the tail off, a plan close to the 1 GiB prepared_bytes limit that an earlier build admitted can be rejected with a resource-limit error.
  • #292: a note-off that arrives after the new note-on for the same key (a near-zero-length restrike) ends the new note.
  • KC6: on Linux through ALSA under PipeWire the buffer readout shows the ALSA buffer while PipeWire runs transit at about a quarter of it (#230).

Checksums

SHA-256 of each asset:

ed38280a0d623dd40eccc433a36d058406970b5b7331e164025135e06d5084b1 *transit-0.6.0-linux-x86_64.AppImage
4a208044a4b5cdcf0aed506d909ded8b1e8fcf50e9abfc03d83d245b40e541ad *transit-0.6.0-linux-x86_64.AppImage.zsync
b0947c8b813d0c698610633c1ef00506edb320ba384fa5e2c7989de222ef50b2 *transit-0.6.0-linux-x86_64.deb
3198f3560de3bff03e9fd56a45a458c7053ba1b969d909dbff5cd0c2132d94a0 *transit-0.6.0-linux-x86_64.rpm
e91c3d9087fd83138d06a6f80a5bcfaccaab4cc74a4069ea93b63e0db048fef1 *transit-v0.6.0-linux-x86_64.tar.gz
e99a701a031647edd3fe033e4ff5b1de5ac0547aa4f02514be33236685755adb *transit-v0.6.0-macos-arm64.dmg
a37a796483a4b563a218f408aa2a4f2481dad1c3e4aefa44c7fd49b8ceabe23d *transit-v0.6.0-macos-arm64.tar.gz
47c14a7055a5b0a4a31ac221e532c12efba6946b49cff0ffc44ef721399c91f1 *transit-v0.6.0-windows-x86_64.msi
a699cdb253083340ef80cbe640096764f686f0d195852833fa8646898e5b6ad8 *transit-v0.6.0-windows-x86_64.zip