refactor synth.buffers to gen-buffer on send rather than on create

db4
Alex Chapman 2008-05-19 12:36:00 +10:00
parent b43854d72d
commit e8365a795f
1 changed files with 6 additions and 7 deletions

View File

@ -3,20 +3,20 @@
USING: accessors alien.c-types combinators kernel locals math math.constants math.functions math.ranges openal sequences sequences.merged sequences.repeating ; USING: accessors alien.c-types combinators kernel locals math math.constants math.functions math.ranges openal sequences sequences.merged sequences.repeating ;
IN: synth.buffers IN: synth.buffers
TUPLE: buffer sample-freq 8bit? sent? id ; TUPLE: buffer sample-freq 8bit? id ;
: <buffer> ( sample-freq 8bit? -- buffer ) : <buffer> ( sample-freq 8bit? -- buffer )
f gen-buffer buffer boa ; f buffer boa ;
TUPLE: mono-buffer < buffer data ; TUPLE: mono-buffer < buffer data ;
: <mono-buffer> ( sample-freq 8bit? -- buffer ) : <mono-buffer> ( sample-freq 8bit? -- buffer )
f gen-buffer f mono-buffer boa ; f f mono-buffer boa ;
TUPLE: stereo-buffer < buffer left-data right-data ; TUPLE: stereo-buffer < buffer left-data right-data ;
: <stereo-buffer> ( sample-freq 8bit? -- buffer ) : <stereo-buffer> ( sample-freq 8bit? -- buffer )
f gen-buffer f f stereo-buffer boa ; f f f stereo-buffer boa ;
PREDICATE: 8bit-buffer < buffer 8bit?>> ; PREDICATE: 8bit-buffer < buffer 8bit?>> ;
PREDICATE: 16bit-buffer < buffer 8bit?>> not ; PREDICATE: 16bit-buffer < buffer 8bit?>> not ;
@ -59,15 +59,14 @@ M: 16bit-stereo-buffer buffer-data
: send-buffer ( buffer -- buffer ) : send-buffer ( buffer -- buffer )
{ {
[ id>> ] [ gen-buffer dup [ >>id ] dip ]
[ buffer-format ] [ buffer-format ]
[ buffer-data ] [ buffer-data ]
[ sample-freq>> alBufferData ] [ sample-freq>> alBufferData ]
[ t >>sent? ]
} cleave ; } cleave ;
: ?send-buffer ( buffer -- buffer ) : ?send-buffer ( buffer -- buffer )
dup sent?>> [ send-buffer ] unless ; dup id>> [ send-buffer ] unless ;
: (sine-wave) ( samples/wave n-samples -- seq ) : (sine-wave) ( samples/wave n-samples -- seq )
pi 2 * pick / swapd [ * sin ] curry map swap <repeating> ; pi 2 * pick / swapd [ * sin ] curry map swap <repeating> ;