Hand out the length of a played sound from Play sound
Wired into the time of Set sound FX parameters, a change then spans exactly one run of the clip, so a fade or a filter sweep ends with its last sample. - Play sound has a second output, length, in seconds. It is 0 where nothing was played or the sound has not loaded yet. - The AudioSink gives the length of a file, the SoundLibrary takes it from the decoded buffer. A pitch the voice starts on keeps it (#312). - A pitch changed while the voice plays still changes its length, so a pitch sweep over length does not end with the sound. A pitch that keeps the length in real time is #317. Tests: - soundfx, sounds, keep-on-scene-load, node-catalog, sound-library: 462 tests green. - Counter-check: with length always 0, the catalog case and the new soundfx case fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
297fca3e94
commit
804a97b0a9
10 files changed
+53
-11
No files matched your search
@@ -270,6 +270,8 @@ export function fakeContext(overrides: Partial<NodeContext> = {}): FakeContext {
|
||||
// The number of a voice is how many have been played: unique, and never 0.
|
||||
playSound: (assetId, volume, loop, detached, fx, fxParams) =>
|
||||
ctx.played.push({ assetId, volume, loop, detached, fx, fxParams }),
|
||||
// Every sound lasts a quarter of a second, as if it had been loaded.
|
||||
soundLength: () => 0.25,
|
||||
stopSound: (assetId) => ctx.silenced.push(assetId),
|
||||
tuned: [],
|
||||
tuneSound: (voice, fxParams, time, ease) => ctx.tuned.push({ voice, fxParams, time, ease }),
|
||||
|
||||
Reference in new issue
Block a user