Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 19:43
· 1166 commits to main since this release

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 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:

d3f70389923fc40eeeafa16ed3f052c194d4fe5f3cd4276e4646e5f39d7ae052 *transit-0.5.0-linux-x86_64.AppImage
b208883556f805d83129a84a39ff4291a7a75240d528fd807ed3576c71dcf1e7 *transit-0.5.0-linux-x86_64.AppImage.zsync
94f85ecdc8b5758f3791727dd95a6886666f433aa7eaaccad158c844b3cae609 *transit-0.5.0-linux-x86_64.deb
82c3a7b985a9e52a5bebc69f4b3ab15cbdce822e96df460391bbb451b64cb5b5 *transit-0.5.0-linux-x86_64.rpm
17cf611d7af308d6f866ee16528fa29b40f97e5e5a865dc3c0384e0f0f79daf6 *transit-v0.5.0-linux-x86_64.tar.gz
4ae0e5a8e3c98f9018363bfda2de9faf8c000a218e487c2d38992311a201a50e *transit-v0.5.0-macos-arm64.dmg
14ad897ee1337c6b1bbb7b8dc3b73b62b2bad5e6e4bf8809db80e7bec359a28f *transit-v0.5.0-macos-arm64.tar.gz
5b2266edbe9a4ae5add9b63288d8aeac04b26d4c7e08223ef2f14c1613de33cd *transit-v0.5.0-windows-x86_64.msi
bb0f89615639adf541f9e5fd6f4de6d1e36bf7c14b9fa92315d00ef3802fdd5f *transit-v0.5.0-windows-x86_64.zip

Full changelog

v0.4.1...v0.5.0