Repository navigation
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/ROOTtuning and audition, in bars and beats EDITpage: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)GENpage:MELODIZEturns 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) orSHAPE(a contour: ramp, arch, valley, tri, sine, with jitter);CHORDharmonizes in scale intervals;STRUMspreads chords up, down, alternating or at random (push for triplet times);ARPturns chords into runsMODpage:VEL LFO,CC LFO,PB LFO,AT LFOprinted over the region, with the audio modifier's shapesRHYTHMpage: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 BACKpastes 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
- 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,
- 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
SCROLLknobs (step, MOVE MARKER, SPLICE, scroll) keep driving the Audio Overview from the edit screens
- A MIDI Control zoom mapping (Audio Overview →
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
SPECTRpage (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 aRESIDUEmode 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) andPEAKS(keep only the N loudest partials)VOICEpage (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) andWIDTH(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, andAPPLYprints exactly that SCALE/ROOT(SHIFT + Encoders 1 / 3) are now also read byTUNED,COMBandHARMONY
- Audio Clipboard Modifier:
TUNEon theEDITpage (Track 7)- Pitch correction to
SCALE/ROOT(CHROMAfor 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
SPECTRgroups ([RENDER]) FREEZELENGTH now steps through the note values likeGRID(up = shorter); one step down past 1/1 isTO END.COMBholds the input level at any FEEDBACK,WIDTHSPREAD also widens mono takes (pseudo-stereo), and the VOICE page's delay-type settings glide to new values instead of clickingTUNEDWIDTH now runs 5–50 cents in steps of 2 (the range above 50 did nothing)
- Pitch correction to
- 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=debugin 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 asMOTU UltraLite mk5) instead ofDefault 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
- SOUNDCARD shows the device iOS is using by name (
- Companion app: AUv3 plugins as outboard gear (
UTILITY→AU RACK, specdocs/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,EXTERNALandMAIN OUTpages, so a plugin is wired exactly like a hardware synth or pedal - Encoder turn picks the plugin, push switches to its MIDI receive channel (
OMNIor 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 OFFSETby 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
- Eight rack slots host Audio Unit v3 instruments, effects and MIDI processors; each loaded slot appears as one more stereo channel pair on the
- 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 OUTandALT METRONwork beyond channels 1/2 as on the hardware
- The app now opens every input and output channel of the interface instead of two in / two out, so
- Companion app: realtime mix export
EXPORTwith 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.