add words to audio.engine for synchronized play/pause/stop of multiple clips

db4
Joe Groff 2010-01-19 13:16:45 -08:00
parent 303efda053
commit ab7d8aca7c
1 changed files with 14 additions and 0 deletions

View File

@ -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 ]