factor/extra/openal/example/example.factor

46 lines
1.1 KiB
Factor

! Copyright (C) 2007 Chris Double.
! See http://factorcode.org/license.txt for BSD license.
USING: calendar kernel openal openal.alut sequences threads ;
IN: openal.example
: play-hello ( -- )
init-openal
1 gen-sources
first dup AL_BUFFER alutCreateBufferHelloWorld set-source-param
source-play
1000 milliseconds sleep ;
: play-waveform ( waveshape freq phase duration -- )
init-openal
[
[ 1 gen-sources first dup AL_BUFFER ] 4dip
alutCreateBufferWaveform
set-source-param
source-play
] [ seconds sleep ] bi ;
: play-sine ( freq duration -- )
[ ALUT_WAVEFORM_SINE ] 2dip [ 0 ] dip play-waveform ;
: (play-file) ( source -- )
100 milliseconds sleep
dup source-playing? [ (play-file) ] [ drop ] if ;
: play-file ( filename -- )
init-openal
create-buffer-from-file
1 gen-sources
first dup [ AL_BUFFER rot set-source-param ] dip
dup source-play
check-error
(play-file) ;
: play-wav ( filename -- )
init-openal
create-buffer-from-wav
1 gen-sources
first dup [ AL_BUFFER rot set-source-param ] dip
dup source-play
check-error
(play-file) ;