Commit Graph
630 Commits
Author SHA1 Message Date
Mikkel konyher 95b14c8df0 Open a plugin when it's inserted (#486)
Picking a plugin for an insert slot added it but opened nothing, so
every new plugin took an extra click on its slot. As in other DAWs, the
pick now opens it: a hosted plugin's own editor, else its plugin
window (built-in plugins, no audio engine, or an editor that can't open
here, such as CLAP plugins with only an embedded editor on macOS).

The insert menu's picks go through pick_insert, which remembers the
slot when mix.insert succeeds; SoundApp::open_inserted opens it on the
next logic pass, once the audio engine has the instance. Only the menu
opens it, so mix.insert from the CLI, MCP or control channel still
opens nothing. It covers empty and filled slots, in the Mix window and
the Edit window's Inserts column.

Tests: tests/open_on_insert.rs (empty slot, search and Enter,
replacing, Edit window column). menu_search closes the windows the
picks now open before it looks for the menu's Bypass.
2026-10-13 20:05:37 +02:00
MarekSpodBiedry 52dc4f9822 Reset clip effect EQ/compressor state on stop and seek (#442) 2026-10-13 17:53:21 +02:00
MarekSpodBiedry 33d59b26a6 Keep controller-only tracks when importing MIDI (#454) 2026-10-13 17:53:03 +02:00
MarekSpodBiedry 9afb266fce Fix bundle opening losing audio for sources that share one file (#446) 2026-10-13 17:52:13 +02:00
MarekSpodBiedry df0e8928d7 Keep overlapping clips of a clip group when importing it (#452) 2026-10-13 17:52:12 +02:00
MarekSpodBiedry 75eb152f03 Create session backups exclusively and stop when backup numbers run out (#426) 2026-10-13 17:52:12 +02:00
MarekSpodBiedry 2a43710e52 Scale fades, sync point and gain envelope when importing a clip group at another sample rate (#453) 2026-10-13 17:51:48 +02:00
MarekSpodBiedry 807230167d Reset clip stretch after AudioSuite bakes it into the new source (#451) 2026-10-13 17:51:40 +02:00
MarekSpodBiedry 7bcb4e4802 Do not retry remote-control commands that may already have run (#458) 2026-10-13 17:49:50 +02:00
MarekSpodBiedry 9209909ff7 Count the partial quartet in the base64 decoded-size cap (#468) 2026-10-13 17:49:23 +02:00
MarekSpodBiedry edd2b0ef73 Keep audio-io stream test limits as u64 so it compiles on 32-bit targets (#462) 2026-10-13 17:48:22 +02:00
MarekSpodBiedry 8ac95607b7 Return TooLarge when the WAV header size overflows u64 (#467) 2026-10-13 17:48:14 +02:00
NetterSilver d8ab50b5fc Sampler: a ping-pong loop keeps its phase for steps wider than the loop (#463)
The ping-pong loop reflected a voice at the loop's end once and clamped it to the
edge, so a step wider than the loop (a narrow loop with high transposition or
sample-rate conversion) dropped the rest of the travel and made the pitch and loop
phase wrong. The distance past the edge is now folded into the loop: an even number
of crossings keeps the direction, an odd number turns it round. Steps narrower than
the loop move exactly as before.
2026-10-13 17:25:22 +02:00
euisuhandOpenAI Codex 8d252c8b2e fix(mcp): M8 reject oversized batches before execution
Reject oversized batches before any side effects instead of reporting success after truncating calls.

Closes #460

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 00:15:26 +09:00
NetterSilver 7f2ff83c44 WAV: an empty data chunk followed by metadata has no frames (#466)
A data chunk of size 0 was always read as "everything that follows", so a finished
empty WAV with a LIST or bext chunk after its data decoded the metadata as samples
and reported a longer file. The streaming-writer case is kept: a zero size is read
as empty only when the RIFF size is the file's and only whole chunks follow; a
recording whose sizes were never finalised still gives the audio that was written.
2026-10-13 17:11:28 +02:00
Royce 0c19777c8a fix(ui): add Fedora font paths so DejaVu and Liberation load on Fedora (#45)
The Linux font search list in `crates/ui-egui/src/fonts.rs` covered
Debian/Ubuntu (`/usr/share/fonts/truetype/dejavu`, `/usr/share/fonts/TTF`,
`/usr/share/fonts/dejavu`) and Arch (`/usr/local/share/fonts/dejavu`)
for DejaVu, and a single path for Liberation Sans. It did not cover
Fedora's package layout:

- `/usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf` (and -Bold)
- `/usr/share/fonts/liberation-sans-fonts/LiberationSans-Regular.ttf`

On Fedora, neither path matched, the `load_from_fontconfig` path returned
None (e.g. the user only has Liberation Sans installed, not DejaVu), and
the UI fell back to egui's built-in fonts. Those don't cover the menu
glyphs (`→ ▸ ▾ ♯ ✕`), so the symbols showed as empty boxes.

Add the two Fedora paths to the REGULAR and BOLD candidates, in the same
order as the existing Debian and Arch paths. `load` still tries
fontconfig first; the direct paths are the fallback.

cargo test -p soundcraft-ui-egui: 105 passed, 0 failed.
2026-10-13 22:50:49 +08:00
Jafz2001 bf3cd7ac09 fix(routing): remove folder bus on delete 2026-10-13 11:40:34 -03:00
Justin JohnandClaude Opus 5.5 1bebc52bf4 MIDI writer: clamp out-of-range pitches and controller numbers instead of wrapping (#472)
Pitch, release velocity, CC number and poly-pressure pitch were masked with
0x7F, so 128 became 0 and 255 became 127. They now clamp to 127, as the
write_smf doc promises and note-on velocity already did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:13:40 +05:30
Justin JohnandClaude Opus 5.5 606ddac169 Track › Instrument: choose the selected track's instrument from the menu bar (#374)
The submenu under Track › New... opens the same picker as the Mix window's
instrument slot for the first selected instrument track, and is greyed out
with a hint when none is selected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:44:34 +05:30
webdevtodayjason e10b245652 Keep mute changes in place when thinning automation 2026-10-13 06:58:16 -05:00
Brandon Thomas c0cb993408 Merge pull request #413 from mikkelkonyher/checkbox-drag
Drag across checkboxes to check or uncheck several (#399)
2026-10-13 06:54:02 -04:00
Brandon Thomas cf755b8cd2 Merge pull request #410 from Silvertree2010/fix/instrument-params-render
Engine: mix.instrument takes the instrument's parameters and refuses unknown fields (#265)
2026-10-13 06:53:58 -04:00
Brandon Thomas 9ad9eb88e4 Merge pull request #408 from Silvertree2010/fix/bus-bounce-aux-latency
Mix: a bus bounce compensates the aux returns onto it (#246)
2026-10-13 06:53:54 -04:00
Brandon Thomas fca728501f Merge pull request #409 from Silvertree2010/fix/master-insert-latency
Mix: delay compensation covers the master faders' inserts (#351)
2026-10-13 06:53:50 -04:00
Brandon Thomas 55eff096ac Merge pull request #417 from Momentum96/fix/hangul-ui-fallback
Fall back to a system Hangul font so Korean names render in the UI
2026-10-13 06:53:46 -04:00
Brandon Thomas c2788c50d4 Merge pull request #415 from grovebit/tab-to-transient
Tab to Transient: every selected track, Alt+Tab back, Shift+Tab extends
2026-10-13 06:53:42 -04:00
Brandon Thomas fe573bb31f Merge pull request #416 from grovebit/transient-detection
Transient detection: find quiet and legato onsets, place them on the attack
2026-10-13 06:53:38 -04:00
Brandon Thomas 87db8f4048 Merge pull request #414 from grovebit/midi-double-click
Double-click a MIDI clip with the Grabber to open it in the MIDI Editor
2026-10-13 06:53:33 -04:00
Brandon Thomas ddb874e399 Merge pull request #407 from vbasky/fix/midi-editor-tool-insertion
Require the Pencil tool to insert MIDI notes
2026-10-13 06:53:29 -04:00
Brandon ThomasandClaude Opus 5.5 f4ed9919e6 Merge main into #413
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 06:46:08 -04:00
Brandon ThomasandClaude Opus 5.5 b32d7bd926 Merge main into #410; put the mix.instrument note in the Instruments row's 'have' cell
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 06:45:33 -04:00
Brandon ThomasandClaude Opus 5.5 14862a5139 Merge main into #408
render_bus moved into RangeRender (#393); the bus-latency fix now applies there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 06:45:20 -04:00
Brandon Thomas 6d4f9a41a5 Merge main into #409
# Conflicts:
#	ROADMAP.md
#	docs/architecture.md
2026-10-13 06:44:55 -04:00
Brandon Thomas a96cf50a3a Merge pull request #380 from grovebit/controls-look
Draw faders and meters more like Pro Tools
2026-10-13 06:38:28 -04:00
Momentum96 49abc39806 Fall back to a system Hangul font so Korean names render in the UI
No UI font family had Hangul, so Korean session, file, track and clip names drew as boxes in every interface language. Following the guidance on #141 (system fonts at runtime, nothing bundled), borrow an installed Korean face (fontconfig lang=ko, Apple SD Gothic Neo, Malgun Gothic, Noto Sans CJK KR, NanumGothic) and append it to every family.
2026-10-13 19:34:21 +09:00
Brandon Thomas afa850d697 Merge main into #319
# Conflicts:
#	ROADMAP.md
2026-10-13 06:32:14 -04:00
Brandon Thomas 844830bf6f Merge main into #322
# Conflicts:
#	ROADMAP.md
2026-10-13 06:31:36 -04:00
Brandon Thomas acbc3411e5 Merge pull request #334 from scottcampbelldata/sampler-ui
Sampler UI: load samples, waveform with loop points, instrument sliders
2026-10-13 06:31:27 -04:00
Brandon Thomas 13316cf60e Merge pull request #315 from Limestudio90/plugin-editors-windows
Plugin editor windows on Windows (VST3 and embedded CLAP)
2026-10-13 06:31:24 -04:00
Brandon Thomas 9176296e96 Merge pull request #390 from woodgrain816/open-recent
File › Open Recent: the last 10 sessions, newest first
2026-10-13 06:31:20 -04:00
Brandon Thomas 18dcb7b870 Merge pull request #219 from Jafz2001/feat/routing-folders
Complete routing folder management
2026-10-13 06:31:16 -04:00
Brandon Thomas 58a0482712 Merge pull request #335 from reoniazx/fix/fade-drag-waveform-preview
Fix clip fade editing and add live waveform previews
2026-10-13 06:31:12 -04:00
Brandon Thomas 751a5755cb Merge pull request #338 from grovebit/menu-search
Type to search as soon as a plugin or bus menu opens
2026-10-13 06:31:05 -04:00
Brandon Thomas 430c6a9e4e Merge pull request #332 from grovebit/corrupt-sessions
Keep corrupt sessions and imports from hanging, crashing or filling memory
2026-10-13 06:31:01 -04:00
Brandon Thomas cc1bf5a62d Merge pull request #296 from grovebit/new-midi-clip
Create MIDI clips with the Pencil, Consolidate and the MIDI Editor
2026-10-13 06:30:57 -04:00
Brandon Thomas 123ae65e2b Merge pull request #306 from grovebit/plugin-safety
Plugin safety: read plugin state off the audio thread, keep refused settings, contain NaN plugins
2026-10-13 06:30:53 -04:00
Brandon Thomas 5b824e46c8 Merge pull request #209 from grovebit/zoom-toggle
Zoom Toggle: E zooms in on the edit selection and back out, as in Pro Tools
2026-10-13 06:30:49 -04:00
Brandon Thomas d438c753e1 Merge pull request #360 from grovebit/session-copies
Share the session with the UI instead of copying it every frame
2026-10-13 06:30:45 -04:00
Brandon Thomas 69aea8fad3 Merge pull request #384 from grovebit/track-height-drag
Track height: resize live while dragging, Pro Tools modifiers and Ctrl+Up/Down
2026-10-13 06:30:40 -04:00
Brandon Thomas 768629a8ce Merge pull request #365 from grovebit/edit-modes
Make the Shuffle, Slip, Spot and Grid edit modes work like Pro Tools
2026-10-13 06:30:33 -04:00