Skip to content

v1.2.3

Latest

Choose a tag to compare

@ColRad ColRad released this 26 Sep 20:57
592e217

Features

  • Feature Request: midi sequencer
    • New MIDI Clipboard Modifier: touch the clipboard indicator on the MIDI Overview after a MIDI Cut/Copy to mangle the copied notes before pasting — the MIDI sibling of the Audio Clipboard Modifier, with the same pages, groups, APPLY / WRITE BACK, SCALE / SPAN / ROOT tuning and audition, in bars and beats
    • EDIT page: VELOCITY (scale, ramp, seeded jitter), TIME (stretch ÷4…×4, swing, quantize with strength), REVERSE (reverse, seeded shuffle, stutter), CROP, TRANSPOSE (semitones, scale degrees, snap to scale), FILTER (note range, velocity floor, drop CC), LENGTH (gate, legato, fixed length)
    • GEN page: MELODIZE turns a one-note rhythm into a melody in the chosen scale — WALK (stepwise random walk with gravity), TURING (locked random loop that mutates per pass) or SHAPE (a contour: ramp, arch, valley, tri, sine, with jitter); CHORD harmonizes in scale intervals; STRUM spreads chords up, down, alternating or at random (push for triplet times); ARP turns chords into runs
    • MOD page: VEL LFO, CC LFO, PB LFO, AT LFO printed over the region, with the audio modifier's shapes
    • RHYTHM page: ECHO (MIDI delay with decay and pitched repeats), RATCHET, CHANCE (drop onsets by probability or every Nth, downbeats kept), HUMANIZE, EUCLID
    • Notes played together (within a 32nd note) count as one chord / onset for the chord and rhythm tools; the roll's rows always scale to fit every note
    • The audition plays the clipboard on each track's output channel at the tempo under the playhead; turn an encoder while it plays and it follows without restarting, loop it, jump with SHIFT+Play
    • WRITE BACK pastes the result over exactly the span it was copied from, undoable like any paste
    • Changed: a MIDI paste now clears the whole copied span, trailing silence included, exactly like an audio paste (before, it only cleared up to the last copied event). A copy "to the end of the tape" is as long as its last note
  • make zoom in audio and midi edit screens, react to same midi controller as main screens.
    • A MIDI Control zoom mapping (Audio Overview → SCROLL → Encoder 7) now also zooms Audio Edit, MIDI Edit and ClipMod while one of them is open, the same way Encoder 7 on the device does
    • Each screen keeps its own zoom; the other SCROLL knobs (step, MOVE MARKER, SPLICE, scroll) keep driving the Audio Overview from the edit screens

Fixes

  • iPad: Strange Sound when recording
    • Fixed: takes played back with a constant buzz on iPad and Mac. The recordings themselves were fine, so nothing already recorded is lost.
    • Fixed: a USB interface could record a buzz when its input and output buffers differed in size.

Other

  • Audio Clipboard Modifier: two new pages
    • SPECTR page (SHIFT + Track 6): spectral tools rendered in the background — STRETCH (Paulstretch in place, FACTOR / WINDOW / ORIGIN), FREEZE (hold an instant from POINT for LENGTH, BLUR from static to cloud), BLUR (smear over time and frequency), GATE (spectral gate with a RESIDUE mode that keeps only what the gate removes), TUNED (a scale sieve on SCALE / ROOT, RESO without the ringing), SHIFT (a frequency shifter with barber-pole feedback) and PEAKS (keep only the N loudest partials)
    • VOICE page (SHIFT + Track 7): CHORUS (2–4 voices), FLANGE, PHASER (4 / 8 / 12 stages), COMB (tuned to a scale degree of ROOT), FORMANT (shift the formants, keep the pitch), HARMONY (a pitch-shifted layer in scale degrees with detune) and WIDTH (mid / side spread and a Haas delay)
    • The rendered groups (SPECTR, FORMANT, HARMONY) show [RENDER] while the audition buffer is computed off the audio thread; the audition keeps playing the last render until the new one fades in, the waveform shows the rendered result, and APPLY prints exactly that
    • SCALE / ROOT (SHIFT + Encoders 1 / 3) are now also read by TUNED, COMB and HARMONY
  • Audio Clipboard Modifier: TUNE on the EDIT page (Track 7)
    • Pitch correction to SCALE / ROOT (CHROMA for a plain chromatic tuner): SPEED is the retune time (0 snaps hard, 200 ms glides and keeps vibrato), AMOUNT how much of the distance is corrected, RANGE (BASS / VOICE / HIGH) what the pitch tracker expects
    • While un-applied the tracked pitch and the corrected pitch are drawn over the region; silence and noise are left alone
    • Monophonic sources only; rendered in the background like the SPECTR groups ([RENDER])
    • FREEZE LENGTH now steps through the note values like GRID (up = shorter); one step down past 1/1 is TO END. COMB holds the input level at any FEEDBACK, WIDTH SPREAD also widens mono takes (pseudo-stereo), and the VOICE page's delay-type settings glide to new values instead of clicking
    • TUNED WIDTH now runs 5–50 cents in steps of 2 (the range above 50 did nothing)
  • Companion app: crackles at small BUFFER SIZE on iPhone
    • The audio callback no longer copies the whole project state (automation, markers) once per engine chunk; it keeps the same cheap previous-state copy the hardware uses.
    • Nothing logs from the audio thread any more: callback diagnostics (callback sizes, input drops, underruns) are collected as counters and written to the log from the UI thread. The app's log level is now Info like the hardware (TRACK8_LOG=debug in the Xcode scheme restores Debug).
    • Playback no longer re-lays-out the whole SwiftUI view tree sixty times a second: the state the views observe is only published when it actually changed, and the playhead position is kept separately.
  • Companion app: touching an encoder is a push only if the touch did not turn it
    • An encoder touch now decides like the real knob: it is a turn if it produced at least one step, otherwise a push when the finger lifts. Landing on an encoder, pausing, then turning, or stopping on a value mid-turn, no longer triggers the encoder's push action (it used to after 0.35 s of rest).
    • Resting a finger on an encoder for two seconds without turning opens MIDI Learn for it, the same hold as on the hardware.
    • A touch the system takes away (a system gesture, an interruption) is never counted as a push.
  • Companion app: audio device name and real latency on Utility → AUDIO
    • SOUNDCARD shows the device iOS is using by name (Mic + Speaker, Mic + Headphones, or the interface's own name such as MOTU UltraLite mk5) instead of Default Device
    • Every route keeps its own BUFFER SIZE, MODE and I/O settings, as USB interfaces do on the hardware; the buffer size follows a route change immediately
    • The RTL figure is what iOS reports for the device in use (input + output hardware latency plus one granted buffer each way) and updates when the route changes
    • When the system runs a different buffer than the one set (a Mac keeps its device's own size), the granted size is shown in brackets, e.g. 64 (512) 21.7ms
  • Companion app: AUv3 plugins as outboard gear (UTILITY → AU RACK, spec docs/SPEC-AUV3-OUTBOARD.md)
    • Eight rack slots host Audio Unit v3 instruments, effects and MIDI processors; each loaded slot appears as one more stereo channel pair on the TRK IN, INSERTS, SENDS, EXTERNAL and MAIN OUT pages, so a plugin is wired exactly like a hardware synth or pedal
    • Encoder turn picks the plugin, push switches to its MIDI receive channel (OMNI or 1–16, default = slot number); touch a loaded slot to open the plugin's own view
    • MIDI tracks play into matching slots and to CoreMIDI at once; plugin-emitted MIDI is recorded like any input port; live playing reaches instruments on the selected track's channel
    • Plugin latency is neither read nor compensated — set REC OFFSET by ear, as with outboard gear
    • Exports render the rack offline with their own plugin instances (longer exports with several plugins)
    • Plugin choice, receive channel and state live in the app's device settings, never in the project
  • Companion app: multi-channel audio interfaces
    • The app now opens every input and output channel of the interface instead of two in / two out, so TRK IN, INSERTS, SENDS, EXTERNAL, MAIN OUT and ALT METRON work beyond channels 1/2 as on the hardware
  • Companion app: realtime mix export
    • EXPORT with REALTIME on now works in the app: the audio callback feeds the writer as on the hardware (before, the export sat at 0 % and left an empty file); the main out and metronome stay silent on the device while it runs, sends keep feeding outboard gear and plugins
    • Realtime export no longer ends early with a truncated file: the end-of-region check compared the playhead (samples) against the region end (ticks). Affects the hardware as well
  • Companion app: MIDI timing and thread safety
    • The project's MIDI is now generated on the audio thread per engine chunk (was: from the 60 Hz UI poll), removing up to a frame of jitter from CoreMIDI output
    • CoreMIDI and Bluetooth MIDI input is queued and handled on the UI thread instead of touching the engine from the delivering thread
  • Companion app: zoom, iPhone and orientation
    • New ⤢ button (top left): shows just the device, as large as the window allows.
    • Runs on iPhone (landscape; starts zoomed).
    • The device no longer rotates with the iPad; it keeps the landscape orientation you last used.
    • SHIFT + encoder turn now works (marker FIT, SCALE/SPAN/ROOT, MIDI REC OFFSET and the other SHIFT layers).
    • The theme editor's panels now fit on every device.
  • Companion app: audio
    • Much lower latency on iPad and iPhone. BUFFER SIZE (Utility → AUDIO) now sets the iOS audio buffer; new installs start at 64 (128 on older devices). Pick a larger value if it crackles. Bluetooth headphones stay slow by nature; use wired headphones or the speaker when playing along.
    • Input MODE now defaults to SINGLE (one stereo input for all tracks). Existing installs keep their setting.
    • On a Mac the app starts with an audio device at any sample rate (it used to quit right away unless the device was at 48 kHz). If audio cannot start, the app now says why and offers Retry.
  • Companion app: export and projects
    • Exporting to a folder now exports to that folder. It used to ask "EXPORT TO TRACK … OVERWRITE?" and bounce to Track 1 instead.
    • The EXPORT screen shows the folder's name instead of its full path.
    • Renaming a project no longer quits the app. Renaming onto an existing name is refused.
  • Companion app: MIDI Control
    • MIDI Learn and the Utility → MIDI → DEVICE / CONTROL screens now work in the app, with the USB, Bluetooth and network MIDI devices the iPad or Mac sees. Same mapping file as the hardware.
    • Bluetooth MIDI controllers can be connected from the DEVICE screen (BLUETOOTH), also on iOS 27.
    • The MIDI Learn long-press (hold an encoder 2 s) now works on first try.
  • Clipboard Modifier
    • RESO keeps its level: a narrow band on a broad source now rings out as loud as what went in.
    • REVERB has the Master FX programs: push Encoder 4 (SIZE) to cycle MODERN / HALL / AMBIENCE / GATED. Encoder 5 edits DAMP, WIDTH, PREDEL and, for GATED, GATE; push to cycle.
  • Tape → TRUNCATE
    • Fixed: after a truncate, the removed audio came back in the overview (not in playback) once you switched projects and back. The saved waveform is now refreshed with the truncated one.