123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510 |
- ' Copyright (c) 2024 Bruce A Henderson
- '
- ' This software is provided 'as-is', without any express or implied
- ' warranty. In no event will the authors be held liable for any damages
- ' arising from the use of this software.
- '
- ' Permission is granted to anyone to use this software for any purpose,
- ' including commercial applications, and to alter it and redistribute it
- ' freely, subject to the following restrictions:
- '
- ' 1. The origin of this software must not be misrepresented; you must not
- ' claim that you wrote the original software. If you use this software
- ' in a product, an acknowledgment in the product documentation would be
- ' appreciated but is not required.
- '
- ' 2. Altered source versions must be plainly marked as such, and must not be
- ' misrepresented as being the original software.
- '
- ' 3. This notice may not be removed or altered from any source
- ' distribution.
- '
- SuperStrict
- Rem
- bbdoc: Raylib Audio - Simple and easy-to-use audio library
- End Rem
- Module Ray.Audio
- ModuleInfo "Version: 1.00"
- ModuleInfo "License: zlib"
- ModuleInfo "Copyright: Wrapper - 2024 Bruce A Henderson"
- ModuleInfo "Copyright: raylib - 2013-2024 Ramon Santamaria"
- ModuleInfo "History: 1.00"
- ModuleInfo "History: Initial Release."
- ModuleInfo "CC_OPTS: -std=c99"
- ModuleInfo "CC_OPTS: -DSTATIC"
- ModuleInfo "CC_OPTS: -DSUPPORT_CAMERA_SYSTEM"
- ModuleInfo "CC_OPTS: -DSUPPORT_FILEFORMAT_OGG -DSUPPORT_FILEFORMAT_XM -DSUPPORT_FILEFORMAT_MOD -DSUPPORT_FILEFORMAT_FLAC -DSUPPORT_FILEFORMAT_MP3"
- ?win32
- ModuleInfo "CC_OPTS: -DPLATFORM_DESKTOP"
- ModuleInfo "CC_OPTS: -D_GLFW_WIN32"
- ?osx
- ModuleInfo "CC_OPTS: -DPLATFORM_DESKTOP"
- ModuleInfo "CC_OPTS: -D_GLFW_COCOA"
- ?linux And Not raspberrypi
- ModuleInfo "CC_OPTS: -DPLATFORM_DESKTOP"
- ModuleInfo "CC_OPTS: -D_POSIX_C_SOURCE=199309L"
- ModuleInfo "CC_OPTS: -D_GLFW_X11"
- ?raspberrypi
- ModuleInfo "CC_OPTS: -DPLATFORM_RPI"
- ModuleInfo "CC_OPTS: -D_GLFW_X11"
- ?
- Import "common.bmx"
- Rem
- bbdoc: Initializes audio device and context.
- End Rem
- Function InitAudioDevice()
- bmx_raylib_InitAudioDevice()
- End Function
- Rem
- bbdoc: Closes the audio device and context.
- End Rem
- Function CloseAudioDevice()
- bmx_raylib_CloseAudioDevice()
- End Function
- Rem
- bbdoc: Checks if audio device has been initialized successfully.
- End Rem
- Function IsAudioDeviceReady:Int()
- Return bmx_raylib_IsAudioDeviceReady()
- End Function
- Rem
- bbdoc: Sets master volume (listener).
- End Rem
- Function SetMasterVolume(volume:Float)
- bmx_raylib_SetMasterVolume(volume)
- End Function
- Rem
- bbdoc: Gets master volume (listener).
- End Rem
- Function GetMasterVolume:Float()
- Return bmx_raylib_GetMasterVolume()
- End Function
- ' Wave/Sound loading/unloading functions
- Rem
- bbdoc: Loads wave data from file.
- End Rem
- Function LoadWave:RWave(filename:String)
- Local f:Byte Ptr = filename.ToUTF8String()
- Local wave:RWave = bmx_raylib_LoadWave(f)
- MemFree(f)
- Return wave
- End Function
- Function LoadWaveFromMemory:RWave(fileType:String, data:Byte Ptr, dataSize:Int)
- Local f:Byte Ptr = fileType.ToUTF8String()
- Local wave:RWave = bmx_raylib_LoadWaveFromMemory(f, data, dataSize)
- MemFree(f)
- Return wave
- End Function
- Function IsWaveValid:Int(wave:RWave)
- Return bmx_raylib_IsWaveValid(wave)
- End Function
- Rem
- bbdoc: Loads sound from file.
- End Rem
- Function LoadSound:RSound(filename:String)
- Local f:Byte Ptr = filename.ToUTF8String()
- Local sound:RSound = bmx_raylib_LoadSound(f)
- MemFree(f)
- Return sound
- End Function
- Rem
- bbdoc: Loads sound from wave data.
- End Rem
- Function LoadSoundFromWave:RSound(wave:RWave)
- Return bmx_raylib_LoadSoundFromWave(wave)
- End Function
- Function LoadSoundAlias:RSound(source:RSound)
- Return bmx_raylib_LoadSoundAlias(source)
- End Function
- Function IsSoundValid:Int(sound:RSound)
- Return bmx_raylib_IsSoundValid(sound)
- End Function
- Rem
- bbdoc: Updates sound buffer with new data.
- End Rem
- Function UpdateSound(sound:RSound, data:Byte Ptr, samplesCount:Int)
- bmx_raylib_UpdateSound(sound, data, samplesCount)
- End Function
- Rem
- bbdoc: Unloads wave data.
- End Rem
- Function UnloadWave(wave:RWave)
- bmx_raylib_UnloadWave(wave)
- End Function
- Rem
- bbdoc: Unloads sound.
- End Rem
- Function UnloadSound(sound:RSound)
- bmx_raylib_UnloadSound(sound)
- End Function
- Function UnloadSoundAlias(sound:RSound)
- bmx_raylib_UnloadSoundAlias(sound)
- End Function
- Rem
- bbdoc: Exports wave data to file.
- End Rem
- Function ExportWave(wave:RWave, filename:String)
- Local f:Byte Ptr = filename.ToUTF8String()
- bmx_raylib_ExportWave(wave, f)
- MemFree(f)
- End Function
- Rem
- bbdoc: Exports wave sample data to code (.h).
- End Rem
- Function ExportWaveAsCode(wave:RWave, filename:String)
- Local f:Byte Ptr = filename.ToUTF8String()
- bmx_raylib_ExportWaveAsCode(wave, f)
- MemFree(f)
- End Function
- ' Wave/Sound management functions
- Rem
- bbdoc: Plays a sound.
- End Rem
- Function PlaySound(sound:RSound)
- bmx_raylib_PlaySound(sound)
- End Function
- Rem
- bbdoc: Stops playing a sound.
- End Rem
- Function StopSound(sound:RSound)
- bmx_raylib_StopSound(sound)
- End Function
- Rem
- bbdoc: Pauses a sound.
- End Rem
- Function PauseSound(sound:RSound)
- bmx_raylib_PauseSound(sound)
- End Function
- Rem
- bbdoc: Resumes a paused sound.
- End Rem
- Function ResumeSound(sound:RSound)
- bmx_raylib_ResumeSound(sound)
- End Function
- Rem
- bbdoc: Checks if a sound is currently playing.
- End Rem
- Function IsSoundPlaying:Int(sound:RSound)
- bmx_raylib_IsSoundPlaying(sound)
- End Function
- Rem
- bbdoc: Sets volume for a sound (1.0 is max level).
- End Rem
- Function SetSoundVolume(sound:RSound, volume:Float)
- bmx_raylib_SetSoundVolume(sound, volume)
- End Function
- Rem
- bbdoc: Sets pitch for a sound (1.0 is base level).
- End Rem
- Function SetSoundPitch(sound:RSound, pitch:Float)
- bmx_raylib_SetSoundPitch(sound, pitch)
- End Function
- Function SetSoundPan(sound:RSound, pan:Float)
- bmx_raylib_SetSoundPan(sound, pan)
- End Function
- Rem
- bbdoc: Copies a wave to a new wave.
- End Rem
- Function WaveCopy:RWave(wave:RWave)
- Return bmx_raylib_WaveCopy(wave)
- End Function
- Rem
- bbdoc: Crops a wave to defined samples range.
- End Rem
- Function WaveCrop(wave:RWave Var, initSample:Int, finalSample:Int)
- bmx_raylib_WaveCrop(wave, initSample, finalSample)
- End Function
- Rem
- bbdoc: Converts wave data to desired format.
- End Rem
- Function WaveFormat(wave:RWave Var, sampleRate:Int, sampleSize:Int, channels:Int)
- bmx_raylib_WaveFormat(wave, sampleRate, sampleSize, channels)
- End Function
- Rem
- bbdoc: Gets samples data from wave as a floats array.
- End Rem
- Function LoadWaveSamples:Float Ptr(wave:RWave)
- Return bmx_raylib_LoadWaveSamples(wave)
- End Function
- Function UnloadWaveSamples(data:Float Ptr)
- bmx_raylib_UnloadWaveSamples(data)
- End Function
- ' Music management functions
- Rem
- bbdoc: Loads music stream from file.
- End Rem
- Function LoadMusicStream:RMusic(filename:String)
- Local f:Byte Ptr = filename.ToUTF8String()
- Local music:RMusic = bmx_raylib_LoadMusicStream(f)
- MemFree(f)
- Return music
- End Function
- Function LoadMusicStreamFromMemory:RMusic(fileType:String, data:Byte Ptr, dataSize:Int)
- Local f:Byte Ptr = fileType.ToUTF8String()
- Local music:RMusic = bmx_raylib_LoadMusicStreamFromMemory(f, data, dataSize)
- MemFree(f)
- Return music
- End Function
- Function IsMusicValid:Int(music:RMusic)
- Return bmx_raylib_IsMusicValid(music)
- End Function
- Rem
- bbdoc: Unloads music stream.
- End Rem
- Function UnloadMusicStream(music:RMusic)
- bmx_raylib_UnloadMusicStream(music)
- End Function
- Rem
- bbdoc: Starts music playing.
- End Rem
- Function PlayMusicStream(music:RMusic)
- bmx_raylib_PlayMusicStream(music)
- End Function
- Function IsMusicStreamPlaying:Int(music:RMusic)
- Return bmx_raylib_IsMusicStreamPlaying(music)
- End Function
- Rem
- bbdoc: Updates buffers for music streaming.
- End Rem
- Function UpdateMusicStream(music:RMusic)
- bmx_raylib_UpdateMusicStream(music)
- End Function
- Rem
- bbdoc: Stops music playing.
- End Rem
- Function StopMusicStream(music:RMusic)
- bmx_raylib_StopMusicStream(music)
- End Function
- Rem
- bbdoc: Pauses music playing.
- End Rem
- Function PauseMusicStream(music:RMusic)
- bmx_raylib_PauseMusicStream(music)
- End Function
- Rem
- bbdoc: Resumes playing paused music.
- End Rem
- Function ResumeMusicStream(music:RMusic)
- bmx_raylib_ResumeMusicStream(music)
- End Function
- Function SeekMusicStream(music:RMusic, position:Float)
- bmx_raylib_SeekMusicStream(music, position)
- End Function
- Rem
- bbdoc: Sets volume for music (1.0 is max level).
- End Rem
- Function SetMusicVolume(music:RMusic, volume:Float)
- bmx_raylib_SetMusicVolume(music, volume)
- End Function
- Rem
- bbdoc: Sets pitch for a music (1.0 is base level).
- End Rem
- Function SetMusicPitch(music:RMusic, pitch:Float)
- bmx_raylib_SetMusicPitch(music, pitch)
- End Function
- Function SetMusicPan(music:RMusic, pan:Float)
- bmx_raylib_SetMusicPan(music, pan)
- End Function
- Rem
- bbdoc: Gets music time length (in seconds).
- End Rem
- Function GetMusicTimeLength:Float(music:RMusic)
- Return bmx_raylib_GetMusicTimeLength(music)
- End Function
- Rem
- bbdoc: Gets current music time played (in seconds).
- End Rem
- Function GetMusicTimePlayed:Float(music:RMusic)
- Return bmx_raylib_GetMusicTimePlayed(music)
- End Function
- ' AudioStream management functions
- Rem
- bbdoc: Inits audio stream (to stream raw audio pcm data).
- End Rem
- Function LoadAudioStream:RAudioStream(sampleRate:UInt, sampleSize:UInt, channels:UInt)
- Return bmx_raylib_LoadAudioStream(sampleRate, sampleSize, channels)
- End Function
- Rem
- bbdoc: Checks if an audio stream is valid (buffers initialized).
- End Rem
- Function IsAudioStreamValid:Int(stream:RAudioStream)
- Return bmx_raylib_IsAudioStreamValid(stream)
- End Function
- Rem
- bbdoc: Unloads audio stream and free memory.
- End Rem
- Function UnloadAudioStream(stream:RAudioStream)
- bmx_raylib_UnloadAudioStream(stream)
- End Function
- Rem
- bbdoc: Updates audio stream buffers with data.
- End Rem
- Function UpdateAudioStream(stream:RAudioStream, data:Byte Ptr, samplesCount:Int)
- bmx_raylib_UpdateAudioStream(stream, data, samplesCount)
- End Function
- Rem
- bbdoc: Checks if any audio stream buffers requires refill.
- End Rem
- Function IsAudioStreamProcessed:Int(stream:RAudioStream)
- Return bmx_raylib_IsAudioStreamProcessed(stream)
- End Function
- Rem
- bbdoc: Plays audio stream.
- End Rem
- Function PlayAudioStream(stream:RAudioStream)
- bmx_raylib_PlayAudioStream(stream)
- End Function
- Rem
- bbdoc: Pauses audio stream.
- End Rem
- Function PauseAudioStream(stream:RAudioStream)
- bmx_raylib_PauseAudioStream(stream)
- End Function
- Rem
- bbdoc: Resumes audio stream.
- End Rem
- Function ResumeAudioStream(stream:RAudioStream)
- bmx_raylib_ResumeAudioStream(stream)
- End Function
- Rem
- bbdoc: Checks if audio stream is playing.
- End Rem
- Function IsAudioStreamPlaying:Int(stream:RAudioStream)
- Return bmx_raylib_IsAudioStreamPlaying(stream)
- End Function
- Rem
- bbdoc: Stops audio stream.
- End Rem
- Function StopAudioStream(stream:RAudioStream)
- bmx_raylib_StopAudioStream(stream)
- End Function
- Rem
- bbdoc: Sets volume for audio stream (1.0 is max level).
- End Rem
- Function SetAudioStreamVolume(stream:RAudioStream, volume:Float)
- bmx_raylib_SetAudioStreamVolume(stream, volume)
- End Function
- Rem
- bbdoc: Sets pitch for audio stream (1.0 is base level).
- End Rem
- Function SetAudioStreamPitch(stream:RAudioStream, pitch:Float)
- bmx_raylib_SetAudioStreamPitch(stream, pitch)
- End Function
- Rem
- bbdoc: Sets pan for audio stream (0.5 is centered).
- End Rem
- Function SetAudioStreamPan(stream:RAudioStream, pan:Float)
- bmx_raylib_SetAudioStreamPan(stream, pan)
- End Function
- Rem
- bbdoc: Sets the default buffer size for new audio streams.
- End Rem
- Function SetAudioStreamBufferSizeDefault(size:Int)
- bmx_raylib_SetAudioStreamBufferSizeDefault(size)
- End Function
- Rem
- bbdoc: Sets audio thread callback to request new data.
- End Rem
- Function SetAudioStreamCallback(stream:RAudioStream, processor(data:Byte Ptr, frames:UInt))
- bmx_raylib_SetAudioStreamCallback(stream, processor)
- End Function
- Rem
- bbdoc: Attaches audio stream processor to stream, receives the samples as 'float'.
- End Rem
- Function AttachAudioStreamProcessor(stream:RAudioStream, processor(data:Byte Ptr, frames:UInt))
- bmx_raylib_AttachAudioStreamProcessor(stream, processor)
- End Function
- Rem
- bbdoc: Detaches audio stream processor from stream.
- End Rem
- Function DetachAudioStreamProcessor(stream:RAudioStream, processor(data:Byte Ptr, frames:UInt))
- bmx_raylib_DetachAudioStreamProcessor(stream, processor)
- End Function
- Rem
- bbdoc: Attaches audio stream processor to the entire audio pipeline, receives the samples as 'float'.
- End Rem
- Function AttachAudioMixedProcessor(processor(data:Byte Ptr, frames:UInt))
- bmx_raylib_AttachAudioMixedProcessor(processor)
- End Function
- Rem
- bbdoc: Detaches audio stream processor from the entire audio pipeline.
- End Rem
- Function DetachAudioMixedProcessor(processor(data:Byte Ptr, frames:UInt))
- bmx_raylib_DetachAudioMixedProcessor(processor)
- End Function
|