Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:15
· 1394 commits to main since this release

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