audio.engine: let audio generators determine their own buffer size
parent
6ec4f4ef8b
commit
a751ecd8b7
|
@ -56,7 +56,7 @@ M: audio-listener audio-gain gain>> ; inline
|
||||||
M: audio-listener audio-velocity velocity>> ; inline
|
M: audio-listener audio-velocity velocity>> ; inline
|
||||||
M: audio-listener audio-orientation orientation>> ; 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 )
|
GENERIC: generator-audio-format ( generator -- channels sample-bits sample-rate )
|
||||||
|
|
||||||
TUPLE: audio-engine < disposable
|
TUPLE: audio-engine < disposable
|
||||||
|
@ -79,7 +79,6 @@ TUPLE: static-audio-clip < audio-clip
|
||||||
|
|
||||||
TUPLE: streaming-audio-clip < audio-clip
|
TUPLE: streaming-audio-clip < audio-clip
|
||||||
generator
|
generator
|
||||||
{ buffer-size integer }
|
|
||||||
{ channels integer }
|
{ channels integer }
|
||||||
{ sample-bits integer }
|
{ sample-bits integer }
|
||||||
{ sample-rate integer }
|
{ sample-rate integer }
|
||||||
|
@ -151,8 +150,7 @@ ERROR: audio-context-not-available device-name ;
|
||||||
:: queue-clip-buffer ( audio-clip al-buffer -- )
|
:: queue-clip-buffer ( audio-clip al-buffer -- )
|
||||||
audio-clip al-source>> :> al-source
|
audio-clip al-source>> :> al-source
|
||||||
audio-clip generator>> :> generator
|
audio-clip generator>> :> generator
|
||||||
audio-clip buffer-size>> :> buffer-size
|
generator generate-audio :> ( data size )
|
||||||
generator buffer-size generate-audio :> ( data size )
|
|
||||||
|
|
||||||
data [
|
data [
|
||||||
al-buffer audio-clip openal-format data size audio-clip sample-rate>> alBufferData
|
al-buffer audio-clip openal-format data size audio-clip sample-rate>> alBufferData
|
||||||
|
@ -267,7 +265,7 @@ M: audio-engine dispose*
|
||||||
clip
|
clip
|
||||||
] [ f ] if ;
|
] [ 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
|
audio-engine get-available-source :> al-source
|
||||||
|
|
||||||
al-source [
|
al-source [
|
||||||
|
@ -279,7 +277,6 @@ M: audio-engine dispose*
|
||||||
source >>source
|
source >>source
|
||||||
al-source >>al-source
|
al-source >>al-source
|
||||||
generator >>generator
|
generator >>generator
|
||||||
buffer-size >>buffer-size
|
|
||||||
channels >>channels
|
channels >>channels
|
||||||
sample-bits >>sample-bits
|
sample-bits >>sample-bits
|
||||||
sample-rate >>sample-rate
|
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 )
|
: play-static-audio-clip ( audio-engine source audio loop? -- audio-clip/f )
|
||||||
<static-audio-clip> dup [ play-clip ] when* ;
|
<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* ;
|
<streaming-audio-clip> dup [ play-clip ] when* ;
|
||||||
|
|
||||||
: pause-clip ( audio-clip -- )
|
: pause-clip ( audio-clip -- )
|
||||||
|
|
|
@ -11,7 +11,9 @@ TUPLE: noise-generator ;
|
||||||
M: noise-generator generator-audio-format
|
M: noise-generator generator-audio-format
|
||||||
drop 1 16 8000 ;
|
drop 1 16 8000 ;
|
||||||
M: noise-generator generate-audio
|
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 ( -- )
|
:: audio-engine-test ( -- )
|
||||||
"vocab:audio/engine/test/loop.aiff" read-audio :> loop-sound
|
"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
|
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
|
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
|
play-streaming-audio-clip :> noise-clip
|
||||||
|
|
||||||
[
|
[
|
||||||
|
|
Loading…
Reference in New Issue