1 ! (c)2009 Joe Groff bsd license
2 USING: accessors alarms audio audio.engine audio.loader calendar
3 destructors io kernel locals math math.functions math.ranges specialized-arrays
4 sequences random math.vectors ;
5 FROM: alien.c-types => short ;
6 SPECIALIZED-ARRAY: short
9 TUPLE: noise-generator ;
11 M: noise-generator generator-audio-format
13 M: noise-generator generate-audio
14 nip P [ -1 shift [ -4096 4096 [a,b] random ] short-array{ } replicate-as ] keep ;
16 :: audio-engine-test ( -- )
17 "vocab:audio/engine/test/loop.aiff" read-audio :> loop-sound
18 "vocab:audio/engine/test/once.wav" read-audio :> once-sound
20 <standard-audio-engine> :> engine
23 engine T{ audio-source f { 1.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } loop-sound t
24 play-static-audio-clip :> loop-clip
25 engine T{ audio-source f { -1.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } noise-generator new 8192 2
26 play-streaming-audio-clip :> noise-clip
30 i 0.05 * [ sin ] [ cos ] bi :> ( s c )
31 loop-clip source>> { c 0.0 s } >>position drop
32 noise-clip source>> { c 0.0 s } -2.0 v*n >>position drop
35 engine T{ audio-source f { 0.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } once-sound f
36 play-static-audio-clip drop
40 ] 20 milliseconds every :> alarm
41 "Press Enter to stop the test." print
46 MAIN: audio-engine-test