Skip to content

Releases

v0.6.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 11:57

transit v0.6.2

This is a patch for Linux plug-in editors; Windows and macOS builds are v0.6.1 with a new version number.

Fixes

  • Linux: a plug-in editor that asks the host to map its window (the XEmbed convention GTK-based editors use) now appears; before, the window opened and stayed blank (#289). Editors that map themselves keep direct keyboard focus as before.
  • Linux: one and five seconds after an embedded editor opens, the log carries an editor surface: line (window, visual, children, timers, events) and a warning when nothing is mapped; paste these when reporting a blank editor.

See the v0.6.0 release notes for the release contents.

Known issues

See known issues. Row K108 (the blank-editor row) says what to paste.

Checksums

SHA-256:

4f53a9cdcc5df2667c476558ef1e0907d82690bb506e3c837812b6f323603bba *transit-0.6.2-linux-x86_64.AppImage
5f8258f6a7b46cd65cf144606fa4c8474b901409b428f5d7b54989d9caa57da2 *transit-0.6.2-linux-x86_64.AppImage.zsync
1bf0e8024b8828cfee1eb78a1c46ad7755640926a3adbdc0491dace10cb4b2cf *transit-0.6.2-linux-x86_64.deb
d2b2c344fc2ed0d353af5161e997fd4831ad6eb0a4f97112b0afbcd3357614bf *transit-0.6.2-linux-x86_64.rpm
1140b8970038cacc7c15e7208fe82c6939c373da487c31f55bb9d9d9607797e9 *transit-v0.6.2-linux-x86_64.tar.gz
2b8c19bd19dc672fa76a9527bd8811dde7a11f3d61f757209b0f5db84ee3941a *transit-v0.6.2-macos-arm64.dmg
08b566d023ed9bdccdd7156885d13f1dad177be7f8d02dcb00ca5ae03b8e01ab *transit-v0.6.2-macos-arm64.tar.gz
4ff9233556c8f7a659d958063634b05430fb6e464e6c7e36e73c7d6ea861115f *transit-v0.6.2-windows-x86_64.msi
6de5d51bfc7ea16b681d1cadf45bd50551900f5ad509edf53a9585f02d6fb1d4 *transit-v0.6.2-windows-x86_64.zip

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 02 Nov 14:15

transit v0.6.1

This is a hotfix for v0.6.0.

Fixes

  • A VST3 plug-in whose editor only knows its size once it is attached opens again; v0.6.0 refused it as "zero size" (#295).

See the v0.6.0 release notes for the release contents.

Known issues

See known issues.

Checksums

SHA-256:

91942415c0a2ce8b95386a3b43bd1b44cd8a9a7c00cd89982415de4b4df6ce00 *transit-0.6.1-linux-x86_64.AppImage
3b687357989a678eb47c061aba7d7bd43ab4a849936cf1887c36f34f2b47619f *transit-0.6.1-linux-x86_64.AppImage.zsync
748b1fef45ac9bd6d5b065edf2ca347d73fe2a7309d8527aeb3a0f052bb36bd7 *transit-0.6.1-linux-x86_64.deb
5315b52ced876c269ff560775ec6d7e704e2016b353329298fbca8320931d2f9 *transit-0.6.1-linux-x86_64.rpm
6e5420c1635e478ffc2d2655ba6e252fe36063dc89c3e4a08d0c15d9ad343559 *transit-v0.6.1-linux-x86_64.tar.gz
54e3753d906e91d5c43c2fc44d38fe3c94b09f4ffae97c0eeed89c4f95f96eed *transit-v0.6.1-macos-arm64.dmg
c054c31930c265cdefc32988a9bfb92f006dd74da3d4646ad0f77fbb824b5423 *transit-v0.6.1-macos-arm64.tar.gz
67d3483e6ce2c7742b6416a4d14b23739394a276f4753cce5ce09b819de9b5f4 *transit-v0.6.1-windows-x86_64.msi
820f13853176bfb2b49125b52d73ff872735df2267229dd14db8191054676084 *transit-v0.6.1-windows-x86_64.zip

v0.6.0

v0.6.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 06:58

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 leg...
Read more

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 23:56

transit v0.5.1

This is a point release shortly after v0.5.0, for Linux. It makes the native JACK backend work under PipeWire without pw-jack, and makes the Audio Devices window tell the truth about buffers there. Windows and macOS get only the load readout fix. transit is alpha-quality software and the session format may still change, so back up anything you care about.

Highlights

  • Native JACK connects under PipeWire without pw-jack. When PipeWire's server is running, transit looks for PipeWire's own JACK library first, so Auto reaches the server on Ubuntu and Debian without starting transit as pw-jack transit. Audio Devices shows which library is in use, or every library tried and why each failed. pw-jack transit still works (#230).
  • Audio Devices shows the buffer you really get on Linux. Through ALSA under PipeWire, the buffer is split into periods and PipeWire runs transit at the period, so the window now shows buffer, period and the server's quantum, labels each size with its period, and says that PipeWire's quantum sets the period. The latency wording is about the buffer plus the quantum, and the troubleshooting page explains buffer versus period (#230).
  • The buffer picker follows the server. Under PipeWire it offers only sizes the server allows, one range serves both the list and opening the device, and a saved size the device no longer offers opens at the nearest one it does instead of locking the control (#230).
  • The load readout ignores a stalled callback. One stalled audio callback no longer skews the load figure in the Callback Telemetry window (#230).

Fixes

  • Tests: a held-source test in the render-task graph no longer lets its deadline pass before the worker wakes; it misses the source by the deterministic deadline instead of a 5 ms wait. No user-facing change (E66).

Known issues

Full list: docs/known-issues.

  • K88: mixer strips render on the render workers by default, and TRANSIT_RENDER_POOL=0 renders them serially on the audio thread. A session with sidechain keys renders through the task graph by default, and TRANSIT_RENDER_GRAPH=0 is its opt-out. The auxes, busses and masters still render serially on the audio thread after the strips until slice 2 of #174.
  • K89: a plug-in that hangs inside a render worker keeps its track silent and refuses session changes until you close the device or Reconnect. The hung track shows the Unresponsive marker after two seconds, and the engine cannot say which plug-in on that track hangs.
  • K90: a plug-in that never returns on the host thread cannot be stopped. Give up quarantines it, but its editor window stays as a ghost until transit exits, so choose Later first and do not End Task the ghost.
  • K91: fixed for PCM takes at the session's rate (#187, slice 1). Takes at another rate, or in a compressed format, that are too long to decode are still refused, with a message and an entry under unplaced takes.
  • K92: Linux editor windows do not speak XEmbed, so keyboard focus can stay with the main window or nowhere until you click into the plug-in's field. Keyboard shortcuts typed into an editor are not forwarded to transit.
  • K93: Linux editor windows keep the scale they opened with, and they do not rescale between monitors with different scaling. A native Wayland surface is later work.
  • K94: Linux editor windows have no header strip and no transient-for link to the main window, so with Follow transit on they hide and return with a minimized main window, and activating transit does not lift them above it on every window manager. The strip and the link are slice 2 of #147.
  • K95: Macro Oscillator, raising Voices from 1 while several keys are held legato leaves them all on voice 0; replaying one of the older held keys drops the others there. Reachable only by changing the voice count mid-phrase from mono (#196).
  • #184: one recording on an overloaded machine showed a 4.7 s stretch of exact zeros in both armed inputs; a one-hour recording under heavier compile load did not reproduce it. Input stalls are not yet counted or marked on the take. Please report it if you see it.
  • #215: items 1 and 3 remain. The scheduling gate's deterministic seam cannot produce every miss outcome yet, and the testing feature's coverage of the fingerprint seam is incomplete.
  • #219: a bypassed insert receives no parameter values, and a Save As right after a skipped block can still read the previous value.
  • KC5: Linux, native JACK under PipeWire: connecting without pw-jack is verified only where PipeWire's JACK library is not blocked by JACK 2's; it needs a tester on Ubuntu 24.04 with both jackd2 and pipewire-jack installed. If the Audio Devices window says another libjack was already loaded, start transit as pw-jack transit.
  • KC6: Linux, ALSA under PipeWire: the buffer you choose is the ALSA buffer, split into four periods, so PipeWire runs transit at about a quarter of it; the window shows the buffer, the period and the server's quantum. Making the chosen size the period itself is an open question.
  • KC7: Linux: the window recognizes PipeWire's ALSA default device only where pipewire-alsa's default configuration file is installed in the standard place; another route to PipeWire shows the plain buffer list.
  • Open items: compressed formats, recording straight into a disk-backed source and the UI setting for long takes are slice 2 of #187. Clip tools slices 2 and 3 are open in #181, and the range gesture that Crop and the range tools need is #224. More help catalog areas follow in #178. The return time for Touch mode is a constant 0.2 s until #223 makes it a setting. Browser preview converts sample rates with linear interpolation, so a 96 kHz file previewed at 48 kHz can alias; #225 proposes a streaming sinc stage to bring preview to import quality, and it also tracks a cue output path for preview.

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.5.1-windows-x86_64.msi
Windows (x86_64) portable transit-v0.5.1-windows-x86_64.zip
macOS (Apple silicon) transit-v0.5.1-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.5.1-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.5.1-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.5.1-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.5.1-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.5.1-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage for delta updates. Every archive carries audio-bench, which measures your interface (round trip, jitter, xruns).

All builds are unsigned. On Windows, SmartScreen shows "More info", then "Run anyway"; the Windows build includes native WASAPI and native ASIO. The macOS app is ad-hoc signed and not notarized; if macOS blocks it, run xattr -dr com.apple.quarantine /Applications/transit.app, or right-click it and choose Open. On Linux, make the AppImage executable (chmod +x) and run it, or install the .deb or .rpm with your package manager; none of the Linux packages are signed. The Linux builds carry the native JACK backend (#55): it talks to a running JACK 2 or PipeWire server (transit never starts one), and Auto prefers it when a server is up, including PipeWire's, whose own JACK library is probed first when its server runs. More Linux reports are wanted in #55: run transit --report and tell us how it went.

Checksums

SHA-256 of each asset:

0e4ba8aa51527a790fc779de58dc42b65ede2c0f677bd0fd72f2e3c9fc0d0fb8 *transit-0.5.1-linux-x86_64.AppImage
3d4d9c340188724882f356f3badf78f0af3b78ef45e96c6bad3319bee7c27882 *transit-0.5.1-linux-x86_64.AppImage.zsync
6055dedafecbeb0d555c4b474d03da46b4a4bb7265e7066be6a9783f91813efb *transit-0.5.1-linux-x86_64.deb
b94db20590462d4a765ec01c1355a48b80e9c763e6639b806117d822eb4c3560 *transit-0.5.1-linux-x86_64.rpm
2de96685c25fa3ab9510c938ca4ee2981d90ef892f79fc0cdf252f13226aa963 *transit-v0.5.1-linux-x86_64.tar.gz
99c616b9e0041c5d971cef9d9f8a18b496086127c6d8efd78515f008c390bfe8 *transit-v0.5.1-macos-arm64.dmg
a5ee96d38be60b8564098c560b81375ae2c8d0889d15e5913dc4a6bb2abf1844 *transit-v0.5.1-macos-arm64.tar.gz
67ef8f7d09568e9329c21054e3138c927b18cac8dd32712cfa706c9b22448bdb *transit-v0.5.1-windows-x86_64.msi
b4cf2e016fd741859c06aa0a055a2b1cb9c50b6f86d55e85a3d76b8c1a69048d *transit-v0.5.1-windows-x86_64.zip

Full changelog

v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 19:43

transit v0.5.0

This is a feature release about a week after v0.4.1. It rounds out clip editing in the arrangement, adds browser preview, an in-app Info panel and Touch mode for automation, adds an Info panel, makes plug-in editor windows follow the main window and reach Linux, keeps long takes on disk, and ships the first built-in instrument, the Macro Oscillator, a port described in ADR 0033. transit is alpha-quality software and the session format may still change, so back up anything you care about.

Highlights

  • Arrange editing: marquee selection, whole-selection drags and clip tools. Press on empty lane space and drag to draw a selection rectangle across tracks; release selects every clip it touches. Shift adds, Ctrl toggles, Escape cancels, and a click still sets the cursor (#217). A move or copy drag previews every clip it carries at its destination; a multi-clip drag keeps each clip on its track, and a single clip may change track (#218). Join (Ctrl+J), Crop (Ctrl+Shift+J), Trim Start and Trim End to the cursor ([ and ]), Nudge with Alt+arrows (Alt+Shift for fine), and Rename and Color are in the clip menu (#181, slice 1). Clip fades follow Logic's look and feel: the top corners of a clip are the fade zones, a fade draws as a dimmed area with its curve line, you bend the curve by dragging it, and dragging a fade across the junction into an overlapping clip makes a crossfade. Fade In, Fade Out and Crossfade lengths and curve are in the clip inspector, and Alt+[ and Alt+] fade to the cursor (#182).
  • Browser preview, Touch mode and the Info panel. The Files tab previews a supported audio file in place, with a play control, a headphone toggle that auto-previews, and a preview volume of its own; a preview stops on another file, on transport start or on Escape (#211). Automation Touch suspends a lane while you hold a control and returns to the lane over 0.2 s on release, following Logic and Ableton (#188). The Info panel (Shift+?) explains the control under the mouse, from a help catalog shared with the docs (#178, slice 1).
  • Plug-in editor windows follow the main window, and Linux gets editors. Editors follow transit: minimize parks them, restore brings them back in place, activating transit brings them to the front, and selecting a plug-in raises its editor without a duplicate. Window > Plug-in Windows Follow transit is on by default, and no OS owner link is set, so the hang isolation of ADR 0018 holds (#173, ADR 0030). VST3 and CLAP plug-in editors now open in X11 windows on Linux, with Wayland through XWayland; this is the first slice of #147, and K92 to K94 list what the Linux windows still lack.
  • Long takes stay on disk. A take over the stream threshold (10 minutes by default) or over the decode limit is placed as one clip that plays from its file, reading ahead of the playhead, with peaks cached beside the file. Takes an older build left unplaced are placed when the session opens. The Callback Telemetry window has a Disk underruns row (#187, slice 1, ADR 0035).
  • The Macro Oscillator, a built-in instrument with a null-test gate against the original. The first built-in instrument is a port of the synthesis family that ADR 0033 describes, MIT-licensed and credited to Émilie Gillet, with her MIT notice in the source, the license file and the About window. It has 24 models under transit's own names, plays at concert pitch (A4 is 440 Hz at every sample rate), and runs from 1 to 16 voices: a new note takes a free voice, then the quietest releasing voice, then the oldest. A note-to-macro mapping puts note and velocity on the model's macro controls (the curves are the clip fades' own), the panel shows a light per voice, factory presets come with it, and the voice count and mapping save with the session. Its gate compares every engine with the original C++ implementation: all 24 engines are bit-identical at the engine level on Windows, Linux and macOS, and the voice level matches the original frame for frame on all three runners (#194, #195, #196, ADR 0033). The C++ comparison is a dev-only crate that no shipped build links. Racks, a MIDI effect slot and a second ported module (a resonator) follow in v0.6.0.

Fixes

  • Tests: an audit of every test on the render-worker, host-thread and backend paths for scheduling or wall-clock dependencies covered 255 tests: 173 are sound, 67 are justified, and 15 were fixed so that held strips wait on the strip they hold, deadlines are far or explicit where a short one decided the outcome, and completion signals replace sleeps. A timing rule in cargo xtask timing now refuses the patterns in CI. No user-facing change (#226, audit table).

  • Tests: the render-pool saturated-pool test that asserted a nonzero peak under the default strip deadline is closed by the same timing rule, which refuses a pool test that sets neither a deadline nor a held worker (#220).

  • Linux: an X11 editor window could be handed out before the server had made it, before the server had finished creating it; creating, resizing and destroying an editor window now waits for the server and, under a window manager, for the frame (E64).

  • Macro Oscillator: the model chooser applies the model you pick, and the panel has one Model label.

Known issues

Full list: docs/known-issues.

  • K88: mixer strips render on the render workers by default, and TRANSIT_RENDER_POOL=0 renders them serially on the audio thread. A session with sidechain keys renders through the task graph by default, and TRANSIT_RENDER_GRAPH=0 is its opt-out. The auxes, busses and masters still render serially on the audio thread after the strips until slice 2 of #174.
  • K89: a plug-in that hangs inside a render worker keeps its track silent and refuses session changes until you close the device or Reconnect. The hung track shows the Unresponsive marker after two seconds, and the engine cannot say which plug-in on that track hangs.
  • K90: a plug-in that never returns on the host thread cannot be stopped. Give up quarantines it, but its editor window stays as a ghost until transit exits, so choose Later first and do not End Task the ghost.
  • K91: fixed for PCM takes at the session's rate (#187, slice 1). Takes at another rate, or in a compressed format, that are too long to decode are still refused, with a message and an entry under unplaced takes.
  • K92: Linux editor windows do not speak XEmbed, so keyboard focus can stay with the main window or nowhere until you click into the plug-in's field. Keyboard shortcuts typed into an editor are not forwarded to transit.
  • K93: Linux editor windows keep the scale they opened with, and they do not rescale between monitors with different scaling. A native Wayland surface is later work.
  • K94: Linux editor windows have no header strip and no transient-for link to the main window, so with Follow transit on they hide and return with a minimized main window, and activating transit does not lift them above it on every window manager. The strip and the link are slice 2 of #147.
  • K95: Macro Oscillator, raising Voices from 1 while several keys are held legato leaves them all on voice 0; replaying one of the older held keys drops the others there. Reachable only by changing the voice count mid-phrase from mono (#196).
  • #184: one recording on an overloaded machine showed a 4.7 s stretch of exact zeros in both armed inputs; a one-hour recording under heavier compile load did not reproduce it. Input stalls are not yet counted or marked on the take. Please report it if you see it.
  • #215: items 1 and 3 remain. The scheduling gate's deterministic seam cannot produce every miss outcome yet, and the testing feature's coverage of the fingerprint seam is incomplete.
  • #219: a bypassed insert receives no parameter values, and a Save As right after a skipped block can still read the previous value.
  • Open items: compressed formats, recording straight into a disk-backed source and the UI setting for long takes are slice 2 of #187. Clip tools slices 2 and 3 are open in #181, and the range gesture that Crop and the range tools need is #224. More help catalog areas follow in #178. The return time for Touch mode is a constant 0.2 s until #223 makes it a setting. Browser preview converts sample rates with linear interpolation, so a 96 kHz file previewed at 48 kHz can alias; #225 proposes a streaming sinc stage to bring preview to import quality, and it also tracks a cue output path for preview.

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.5.0-windows-x86_64.msi
Windows (x86_64) portable transit-v0.5.0-windows-x86_64.zip
macOS (Apple silicon) transit-v0.5.0-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.5.0-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.5.0-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.5.0-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.5.0-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.5.0-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage ...

Read more

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 01:34

transit v0.4.1

This is a point release two days after v0.4.0. It turns the dependency graph on for sessions with sidechain keys, gives you a way out when a plug-in stops responding, and polishes what testers hit first. transit is alpha-quality software and the session format may still change, so back up anything you care about.

Highlights

  • Sidechained sessions on the render workers, by default. A session with sidechain keys now renders through the workers as a task graph: one task per strip, with edges to every strip that supplies it a key. A key that misses its deadline skips the strips that depend on it for that block instead of feeding them a stale key. On the keyed reference session (eight hosted instruments on a Focusrite Scarlett at 64 frames, a compressor keyed from another strip), over-budget callbacks fell from 14,388 to 364 in ten minutes, the longest callback from 42.1 ms to 2.1 ms, and the compressor never missed its key. Start transit with TRANSIT_RENDER_GRAPH=0 to keep the old path, which renders keyed sessions on the audio thread (#174, ADR 0029).
  • Two new gates prove it is correct. The compressor's gain-reduction trace follows the intended key within 0.001 dB of the detector's own equations, in both render modes, across fourteen keyed topologies, and a key one block or one sample early or late fails it (#179). The graph render equals a serial render with the same blocks muted, bit-exact, with plug-in state fingerprints equal at every block boundary, under seeded worker-stall schedules (#210). Its first run found a defect in the graph path before the default flipped: the early-key delay ran when the key was filled, not when the strip rendered. That is fixed, and the minimal failing schedules stay as named regression tests.
  • A way out when a plug-in stops responding. When a plug-in host thread stops returning from a plug-in call (Guitar Rig 7 browsing presets), transit names the plug-in and the call in the log every 60 seconds and in Copy diagnostics, audio keeps running, and a window offers Save now, Give up and Later. Give up quarantines the stuck thread and its plug-ins; the ghost window stays until transit exits, and K90 says what Give up cannot do on Windows (#205, ADR 0018).
  • An unresponsive marker where you look. A plug-in that is stuck or given up on, or hung inside a render worker, is marked in the mixer insert row, the device card and the track header, so a silent track explains itself. For a stuck host thread, the hover text names the plug-in and the stuck call, how long it has been stuck, and offers Later or Give up; after Give up it says you gave up. For a render worker that has not returned for two seconds, it says a plug-in on that track is stuck. The marker clears when the call returns (#213, #190).
  • Shorter window title bars and status messages that clear. Internal window titles use a smaller text style and the title bar drops from 35 to 23 px at 1.0 scale, with a larger close button (#206, ADR 0010). A status message clears after eight seconds, a newer one replaces it at once, and Copy diagnostics keeps the last one with its time (#203). A progress line such as an import at 0% no longer blinks when its text stays the same (#216).
  • Browser Locations from the tree, and multi-clip copy-drag. Right-click a folder in the Files tree for Add to Locations, a location row for Remove from Locations, or drag a folder onto the Locations header (#212). Ctrl- or Alt-drag now copies the whole clip selection by the same offset as one Copy undo step, and Shuffle makes room like paste (#214).
  • Long takes are refused loudly and kept reachable. A recorded take over the decode limit is refused before it is read, the log and the message say its length and the limit in hours, and the session records the unplaced take and lists it on every open and in Copy diagnostics. The recording itself is intact on disk (#192, K91; disk-backed sources in #187 are the real fix).
  • How we decide, in the open. The README now has a "How we decide" section pointing at the benchmark decisions table, the ADRs and the escape records, and two new ADRs set the direction for built-in instruments: a port of the Mutable Instruments family starting with Plaits, MIT-licensed and credited to Émilie Gillet, gated by null tests against the original C++ (ADR 0033), and racks that sum a group of chains with shared MIDI, macros and key or velocity zones (ADR 0034).

Fixes

  • Mixer sidechains: a strip's early-key delay ran when its key was filled, before the strip was published, so a strip taken back unstarted could see its key one block ahead; found by the #210 gate and fixed before the default flipped (#174, #210).
  • Diagnostics: the render worker figures count strips skipped because an upstream key missed, attributed to the strip that missed, and a strip that was only skipped says so in the top line (#174).
  • Tests: the status-line tests no longer depend on the eight-second aging window or wall-clock timing (#203). Two worker-set tests released a stalled fake before the worker had read its behavior; they now wait for the stall they release (#189). A render-worker test inherited the default strip deadline and failed on a slow CI runner; such tests now set the deadline themselves, and a new test proves a late strip's panic is never lost on a worker.
  • Plug-ins: a parameter value set while a plug-in skipped a block (a busy host, a parked instance) is now delivered on its next processed block; the insert stays awake until the host reports nothing pending, instead of waiting for the automation lane to change. A state load that lands while values are queued wins over them, on both the VST3 and CLAP hosts (#78). Two limits remain and are tracked as #219: a bypassed insert receives no values, and a Save As right after a skipped block can still read the previous value.
  • Tests: the autosave tests wait on the writer's flush instead of polling the clock (#189), and CI compiles the engine crates without the testing feature (#215, item 2).
  • Repository: the compressor and sidechain suites check the detector equations and plug-in state at block boundaries rather than thresholds alone (#179, #210). These have no user-facing change.

Known issues

Full list: docs/known-issues.

  • K88: with the workers on, the auxes, busses and masters still render serially on the audio thread after the strips, until the graph's slice 2 (#174). Strips that read the live input or hardware (monitored audio tracks, External Instruments, hardware inserts) stay on the audio thread, and a strip pinned there that is keyed from a late strip is left silent for that block. TRANSIT_RENDER_GRAPH=0 and TRANSIT_RENDER_POOL=0 are the opt-outs.
  • K89: a plug-in that hangs inside a render worker keeps its track silent and refuses session changes until you close the device or Reconnect. The hung-worker track shows the Unresponsive marker after two seconds; the engine cannot name which plug-in on that track hangs. TRANSIT_RENDER_POOL=0 keeps such a plug-in off the workers.
  • K90: Give up cannot remove the ghost window of a thread that never returns, and it makes a hang permanent if the plug-in would have recovered once you answered its own dialog, so choose Later first. End Task on the ghost ends transit. Reopening the plug-in can wedge another host thread. After Give up the marker stays and says you gave up.
  • K91: a take longer than about 6.2 hours of mono audio at 48 kHz is not placed in the session (stereo or 96 kHz halves the limit); the file stays on disk and is listed under unplaced takes (#187, #192).
  • #184: one recording on an overloaded machine showed a 4.7 s stretch of exact zeros in both armed inputs; a one-hour recording under heavier compile load did not reproduce it. Input stalls are not yet counted or marked on the take (v0.5.0). Please report it if you see it.
  • #215: items 1 and 3 remain. The scheduling gate's deterministic seam cannot produce every miss outcome yet, and the testing feature's coverage of the fingerprint seam is incomplete. Item 2 has landed: CI compiles the engine crates without the testing feature.
  • Linux: plug-in editor windows are not hosted yet; parameters are reachable through the automation picker, MIDI Learn and the header strip (#147).

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.4.1-windows-x86_64.msi
Windows (x86_64) portable transit-v0.4.1-windows-x86_64.zip
macOS (Apple silicon) transit-v0.4.1-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.4.1-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.4.1-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.4.1-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.4.1-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.4.1-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage for delta updates. Every archive carries audio-bench, which measures your interface (round trip, jitter, xruns).

All builds are unsigned. On Windows, SmartScreen shows "More info", then "Run anyway"; the Windows build includes native WASAPI and native ASIO. The m...

Read more

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 12:11

transit v0.4.0

This is the first release with the multicore mixer render, and it carries the engine work since v0.3.2: the render workers, the diagnostics that measure them, sample-accurate automation to hosted plug-ins, and a cleanup that removes video and the web build. transit is alpha-quality software and the session format may still change, so back up anything you care about. Sessions that contain video open with the video dropped and a note saying so (ADR 0031), and the web build is retired: transit ships a desktop app only (ADR 0032).

Highlights

  • Multicore mixer render, on by default. Strips render on a fixed set of worker threads instead of one audio thread, and a strip a worker has not finished by its deadline is silent for that block instead of making the whole callback late. The deadline is 150% of the period for device periods of 1.5 ms and below (64 frames at 48 kHz) and 100% above. On the reference session, eight hosted instruments on a Focusrite Scarlett at 64 frames, over-budget callbacks fell from 1,290 to 2 idle and from 6,519 to 45 with a full compile running alongside. Start transit with TRANSIT_RENDER_POOL=0 to render every strip on the audio thread alone (#124, #168, #172, ADR 0029).
  • Render diagnostics. Copy diagnostics now reports per-strip overruns by cause (late, busy, unstarted), lateness and worker-wake histograms, inline renders and refusals, and names the strip, plug-in and phase the longest callback was in, with a verdict of stalled, preempted or slow. The Callback Telemetry window scrolls its rows above the buttons so it fits a 1080p screen (#169, #162, #171).
  • Sample-accurate automation to plug-ins. Automation breakpoints inside a block now reach VST3 and CLAP plug-ins at their sample offsets instead of at the start of the block. A stopped transport sends the playhead value once and no breakpoints (#117).
  • Eight hours, no drops. The endurance run recorded an armed click loopback and a MIDI-driven hardware synth for eight hours at 64 frames on the render workers: 21.6 million callbacks, 0.05% over budget, no device errors, flat memory, no missing onsets and no clock slip in either take (#130).
  • Video is gone. The decoder crate, the import command and the video track and clip are removed. An old session opens with its video clips dropped and one note; audio on a former Video track is kept as an Audio track (#176).
  • Desktop only. The web build and the legacy egui UI crate are removed, about 24,000 lines, so every build gate and every fix now covers the one app that ships (#177).
  • For contributors. The inherited soundcraft-* crates are now transit-* (#37), and no Rust file may grow past 1,500 lines (a ratchet gate; the over-budget files were split by concern as pure moves) (#149).

Fixes

  • Mixer: the master fader samples and ramps like a track fader instead of ramping toward the next block's value one sample early (#151).
  • Transport: turning Cycle on keeps an existing region; the selection sets the region only when none exists (#164).
  • Arrange: trimming a clip edge snaps to the grid like a move does; Shift bypasses the snap (#165).
  • Plug-in hosts: when a block is skipped, its timed automation points fold into the next block's start value, and past a full event queue the newest value wins (#117).
  • MIDI Monitor: Active Sensing freshness is stamped when the signal arrives, not when the worker looked (#170).
  • Diagnostics report: the WASAPI share flag and open mode print only for WASAPI, not under ASIO (#163).
  • Sessions: a compatibility corpus of files saved by each release is loaded and round-tripped in tests, with a rule for new fields (#161).
  • Repository: test fixes that removed wall-clock and shared-target races (#155, #157, #158, #159, #160, #166, #167, #170, #175, #189), and gates that resolve the repository root at run time (#150). These have no user-facing change.

Known issues

Full list: docs/known-issues.

  • K88: with the render workers on, a session with sidechain keys renders on the audio thread until dependency-aware scheduling lands (#174), and strips that read the live input or hardware (monitored audio tracks, External Instruments, hardware inserts) also stay on the audio thread.
  • K89: a plug-in that hangs inside a render worker keeps its track silent and refuses session changes until you close the device or Reconnect; nothing in the arrange view says why yet (#190). TRANSIT_RENDER_POOL=0 keeps such a plug-in off the workers.
  • #187, #192: a take longer than about 6.2 hours of mono audio at 48 kHz stays on disk but is not placed in the session; stereo or 96 kHz halves the limit. A louder warning and a reference in the session follow in #192.
  • #184: one recording showed a 4.7 s stretch of exact zeros in both armed inputs while the machine was far overloaded by compiles; it did not recur on a quiet machine. Please report it if you see it.
  • K87: the MIDI Mappings window's fixed columns need about 970 points of width, so on narrower screens the window can run past the screen edge.

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.4.0-windows-x86_64.msi
Windows (x86_64) portable transit-v0.4.0-windows-x86_64.zip
macOS (Apple silicon) transit-v0.4.0-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.4.0-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.4.0-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.4.0-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.4.0-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.4.0-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage for delta updates. Every archive carries audio-bench, which measures your interface (round trip, jitter, xruns).

All builds are unsigned. On Windows, SmartScreen shows "More info", then "Run anyway"; the Windows build includes native WASAPI and native ASIO. The macOS app is ad-hoc signed and not notarized; if macOS blocks it, run xattr -dr com.apple.quarantine /Applications/transit.app, or right-click it and choose Open. On Linux, make the AppImage executable (chmod +x) and run it, or install the .deb or .rpm with your package manager; none of the Linux packages are signed. The Linux builds carry the native JACK backend (#55): it talks to a running JACK 2 or PipeWire server (transit never starts one), and Auto prefers it when a server is up. On Debian and Ubuntu with PipeWire, start transit as pw-jack transit so PipeWire's JACK library is found. More Linux reports are wanted in #55: run transit --report and tell us how it went.

Checksums

SHA-256 of each asset:

4ee9f06e6cc929dd0e096ec810e742e8ec2bd742b2286be044f5998c5061df54 *transit-0.4.0-linux-x86_64.AppImage
9213e111da7b6dd24574554badefdc750843793d0be09e0ce2466c4b272935ce *transit-0.4.0-linux-x86_64.AppImage.zsync
9faf24363cab967d036e2ea4bfd94dfa02522dd63395a6d088c30a3dd46b4254 *transit-0.4.0-linux-x86_64.deb
50043297ec121ade0e1f89e8242115b5c51871a773d505bee7370bc2dde2a126 *transit-0.4.0-linux-x86_64.rpm
b10d771145928b9f0f69824958a94262cc2d207cfc75b71a17f6138c0e698d3d *transit-v0.4.0-linux-x86_64.tar.gz
448efc5456573e310368600fdf60967153a8ff88aa6bb00d23ae1cc20f9d2ef9 *transit-v0.4.0-macos-arm64.dmg
54b61d346efe3b3e623c382f311f2e403bc4a8238ba13e669fc18e5f3ef9bb63 *transit-v0.4.0-macos-arm64.tar.gz
6fb00e6cc04e10eecbc0de894b29197e2aa77b4aca557de2b4464138f6bf9d95 *transit-v0.4.0-windows-x86_64.msi
1c2a47d56a0c639eaafbf3f4faf0056be2bca52f6b7c7316a6eecf6e06d02795 *transit-v0.4.0-windows-x86_64.zip

Full changelog

v0.3.2...v0.4.0

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 27 Oct 13:20

transit v0.3.2

This is a patch release following v0.3.1 with the fixes from the first Linux diagnostics report and from Discord feedback on FX channels, plus two small polish items. transit is alpha-quality software and the session format may still change, so back up anything you care about.

Highlights

  • FX channels. A new FX channel no longer picks up a send from whichever track was selected. Add one plain, or use + Send > New FX Channel on a track to get the channel and the send together. Escape, or a click on empty mixer space, clears the mixer highlight.
  • Step input idles quietly. With Step on and nothing played, the piano roll polls MIDI every 30 ms instead of repainting at display rate, so a laptop left in Step mode stays cool.
  • Diagnostics on Linux. The report no longer prints the WASAPI-only setting on Linux, the JACK note appears once, and every backend names its wake figure the same way. The Audio Devices window shows the JACK buffer note once under the device list.
  • MIDI Mappings. Table cells are centered vertically, so text lines up with the Range fields and buttons.

Fixes

  • Mixer: + FX Channel (mixer button, Track menu, arrange quick-add) creates the channel with no send; + Send > New FX Channel on a track creates the channel and a -12 dB send from that track as one undo step; Escape and a click on empty mixer space clear the selection and the focused track, and the highlight follows an explicit focus or selection only (#145).
  • Piano roll: while Step is on and nothing is pending, the editor polls MIDI at 30 ms instead of requesting a repaint every frame; a held key, pedal or pending chord brings the full rate back (#144).
  • Diagnostics report: the Shared device (WASAPI) line prints only on Windows; the JACK server note (rate, buffer, how to pin it) prints once under the JACK heading instead of once per device; the wake figure reads "gap over period" on WASAPI render, ASIO and JACK (WASAPI capture keeps "late", which is what it measures, see docs/troubleshooting.md); a wake rate not yet sampled is left out instead of a dash (#146).
  • Audio Devices: a system-wide note such as the JACK buffer hint shows once under the device list of the selected system; notes about one device stay under that device (#146).
  • MIDI Mappings window: every cell is centered vertically, header included (#148).
  • Repository: the timing lint treats a same-function helper that installs a clock as injected-clock evidence and reports a nested loop pair once. This has no user-facing change (#135).

Known issues

Full list: docs/known-issues.

  • K87: the MIDI Mappings window's fixed columns need about 970 points of width, so on narrower screens the window can run past the screen edge.
  • #139: a fast sustain pedal tap with no key held reportedly inserted no rest on one machine; it could not be reproduced and the timing path was reworked in v0.3.1. Please report if you see it.

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.3.2-windows-x86_64.msi
Windows (x86_64) portable transit-v0.3.2-windows-x86_64.zip
macOS (Apple silicon) transit-v0.3.2-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.3.2-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.3.2-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.3.2-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.3.2-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.3.2-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage for delta updates. Every archive carries audio-bench, which measures your interface (round trip, jitter, xruns).

All builds are unsigned. On Windows, SmartScreen shows "More info", then "Run anyway"; the Windows build includes native WASAPI and native ASIO. The macOS app is ad-hoc signed and not notarized; if macOS blocks it, run xattr -dr com.apple.quarantine /Applications/transit.app, or right-click it and choose Open. On Linux, make the AppImage executable (chmod +x) and run it, or install the .deb or .rpm with your package manager; none of the Linux packages are signed. The Linux builds carry the native JACK backend (#55): it talks to a running JACK 2 or PipeWire server (transit never starts one), and Auto prefers it when a server is up. On Debian and Ubuntu with PipeWire, start transit as pw-jack transit so PipeWire's JACK library is found. The first tester report (Ubuntu 24.04, PipeWire, 128 samples at 48 kHz) ran clean apart from one overload; more reports are wanted in #55: run transit --report and tell us how it went.

Checksums

SHA-256 of each asset:

fad2dd9098f82e6136bc24d474543229e457496c79e6569ebd6e780a303fb3c0 *transit-0.3.2-linux-x86_64.AppImage
515d50c865bd382cd276827838736714eace1c68d5e8a1b81bc6300797e54af7 *transit-0.3.2-linux-x86_64.AppImage.zsync
e395d8d211505f4441987de32b3caa20febe86fa56ac87720ac371393eaed9c1 *transit-0.3.2-linux-x86_64.deb
342718deac79cf5de53cc8b386bea56f6c33d23c00aff3aa3ca5c95adadf292a *transit-0.3.2-linux-x86_64.rpm
b56f3915882a066b0964af2cee1c9b7aab9a6938aca1070272ea78dad34121a1 *transit-v0.3.2-linux-x86_64.tar.gz
9b829da6bfd7dbac5147e464f1528ef12bc8656a5a85531c97c977758feaab2b *transit-v0.3.2-macos-arm64.dmg
9a187d94f745d2549b56ace7602eabe63788e90e30732c82949277a5f353ebd4 *transit-v0.3.2-macos-arm64.tar.gz
2e56b1adff14983a0414d30b93e452020ddeac2fd9a2e56c18cf08cf33a44872 *transit-v0.3.2-windows-x86_64.msi
d384379febd691a3503d4ca59b7c4a42092cf381fc9f45664d9b5cb8e5fa2424 *transit-v0.3.2-windows-x86_64.zip

Full changelog

v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 01:45

transit v0.3.1

This is a patch release following v0.3.0, with the fixes from the first round of use and tester feedback: an interface zoom for large monitors, a round of step input fixes, the piano roll's view of looped clips, Cycle following the selection, a bounded MIDI Mappings window, and a clearer diagnostics report. transit is alpha-quality software and the session format may still change, so back up anything you care about.

Highlights

  • Interface zoom. View > Appearance > Interface zoom scales the whole interface, painted text included. Ctrl+= and Ctrl+- step it, Ctrl+0 resets it, and the value is saved per machine.
  • Step input. A sustain pedal release lost under load no longer leaves rests running. Hold-to-lengthen has a gentler ramp with a 200 ms default floor, and the ramp length is in the hold preferences. With the pedal held, each strike ties one step. A fast pedal tap inserts a rest.
  • Looped clips in the piano roll. A looped clip shows as its loop cycle with a Loop end line and dimmed repeats, and step entry wraps at the loop end.
  • Cycle. Cycle follows the selected clips, and Transport > Set Cycle to Selection re-derives the region.
  • MIDI Mappings window. A bounded table with a scroll area and parameter names such as "JP8K: Jup-8000 V > Filter > Cutoff".
  • Diagnostics. Copy diagnostics marks unprobed ASIO drivers, prints each backend's own counters with one line for a duplex ASIO driver, and has a MIDI section.

Fixes

  • Interface zoom: Ctrl+= / Ctrl+- / Ctrl+0 and View > Appearance presets (100% to 200%) scale the whole interface, saved per machine, for large monitors (#132).
  • Step input: a sustain pedal release shed under MIDI overload no longer leaves the step editor inserting rests; a shed release that invalidates the route resets step entry (#74).
  • Step input: hold-to-lengthen and pedal rests no longer speed up too fast after the second unit. After the 500 ms threshold the interval eases from 400 ms down to a 200 ms floor over six units (both in the Step settings); a floor you set yourself is kept, and the old 80 ms default migrates to 200 (#136).
  • Step input: with the sustain pedal held, each strike ties exactly one step instead of the hold repeater doubling the tie (#138).
  • Step input: taps and holds are timed from when the MIDI worker received them rather than when the window drew, and tests pin that a pedal tap of any length with no key held inserts a rest; a miss reported on hardware could not be reproduced and #139 stays open for a retest.
  • Step input: step entry resets when a route goes away for any reason (port unplugged, feedback mute, disarm, monitor off, channel filter change), so a held pedal cannot be stranded (#134).
  • Piano roll: a looped MIDI clip shows as its loop cycle with a Loop end line and dimmed repeats up to the clip length; notes past the loop end are shown as outside; the clip length reads "looped to" its arrangement length (#137).
  • Piano roll: step entry in a looped clip wraps to the loop start at the loop end (#137).
  • Cycle: with clips selected, Cycle uses the span of the selection even when a region already exists; Transport > Set Cycle to Selection sets the region without toggling; with nothing selected an existing region is reused, otherwise four bars from the playhead (#140).
  • MIDI Mappings window: the mappings are a table in a scroll area, the window is bounded to the table's width and the screen's height, the Target column reads track: plug-in > unit > parameter from the plug-in's own names, and dragging or typing a Range value now commits (it did not before) (#141).
  • Diagnostics report: an ASIO driver that was not probed reads "not probed" (naming the open driver when there is one) instead of "0 ch" with a default rate list; a probed driver with no channels in one direction says so (#127).
  • Diagnostics report: each backend line shows only the counters that backend fills, and a duplex ASIO driver prints one line with its output and input figures side by side (#127).
  • Diagnostics report: the ASIO wake figure is named "gap over period", which is what it measures (#127).
  • Diagnostics report: a MIDI section lists ports, whether each is open and mapped, the mapping count and the last heard source (#127).
  • Audio Devices: a stray horizontal rule at the top of the I/O paths and Hardware inserts pages is gone (#131).
  • Repository: the timing lint also flags sleep-paced loops and short expiries in tests. This has no user-facing change (#120).

Known issues

Full list: docs/known-issues.

  • K87: the MIDI Mappings window's fixed columns need about 970 points of width, so on narrower screens the window can run past the screen edge.
  • #139: a fast sustain pedal tap with no key held reportedly inserted no rest on one machine; it could not be reproduced and the timing path was reworked. Please report if you see it.

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.3.1-windows-x86_64.msi
Windows (x86_64) portable transit-v0.3.1-windows-x86_64.zip
macOS (Apple silicon) transit-v0.3.1-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.3.1-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.3.1-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.3.1-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.3.1-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.3.1-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage for delta updates. Every archive carries audio-bench, which measures your interface (round trip, jitter, xruns).

All builds are unsigned. On Windows, SmartScreen shows "More info", then "Run anyway"; the Windows build includes native WASAPI and native ASIO. The macOS app is ad-hoc signed and not notarized; if macOS blocks it, run xattr -dr com.apple.quarantine /Applications/transit.app, or right-click it and choose Open. On Linux, make the AppImage executable (chmod +x) and run it, or install the .deb or .rpm with your package manager; none of the Linux packages are signed. The Linux builds carry the native JACK backend (#55), unchanged from v0.3.0: it talks to a running JACK 2 or PipeWire server (transit never starts one), and Auto prefers it when a server is up. On Debian and Ubuntu with PipeWire, start transit as pw-jack transit so PipeWire's JACK library is found. It is still untested on most hardware, and testers are still wanted: run transit --report and tell us how it went in #55.

Checksums

SHA-256 of each asset:

3b5ce4a76ad5586c284ee49f9f0394c06a2f07bad269790492694235576cf8aa *transit-0.3.1-linux-x86_64.AppImage
8c1bc983fe7d5f29e8d0606cb5e2e9f5ad578032af2cf97fa448a8225b3d1047 *transit-0.3.1-linux-x86_64.AppImage.zsync
723d7fc039d0ccdf0553853a59578810f9b0782a90b72c1357570b9db6210604 *transit-0.3.1-linux-x86_64.deb
0a778abd14388af1cb949106ced5be9e1483c15e07881cf22b413fa3bbd79bb9 *transit-0.3.1-linux-x86_64.rpm
1f86d3fae70882ecc5170119fd4c44e7c719c3905482f5d8eae9bd9b95063dfc *transit-v0.3.1-linux-x86_64.tar.gz
9767d8c03707366ae85f238be590578ee5fa91c0ea0ac7300a45da72790b7d88 *transit-v0.3.1-macos-arm64.dmg
bc05f1c56fac2b090a99fd22c4bd94611526cea64af5255a9f7e376321b88997 *transit-v0.3.1-macos-arm64.tar.gz
62fe05bed95d1aa2d886c3abe8c72bad2d80bc16913f162bd1d500d28c8f3dfd *transit-v0.3.1-windows-x86_64.msi
0d1131f4f3799df38594c390cc5abae68589b885f20afdf67000383a01d3ee28 *transit-v0.3.1-windows-x86_64.zip

Full changelog

v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:15

transit v0.3.0

The 0.3.0 release is the MIDI release. You can map hardware knobs, faders and buttons to transit controls and to plug-in parameters with MIDI Learn. A MIDI track can play a hardware synth over a port, and the new External Instrument device measures the round trip of that synth and puts its audio back in time. Around that sit a MIDI Monitor, protection against MIDI feedback loops, and a set of piano roll and step input tools. The plug-in host, Audio Devices and the Linux packages also change. transit is alpha-quality software and the session format may still change, so back up anything you care about.

Highlights

  • MIDI Learn. Right-click a mixer control, or use a plug-in header's "MIDI Learn: next touched parameter", move a knob, fader or button, and it is mapped. Mappings live in the session or a controller profile; a mapped move is one undo step and records into automation.
  • Takeover modes. Scaled by default: a knob that does not match its control meets it at the end of travel, no dead zone. Jump and Pickup are options. A hosted VST3 parameter follows the plug-in's curve.
  • External Instrument. A MIDI track can play a hardware synth over a port and channel. The External Instrument device adds the audio return and a Measure that times the synth's round trip, so its audio lands on the grid. Bounce can render in real time.
  • MIDI Monitor and feedback protection. Every message on every port, in and out, filtered. A loop between a controller's input and output is detected and muted.
  • Piano roll and step input. Scale mode with named scales, transpose and constrain, quantize strength and swing, sustain and CC lanes, Alt bypasses snap. Step input adds ties, rests and hold-to-lengthen.
  • Clip loops and fades. A loop handle repeats an audio or MIDI clip inside itself. Audio clips get fade and crossfade handles.
  • Audio Devices. A sidebar for short screens, pending changes with Apply and Revert, Copy diagnostics.
  • Plug-in host. Load phase and time on a Loading slot, editors at the display scale, user presets and bypass in the header, a searchable automation picker.
  • Packages. Linux gets an AppImage, a .deb and an .rpm, all with the native JACK backend for JACK 2 and PipeWire. The Windows MSI has the standard dialogs. The cpal ASIO path is retired in favor of native ASIO.
  • Mixer. Bus and FX return strips sit beside Master in their own block.

Fixes

  • MIDI Learn: a mapped controller moves a mixer fader and a hosted plug-in parameter (#121).
  • MIDI Learn: a hosted VST3 parameter follows the plug-in's own curve instead of stepping in plain units (#123).
  • MIDI Learn: a hosted instrument's parameters can be set from transit and from a mapped controller (#97, K83).
  • External Instrument Measure no longer refuses every run on real hardware with "Input alignment changed during the measurement" (#98).
  • A MIDI feedback storm no longer loops until the app is closed (#99).
  • Piano roll: a note can be made shorter than the grid with Alt (#100).
  • Plug-in editors draw at the display scale on scaled Windows displays (#101).
  • VST3 editors that apply the scale factor only after attaching, or that resize themselves, now work (#105).
  • A GPU device loss no longer panics the UI and hangs the process in a plug-in unload (#104).
  • The Windows MSI shows its installer dialogs (#109).
  • Linux (ALSA via PipeWire): the chosen buffer size and the size the stream runs at are both shown (#83).
  • Changing the audio driver shows that Apply is needed before dependent settings update (#108).
  • The MIDI input thread wakes on input instead of a 1 ms timeout that Windows rounds to its 15.6 ms tick (#62).
  • Looped recording continues into the next lap, and each lap is a take (#48).
  • Mixer: the pan knob and small controls keep contrast on the selected strip (#102).
  • Native JACK: Apply asks the server for the chosen buffer size (#111).
  • Several timing tests no longer fail under machine load (#106, #110, #76).

Known issues

Full list: docs/known-issues.

  • K24, K25: on the Focusrite Scarlett 2i2, WASAPI measures about 220 to 250 ms round trip in every mode. Use ASIO for tracking.
  • K27, K29: the TASCAM Model 12 over WASAPI exclusive is about 270 ms and may be silent, and shows only 2 in / 2 out. Use shared mode or ASIO.
  • K31: ASIO loop agreement is verified on the Scarlett 2i2 at 48 kHz only. Run Measure on other drivers and rates.
  • K32: an automatic ASIO reopen replaces the player, so plug-in editors close and reopen.
  • K10: on macOS, plug-in creation still runs on the UI thread, so a heavy plug-in can freeze the UI there.
  • K75: a controller-profile mapping addresses a strip by position, so moving tracks changes what a knob moves.
  • K76: MIDI Learn maps absolute 7-bit CCs and notes only. Relative encoders, 14-bit CC, NRPN and LED or motor-fader feedback are not supported.
  • K80, K81, K82: a hosted plug-in is learned from its header strip's "MIDI Learn: next touched parameter" as a session mapping; a mapping to a plug-in that has not loaded yet is ignored until it has; a toggle parameter flips as the knob crosses half travel.
  • K86: a hosted VST3 parameter's strip knob and automation lane still use an approximate curve, so they can disagree with a mapped controller on where a value sits.
  • K84: a lost graphics device closes transit (autosave kept) instead of recovering.
  • K74: a plug-in editor that ignores the host's scale draws at 100% on a scaled Windows display.
  • K39: editing a clip while one of its notes sounds can leave that note on at an external MIDI port until the next loop wrap, locate or Stop.
  • K40, K41: a session with a looped clip or an External Instrument that an older build opens and saves loses that data. Do not save such sessions from older builds.
  • K52: while the MIDI Monitor window is open it holds every input port, so on Windows another program cannot open one.
  • K64, K65: real-time render does not cover freeze, flatten, stems, normalize, stereo fold-down or bus bounces yet.
  • K69, K70, K71: native JACK is new. A server quantum or rate change reopens the device and stops the transport; recordings are placed late by the server's uncompensated port latency until a calibration exists; a server that stops is reported as a driver reset and is looked for 30 s only.
  • KC3: whether PipeWire's JACK library calls the buffer-size callback at activation is unverified; a quantum change between open and start may leave the shown buffer stale.
  • K38: a VST3 plug-in whose module entry never returns can block later VST3 loads. CLAP plug-ins are not affected.
  • A plug-in that crashes still takes the app down; out-of-process hosting is planned (#9).

Downloads

Assets are attached to this release.

Platform Asset
Windows (x86_64) installer transit-v0.3.0-windows-x86_64.msi
Windows (x86_64) portable transit-v0.3.0-windows-x86_64.zip
macOS (Apple silicon) transit-v0.3.0-macos-arm64.dmg (holds transit.app)
macOS (Apple silicon), bare binary with audio-bench transit-v0.3.0-macos-arm64.tar.gz
Linux (x86_64) tarball with audio-bench transit-v0.3.0-linux-x86_64.tar.gz
Linux (x86_64) AppImage transit-0.3.0-linux-x86_64.AppImage
Linux (x86_64) Debian and Ubuntu package transit-0.3.0-linux-x86_64.deb
Linux (x86_64) Fedora and RPM package transit-0.3.0-linux-x86_64.rpm

A .AppImage.zsync file sits next to the AppImage for delta updates. Every archive carries audio-bench, which measures your interface (round trip, jitter, xruns).

All builds are unsigned. On Windows, SmartScreen shows "More info", then "Run anyway"; the Windows build includes native WASAPI and native ASIO. The macOS app is ad-hoc signed and not notarized; if macOS blocks it, run xattr -dr com.apple.quarantine /Applications/transit.app, or right-click it and choose Open. On Linux, make the AppImage executable (chmod +x) and run it, or install the .deb or .rpm with your package manager; none of the Linux packages are signed. The Linux builds carry the native JACK backend (#55): it talks to a running JACK 2 or PipeWire server (transit never starts one), and Auto prefers it when a server is up. On Debian and Ubuntu with PipeWire, start transit as pw-jack transit so PipeWire's JACK library is found. It is new and untested on most hardware: run transit --report and tell us how it went in #55.

Checksums

SHA-256 of each asset:

4dfdc1249db31bbdd6ec3daf41dc49e650186b21eebf469130c677a18af66fc7 *transit-0.3.0-linux-x86_64.AppImage
a82f9e27862bc1b3763f143c764b937adcbbcce4935dfa9ee8e8a1c316cfd71e *transit-0.3.0-linux-x86_64.AppImage.zsync
5ca39d1fbd7503cb56399ec43591c0d019b539bf884abc2b6e66ac1b54cea49d *transit-0.3.0-linux-x86_64.deb
5f20bc6f74d457d564abfe3e6acd16524c3184f61a93fa57174e2b59f767a2b6 *transit-0.3.0-linux-x86_64.rpm
b2c56a4c51a165385d5c801ae3668ef5d9cb1cd0348cbd1975685b66dfb92d44 *transit-v0.3.0-linux-x86_64.tar.gz
c0f46723caac4e676322ebde8c6c1bf89ef6d08389f5ecdab98622e029eabf75 *transit-v0.3.0-macos-arm64.dmg
b65eae9fd8d0edc0485774018bf75e9940aad0d61b589216ffa73dc76a10b16c *transit-v0.3.0-macos-arm64.tar.gz
ef340b9b45f7df3a11f328855de5355da372713f0c7a381000748a2bef3c5ee3 *transit-v0.3.0-windows-x86_64.msi
6159b4afba9eb1526bf7ebaf97f4a0705439bba9e0ad0b18bb75b1083d71df4d *transit-v0.3.0-windows-x86_64.zip

Full changelog

v0.2.0...v0.3.0