add words to audio.engine for synchronized play/pause/stop of multiple clips
parent
303efda053
commit
ab7d8aca7c
|
@ -179,6 +179,9 @@ ERROR: audio-context-not-available device-name ;
|
||||||
] times
|
] times
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
|
: clip-sources ( clips -- length sources )
|
||||||
|
[ length ] [ [ source>> ] uint-array{ } map-as ] bi ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
DEFER: update-audio
|
DEFER: update-audio
|
||||||
|
@ -258,15 +261,26 @@ M: audio-clip dispose*
|
||||||
[ update-source ]
|
[ update-source ]
|
||||||
[ al-source>> alSourcePlay ] bi ;
|
[ al-source>> alSourcePlay ] bi ;
|
||||||
|
|
||||||
|
: play-clips ( audio-clips -- )
|
||||||
|
[ [ update-source ] each ]
|
||||||
|
[ clip-sources alSourcePlayv ] bi ;
|
||||||
|
|
||||||
: <audio-clip> ( audio-engine audio source loop? -- audio-clip/f )
|
: <audio-clip> ( audio-engine audio source loop? -- audio-clip/f )
|
||||||
(audio-clip) dup play-clip ;
|
(audio-clip) dup play-clip ;
|
||||||
|
|
||||||
: pause-clip ( audio-clip -- )
|
: pause-clip ( audio-clip -- )
|
||||||
al-source>> alSourcePause ;
|
al-source>> alSourcePause ;
|
||||||
|
|
||||||
|
: pause-clips ( audio-clip -- )
|
||||||
|
clip-sources alSourcePausev ;
|
||||||
|
|
||||||
: stop-clip ( audio-clip -- )
|
: stop-clip ( audio-clip -- )
|
||||||
dispose ;
|
dispose ;
|
||||||
|
|
||||||
|
: stop-clips ( audio-clip -- )
|
||||||
|
[ clip-sources alSourceStopv ]
|
||||||
|
[ [ dispose ] each ] bi ;
|
||||||
|
|
||||||
: update-audio ( audio-engine -- )
|
: update-audio ( audio-engine -- )
|
||||||
{
|
{
|
||||||
[ make-engine-current ]
|
[ make-engine-current ]
|
||||||
|
|
Loading…
Reference in New Issue