Forward Audio and Claude Opus 5.5
37e155c828
Meters: keep every block's peak until the UI takes it
...
The audio thread overwrote the shared meter snapshot every block (~94 blocks/s at 512
frames, 48 kHz) while the UI read it 20-60 times a second, so it only ever saw the latest
block and short transients were under-read. Blocks are now folded together (max of each
channel's peak and of the gain reduction; plugin failures keep the latest count) until the UI
takes them with Player::take_meters, which also starts a new period. Blocks rendered while the
UI holds the lock wait in an audio-side accumulator instead of being lost; the audio thread
still only try_locks.
Stopping, starting and locating now zero the meters in place instead of clearing the maps,
so playing again no longer re-allocates every track's entry on the audio thread. The UI
thread works out which tracks a session update deleted and tells the audio thread, which
drops just their entries.
The Mix window and the Renderer now read the snapshot the app takes once per poll instead of
reading the player themselves, so a period's peaks are not split between readers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-24 22:14:52 +02:00
aiongg
aa74bffac1
Merge pull request #1011 from aiongg/next
...
Integration batch 1: 36 contributor PRs (files, editing, sessions, CLI, mixer, MIDI, plug-ins, interface)
2026-10-24 08:38:37 -04:00
aiongg
e884d6eb37
Integration: VST3 host: keep room for note releases after a reset
2026-10-24 09:16:19 +00:00
aiongg
4ab3bde39b
Integration: MIDI real-time properties: reload the form when stored values change
2026-10-24 09:15:31 +00:00
aiongg
824cf5cecb
Integration: import: keep a failed import's error on the status line
2026-10-24 09:14:21 +00:00
aiongg
f6a27c2ccf
Integration: automation: hold clip gain envelope ends to the clip edges
2026-10-24 09:13:19 +00:00
aiongg
08679d5a65
Integration: cli: run the inline --cmd=ID form
2026-10-24 09:11:44 +00:00
Dylan M. Taylor and Claude Sonnet 5.5
93800e0764
refactor(video): use method paths instead of closures for first_chunk (S1612) ( #1012 )
...
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-24 04:30:47 -04:00
aiongg
c29510af86
Integration: regenerate docs/parity-checklist.md
2026-10-24 06:56:33 +00:00
aiongg
1cc7b40e6a
Integration: #631 find the New Tracks name field by its text-input role
2026-10-24 06:54:11 +00:00
aiongg
42f22369fb
Integration: build the batch's new integration tests into each crate's tests/it binary
2026-10-24 06:54:11 +00:00
aiongg
b47f544c7a
Merge track r1-t02
...
# Conflicts:
# contributors/people.toml
# docs/plugin-parity.md
2026-10-24 06:54:04 +00:00
aiongg
7bf20dbbac
Merge track r1-t01
2026-10-24 06:54:04 +00:00
aiongg
de206f46b6
Merge PR #798 : Fix saved audio trust test on Windows by joining path parts separately ( #789 )
2026-10-24 06:53:57 +00:00
aiongg
4f959bee40
Merge PR #587 : Round negative timecode and feet+frames positions symmetrically
2026-10-24 06:53:57 +00:00
aiongg
0ca5dd74ab
Merge PR #967 : Name F12 in the Record button's tooltip
2026-10-24 06:53:57 +00:00
aiongg
848978a4af
Merge PR #997 : Fix the macOS build: import registry in au-host's api module
2026-10-24 06:53:57 +00:00
aiongg
f3b897f532
Merge PR #662 : fix(ui): capture live plugin state before saving track presets
...
# Conflicts:
# docs/gaps.md
2026-10-24 06:53:57 +00:00
aiongg
c13e55c7c3
Merge PR #484 : VST3 host: IMessage and IAttributeList for plugins (Helix loads its database)
...
# Conflicts:
# ROADMAP.md
2026-10-24 06:53:57 +00:00
aiongg
419e7726bb
Merge PR #605 : Release held VST3 notes on reset instead of discarding them
2026-10-24 06:53:57 +00:00
aiongg
bc530b172a
Merge PR #763 : Mix tests: never load real plug-ins (cargo test hangs on machines with plug-ins installed)
2026-10-24 06:53:56 +00:00
aiongg
fb9d4ac78b
Merge PR #1008 : Tracks: clip track and group names to their rows in the side lists ( fixes #990 )
2026-10-24 06:53:56 +00:00
aiongg
76bd7bc3af
Merge PR #561 : Keep deep Aux and Folder routing chains in dependency order
...
# Conflicts:
# contributors/people.toml
2026-10-24 06:53:56 +00:00
aiongg
c4fee770ca
Merge PR #784 : Fix empty SMF export re-importing as one phantom empty track
2026-10-24 06:53:56 +00:00
aiongg
c0f72e5fe3
Merge PR #593 : ui: MIDI Real-Time Properties submits only the property that changed ( #444 )
2026-10-24 06:53:56 +00:00
aiongg
7ec4216ba2
Merge PR #565 : A Pencil click on a MIDI clip selects it, so the MIDI Editor follows
2026-10-24 06:53:56 +00:00
aiongg
d33563ebe2
Merge PR #521 : Keep MIDI note selection valid across clip, session and note-order changes ( #443 )
...
# Conflicts:
# crates/engine/src/cmd/midi.rs
2026-10-24 06:53:56 +00:00
aiongg
95243c7698
Merge PR #1010 : Add a built-in Ring Modulator plugin
...
# Conflicts:
# ROADMAP.md
2026-10-24 06:40:52 +00:00
aiongg
4240873586
Merge PR #551 : Bounce: a Dither option in the dialog and for stems ( #522 )
2026-10-24 06:40:52 +00:00
aiongg
9eb2077dd1
Merge PR #643 : Resample through a polyphase bank: 5x faster rate-converting imports ( #597 )
2026-10-24 06:40:52 +00:00
aiongg
3fe53ee834
Integration: #595 pass BUNDLE_LIMITS in main's sources_sharing_one_file test
2026-10-24 06:19:20 +00:00
aiongg
9e7583d99b
Merge PR #595 : Save a session bundle only if it opens again ( #433 )
...
crates/engine/src/io.rs: kept both bundle tests.
2026-10-24 06:19:17 +00:00
aiongg
9f03eeb354
Merge PR #586 : session: reject duplicate ids and an exhausted id space on load
2026-10-24 06:19:10 +00:00
aiongg
ec7cfbb8ac
Merge PR #519 : Load older sessions whose track height is the bare Fit string ( #447 )
2026-10-24 06:19:09 +00:00
aiongg
d2d6518a5f
Merge PR #557 : mix: clamp negative fractional source position in stretched-clip rendering
2026-10-24 06:19:09 +00:00
aiongg
045938728f
Integration: #674 advance the source offset by delta/stretch on start trims and compare heal offsets in source time
2026-10-24 06:19:09 +00:00
aiongg
2e17315d5d
Merge PR #674 : Fix source offset when trimming the start of a stretched audio clip
...
crates/engine/src/edit.rs: kept main's gap-aware heal comparison and doc comment, the PR's source_len helper, and both sets of tests.
crates/model/src/clip.rs: kept main's clamped trim_start_to body (the stretch-aware offset follows in the Integration commit) and both tests.
2026-10-24 06:19:06 +00:00
aiongg
678cb0f57d
Integration: #517 join_gain_env places the right envelope at the seam when heal bridges a gap
2026-10-24 06:18:49 +00:00
aiongg
a1eafbd1c5
Merge PR #517 : Heal keeps each clip's gain envelope and skips clips whose mute or stretch differ ( #450 )
...
crates/engine/src/edit.rs: heal combines main's gap-aware join (contiguous, gap, saturating adds) with the PR's same_playback check and join_gain_env call; both heal tests kept.
2026-10-24 06:18:46 +00:00
aiongg
c8f44fbbef
Merge PR #518 : Keep unrelated overlapping clips untouched when deleting fades ( #449 )
...
crates/engine/src/edit.rs: kept both tests; delete_fades body merged without conflict.
2026-10-24 06:17:53 +00:00
aiongg
fd07262983
Merge PR #760 : Bounce the whole session when CLI --bounce has no range
2026-10-24 06:17:41 +00:00
aiongg
9719f955a4
Integration: #552 allow --dither and --no-dither in convert's options
2026-10-24 06:17:33 +00:00
aiongg
98aa5dd1b5
Merge PR #555 : convert: dither only when the output loses resolution ( #548 )
...
apps/soundcraft-cli/src/main.rs: kept main's OsStr::to_str spelling and the PR's dither lines.
2026-10-24 06:17:33 +00:00
aiongg
9a5ab203d2
Merge PR #552 : cli: reject unknown options and missing option values
2026-10-24 06:17:18 +00:00
aiongg
0cb3c692ac
Merge PR #716 : Keep the existing volume lane in automation.clip_gain_to_volume
2026-10-24 06:17:18 +00:00
aiongg
5bd755f604
Merge PR #617 : Apply strip mute automation within each processing block
...
contributors/people.toml: kept both new entries.
2026-10-24 06:17:15 +00:00
aiongg
b0e35aa988
Merge PR #792 : Preserve finite headroom in Float32 WAV and AIFF-C encoding
2026-10-24 06:17:04 +00:00
aiongg
bb990d9bfa
Merge PR #663 : Fix Split into Mono repeating the left channel
...
ROADMAP.md, docs/gaps.md: kept the newer header line, union of log, table and G-04 entries
crates/engine/src/cmd/track.rs: kept main's explicit imports, added ClipContent
2026-10-24 06:16:56 +00:00
aiongg
2adec7f128
Integration: #509 accept the Ambisonic WAVEX subtype GUIDs as PCM/float
2026-10-24 06:16:40 +00:00
aiongg
038c4c0ca7
Merge PR #636 : Import audio off the UI thread ( #597 )
...
crates/engine/src/io.rs: kept the PR's decode_import_bytes split; main's OsStr::to_str spelling.
crates/engine/src/cmd/file.rs: kept the PR's take_import path; main's OsStr::to_str spelling.
2026-10-24 06:16:25 +00:00