Kann das bitte mal jemand unter echtem 5.1 testen.
(Bitte die korrekten Positionen nennen.)
Code:
;AL-Test!!! (Kann das bitte mal jemand unter echtem 5.1 testen und die korrekten Positionen angeben)
ImportC "-lalut"
alutInit(p1.i, *p2)
alutGetError()
alutCreateBufferFromFile(*p)
alutExit()
EndImport
ImportC "-lopenal"
alGenSources(p1, *p2)
alSourcei(p1, p2, p3)
alSourcef(p1, p2, p3.f)
alSourcefv(p1, p2, *p3)
alListenerfv(p1, *p2)
alSourcePlay(p)
alSourcePause(p)
alSourceStop(p)
alDeleteBuffers(p1, *p2)
alDeleteSources(p1, *p2)
EndImport
#AL_NONE = 0
#AL_FALSE = 0
#AL_TRUE = 1
#AL_SOURCE_RELATIVE = $202
#AL_CONE_INNER_ANGLE = $1001
#AL_CONE_OUTER_ANGLE = $1002
#AL_PITCH = $1003
#AL_POSITION = $1004
#AL_DIRECTION = $1005
#AL_VELOCITY = $1006
#AL_LOOPING = $1007
#AL_BUFFER = $1009
#AL_GAIN = $100A
#AL_MIN_GAIN = $100D
#AL_MAX_GAIN = $100E
#AL_ORIENTATION = $100F
#AL_SOURCE_STATE = $1010
#AL_INITIAL = $1011
#AL_PLAYING = $1012
#AL_PAUSED = $1013
#AL_STOPPED = $1014
#AL_BUFFERS_QUEUED = $1015
#AL_BUFFERS_PROCESSED = $1016
#AL_REFERENCE_DISTANCE = $1020
#AL_ROLLOFF_FACTOR = $1021
#AL_CONE_OUTER_GAIN = $1022
#AL_MAX_DISTANCE = $1023
#AL_SEC_OFFSET = $1024
#AL_SAMPLE_OFFSET = $1025
#AL_BYTE_OFFSET = $1026
#AL_SOURCE_TYPE = $1027
#AL_STATIC = $1028
#AL_STREAMING = $1029
#AL_UNDETERMINED = $1030
#AL_FORMAT_MONO8 = $1100
#AL_FORMAT_MONO16 = $1101
#AL_FORMAT_STEREO8 = $1102
#AL_FORMAT_STEREO16 = $1103
#AL_FREQUENCY = $2001
#AL_BITS = $2002
#AL_CHANNELS = $2003
#AL_SIZE = $2004
#AL_UNUSED = $2010
#AL_PENDING = $2011
#AL_PROCESSED = $2012
#AL_NO_ERROR = 0
#AL_INVALID_NAME = $A001
#AL_INVALID_ENUM = $A002
#AL_ILLEGAL_ENUM = #AL_INVALID_ENUM
#AL_INVALID_VALUE = $A003
#AL_INVALID_OPERATION = $A004
#AL_ILLEGAL_COMMAND = #AL_INVALID_OPERATION
#AL_OUT_OF_MEMORY = $A005
#AL_VENDOR = $B001
#AL_VERSION = $B002
#AL_RENDERER = $B003
#AL_EXTENSIONS = $B004
#AL_DOPPLER_FACTOR = $C000
#AL_DOPPLER_VELOCITY = $C001
#AL_SPEED_OF_SOUND = $C003
#AL_DISTANCE_MODEL = $D000
#AL_INVERSE_DISTANCE = $D001
#AL_INVERSE_DISTANCE_CLAMPED = $D002
#AL_LINEAR_DISTANCE = $D003
#AL_LINEAR_DISTANCE_CLAMPED = $D004
#AL_EXPONENT_DISTANCE = $D005
#AL_EXPONENT_DISTANCE_CLAMPED = $D006
#ALUT_API_MAJOR_VERSION = 1
#ALUT_API_MINOR_VERSION = 1
#ALUT_ERROR_NO_ERROR = 0
#ALUT_ERROR_OUT_OF_MEMORY = $200
#ALUT_ERROR_INVALID_ENUM = $201
#ALUT_ERROR_INVALID_VALUE = $202
#ALUT_ERROR_INVALID_OPERATION = $203
#ALUT_ERROR_NO_CURRENT_CONTEXT = $204
#ALUT_ERROR_AL_ERROR_ON_ENTRY = $205
#ALUT_ERROR_ALC_ERROR_ON_ENTRY = $206
#ALUT_ERROR_OPEN_DEVICE = $207
#ALUT_ERROR_CLOSE_DEVICE = $208
#ALUT_ERROR_CREATE_CONTEXT = $209
#ALUT_ERROR_MAKE_CONTEXT_CURRENT = $20A
#ALUT_ERROR_DESTROY_CONTEXT = $20B
#ALUT_ERROR_GEN_BUFFERS = $20C
#ALUT_ERROR_BUFFER_DATA = $20D
#ALUT_ERROR_IO_ERROR = $20E
#ALUT_ERROR_UNSUPPORTED_FILE_TYPE = $20F
#ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE = $210
#ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA = $211
#ALUT_WAVEFORM_SINE = $100
#ALUT_WAVEFORM_SQUARE = $101
#ALUT_WAVEFORM_SAWTOOTH = $102
#ALUT_WAVEFORM_WHITENOISE = $103
#ALUT_WAVEFORM_IMPULSE = $104
#ALUT_LOADER_BUFFER = $300
#ALUT_LOADER_MEMORY = $301
Global key.s
Global active.b = #False
Global stereo.b = #True
Global ende.b = #False
alutInit(0, 0)
Soundpath.s = GetCurrentDirectory()+"test.wav" ;Irgend eine Wav-Datei wählen !
Global buffer
buffer = alutCreateBufferFromFile(UTF8(Soundpath))
If( alutGetError() <> #ALUT_ERROR_NO_ERROR )
Debug "Error!!!" : End
EndIf
Global source
alGenSources(1, @source)
Dim SourcePos.f(2)
SourcePos(0) = 0 ; 1 = FRONT-RIGHT / -1 = FRONT-LEFT
SourcePos(1) = 0
SourcePos(2) = 0
Dim SourceVel.f(2)
SourceVel(0) = 0
SourceVel(0) = 0
SourceVel(0) = 0
alSourcei(source, #AL_BUFFER, buffer)
alSourcef(source, #AL_PITCH, 1.0)
alSourcef(source, #AL_GAIN, 1.0)
alSourcei(source, #AL_SOURCE_RELATIVE, #AL_TRUE)
alSourcefv(source, #AL_POSITION, @SourcePos())
alSourcefv(source, #AL_VELOCITY, @SourceVel())
Dim listener_position.f(2)
listener_position(0) = 0
listener_position(1) = 0
listener_position(2) = 0
Dim listener_velocity.f(2)
listener_velocity(0) = 0
listener_velocity(1) = 0
listener_velocity(2) = 0
Dim listener_orientation.f(5)
listener_orientation(0) = 0
listener_orientation(1) = 0
listener_orientation(2) = -1
listener_orientation(3) = 0
listener_orientation(4) = 0
listener_orientation(5) = 1
alListenerfv(#AL_POSITION, @listener_position())
alListenerfv(#AL_VELOCITY, @listener_velocity())
alListenerfv(#AL_ORIENTATION, @listener_orientation())
alSourcei(source, #AL_LOOPING, #AL_TRUE)
OpenConsole()
PrintN("Wähle ein Soundprofil:")
PrintN("1 = Stereo")
PrintN("2 = 5.1 Sound (muss aktiviert sein)")
Repeat
key = Inkey()
If key = Chr(49)
stereo = #True
active = #True
PrintN("Wähle eine Soundposition:")
PrintN("1 = FRONT-LEFT")
PrintN("2 = FRONT-RIGHT")
ElseIf key = Chr(50)
stereo = #False
active = #True
PrintN("Wähle eine Soundposition:")
PrintN("1 = FRONT-LEFT")
PrintN("2 = FRONT-RIGHT")
PrintN("3 = CENTER")
PrintN("4 = BACK-LEFT")
PrintN("5 = BACK-RIGHT")
EndIf
Until active = #True And Len(key) > 0
If active = #True
Repeat
key = Inkey()
If Len(key) > 0
If key = Chr(27)
ende = #True
ElseIf key = Chr(49) And stereo = #True
SourcePos(0) = -1 : SourcePos(1) = 0 : SourcePos(2) = 0 ;FRONT-LEFT
alSourcefv(source, #AL_POSITION, @SourcePos())
alSourcePlay(source)
ElseIf key = Chr(50) And stereo = #True
SourcePos(0) = 1 : SourcePos(1) = 0 : SourcePos(2) = 0 ;FRONT-RIGHT
alSourcefv(source, #AL_POSITION, @SourcePos())
alSourcePlay(source)
ElseIf key = Chr(49) And stereo = #False
;....
ElseIf key = Chr(50) And stereo = #False
;...
ElseIf key = Chr(51) And stereo = #False
;...
ElseIf key = Chr(52) And stereo = #False
;...
ElseIf key = Chr(53) And stereo = #False
;...
EndIf
EndIf
Until ende = #True
EndIf
CloseConsole()
alSourceStop(source)
alDeleteBuffers(1, @buffer)
alDeleteSources(1, @source)
alutExit()