]> gitweb.factorcode.org Git - factor.git/commitdiff
audio.engine: let audio generators determine their own buffer size
authorJoe Groff <arcata@gmail.com>
Sun, 24 Jan 2010 18:07:14 +0000 (10:07 -0800)
committerJoe Groff <arcata@gmail.com>
Sun, 24 Jan 2010 18:07:14 +0000 (10:07 -0800)
extra/audio/engine/engine.factor
extra/audio/engine/test/test.factor

index 3bc81cd6816cc761d4bf3ec9b5dbe6692c061164..23aeb891b463f1732d9ca9e0a48ac1774d9bef3e 100644 (file)
@@ -56,7 +56,7 @@ M: audio-listener audio-gain gain>> ; inline
 M: audio-listener audio-velocity velocity>> ; inline
 M: audio-listener audio-orientation orientation>> ; inline
 
-GENERIC# generate-audio 1 ( generator buffer-size -- c-ptr size )
+GENERIC: generate-audio ( generator -- c-ptr size )
 GENERIC: generator-audio-format ( generator -- channels sample-bits sample-rate )
 
 TUPLE: audio-engine < disposable
@@ -79,7 +79,6 @@ TUPLE: static-audio-clip < audio-clip
 
 TUPLE: streaming-audio-clip < audio-clip
     generator
-    { buffer-size integer }
     { channels integer }
     { sample-bits integer }
     { sample-rate integer }
@@ -151,8 +150,7 @@ ERROR: audio-context-not-available device-name ;
 :: queue-clip-buffer ( audio-clip al-buffer -- )
     audio-clip al-source>> :> al-source
     audio-clip generator>> :> generator
-    audio-clip buffer-size>> :> buffer-size
-    generator buffer-size generate-audio :> ( data size )
+    generator generate-audio :> ( data size )
 
     data [
         al-buffer audio-clip openal-format data size audio-clip sample-rate>> alBufferData
@@ -267,7 +265,7 @@ M: audio-engine dispose*
         clip
     ] [ f ] if ;
 
-:: <streaming-audio-clip> ( audio-engine source generator buffer-size buffer-count -- audio-clip/f )
+:: <streaming-audio-clip> ( audio-engine source generator buffer-count -- audio-clip/f )
     audio-engine get-available-source :> al-source
 
     al-source [
@@ -279,7 +277,6 @@ M: audio-engine dispose*
             source >>source
             al-source >>al-source
             generator >>generator
-            buffer-size >>buffer-size
             channels >>channels
             sample-bits >>sample-bits
             sample-rate >>sample-rate
@@ -313,7 +310,7 @@ M: streaming-audio-clip dispose*
 : play-static-audio-clip ( audio-engine source audio loop? -- audio-clip/f )
     <static-audio-clip> dup [ play-clip ] when* ;
 
-: play-streaming-audio-clip ( audio-engine source generator buffer-size buffer-count -- audio-clip/f ) 
+: play-streaming-audio-clip ( audio-engine source generator buffer-count -- audio-clip/f ) 
     <streaming-audio-clip> dup [ play-clip ] when* ;
 
 : pause-clip ( audio-clip -- )
index 46c45f84b1fe10e63dc70309079ca7c6cde204d4..3107b96e7a7843cd335b9e4a2a6a13a670be9237 100644 (file)
@@ -11,7 +11,9 @@ TUPLE: noise-generator ;
 M: noise-generator generator-audio-format
     drop 1 16 8000 ;
 M: noise-generator generate-audio
-    nip [ -1 shift [ -4096 4096 [a,b] random ] short-array{ } replicate-as ] keep ;
+    drop
+    4096 [ -4096 4096 [a,b] random ] short-array{ } replicate-as
+    8192 ;
 
 :: audio-engine-test ( -- )
     "vocab:audio/engine/test/loop.aiff" read-audio :> loop-sound
@@ -22,7 +24,7 @@ M: noise-generator generate-audio
 
     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 8192 2
+    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
 
     [