46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			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) ;
 |