]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/audio/engine/test/test.factor
alien.c-types: not necessary to import `short` differently anymore
[factor.git] / extra / audio / engine / test / test.factor
index 59834a9fb240501d10dabe740659d8ee70cd0885..2b81c5b3e211a7c72dad1bdfaf43d116d481e827 100644 (file)
@@ -1,33 +1,50 @@
-! (c)2009 Joe Groff bsd license
-USING: accessors alarms audio audio.engine audio.loader calendar
-destructors io kernel locals math math.functions ;
+! Copyright (C) 2009 Joe Groff.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors timers audio.engine audio.loader calendar
+destructors io kernel math math.functions ranges specialized-arrays
+sequences random math.vectors ;
+SPECIALIZED-ARRAY: short
 IN: audio.engine.test
 
+TUPLE: noise-generator ;
+
+M: noise-generator generator-audio-format
+    drop 1 16 8000 ;
+M: noise-generator generate-audio
+    drop
+    4096 [ -4096 4096 [a..b] random ] short-array{ } replicate-as
+    8192 ;
+M: noise-generator dispose
+    drop ;
+
 :: audio-engine-test ( -- )
     "vocab:audio/engine/test/loop.aiff" read-audio :> loop-sound
     "vocab:audio/engine/test/once.wav" read-audio :> once-sound
     0 :> i!
-    <standard-audio-engine> :> engine
+    f 4 <audio-engine> :> engine
     engine start-audio*
-    engine loop-sound T{ audio-source f { 1.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } t <audio-clip>
-        :> loop-clip
+
+    engine T{ audio-source f {  1.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } loop-sound t
+        play-static-audio-clip :> loop-clip
+    engine T{ audio-source f { -1.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } noise-generator new 2
+        play-streaming-audio-clip :> noise-clip
 
     [
         i 1 + i!
-        i 0.05 * sin :> s
-        loop-clip source>> { s 0.0 0.0 } >>position drop
+        i 0.05 * [ sin ] [ cos ] bi :> ( s c )
+        loop-clip  source>> { c 0.0 s }          >>position drop
+        noise-clip source>> { c 0.0 s } -2.0 v*n >>position drop
 
         i 50 mod zero? [
-            engine once-sound T{ audio-source f { 0.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } f
-            <audio-clip> drop
+            engine T{ audio-source f { 0.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } once-sound f
+            play-static-audio-clip drop
         ] when
 
         engine update-audio
-    ] 20 milliseconds every :> alarm
+    ] 20 milliseconds every :> timer
     "Press Enter to stop the test." print
     readln drop
-    alarm cancel-alarm
+    timer stop-timer
     engine dispose ;
 
-
 MAIN: audio-engine-test