# SoLoud wrapper for Ruby
# This file is autogenerated; any changes will be overwritten

require "dl/import"

module SoLoudImporter
	extend DL::Importer
	dlload 'soloud_x86.dll'

	# Enumerations
	SOLOUD_AUTO=0
	SOLOUD_SDL1=1
	SOLOUD_SDL2=2
	SOLOUD_PORTAUDIO=3
	SOLOUD_WINMM=4
	SOLOUD_XAUDIO2=5
	SOLOUD_WASAPI=6
	SOLOUD_ALSA=7
	SOLOUD_JACK=8
	SOLOUD_OSS=9
	SOLOUD_OPENAL=10
	SOLOUD_COREAUDIO=11
	SOLOUD_OPENSLES=12
	SOLOUD_VITA_HOMEBREW=13
	SOLOUD_MINIAUDIO=14
	SOLOUD_NOSOUND=15
	SOLOUD_NULLDRIVER=16
	SOLOUD_BACKEND_MAX=17
	SOLOUD_CLIP_ROUNDOFF=1
	SOLOUD_ENABLE_VISUALIZATION=2
	SOLOUD_LEFT_HANDED_3D=4
	SOLOUD_NO_FPU_REGISTER_CHANGE=8
	BASSBOOSTFILTER_WET=0
	BASSBOOSTFILTER_BOOST=1
	BIQUADRESONANTFILTER_LOWPASS=0
	BIQUADRESONANTFILTER_HIGHPASS=1
	BIQUADRESONANTFILTER_BANDPASS=2
	BIQUADRESONANTFILTER_WET=0
	BIQUADRESONANTFILTER_TYPE=1
	BIQUADRESONANTFILTER_FREQUENCY=2
	BIQUADRESONANTFILTER_RESONANCE=3
	ECHOFILTER_WET=0
	ECHOFILTER_DELAY=1
	ECHOFILTER_DECAY=2
	ECHOFILTER_FILTER=3
	FLANGERFILTER_WET=0
	FLANGERFILTER_DELAY=1
	FLANGERFILTER_FREQ=2
	FREEVERBFILTER_WET=0
	FREEVERBFILTER_FREEZE=1
	FREEVERBFILTER_ROOMSIZE=2
	FREEVERBFILTER_DAMP=3
	FREEVERBFILTER_WIDTH=4
	LOFIFILTER_WET=0
	LOFIFILTER_SAMPLERATE=1
	LOFIFILTER_BITDEPTH=2
	NOISE_WHITE=0
	NOISE_PINK=1
	NOISE_BROWNISH=2
	NOISE_BLUEISH=3
	ROBOTIZEFILTER_WET=0
	ROBOTIZEFILTER_FREQ=1
	ROBOTIZEFILTER_WAVE=2
	SFXR_COIN=0
	SFXR_LASER=1
	SFXR_EXPLOSION=2
	SFXR_POWERUP=3
	SFXR_HURT=4
	SFXR_JUMP=5
	SFXR_BLIP=6
	SPEECH_KW_SAW=0
	SPEECH_KW_TRIANGLE=1
	SPEECH_KW_SIN=2
	SPEECH_KW_SQUARE=3
	SPEECH_KW_PULSE=4
	SPEECH_KW_NOISE=5
	SPEECH_KW_WARBLE=6
	VIC_PAL=0
	VIC_NTSC=1
	VIC_BASS=0
	VIC_ALTO=1
	VIC_SOPRANO=2
	VIC_NOISE=3
	VIC_MAX_REGS=4
	WAVESHAPERFILTER_WET=0
	WAVESHAPERFILTER_AMOUNT=1

	# Raw DLL functions
	extern "void Soloud_destroy(Soloud *)"
	extern "Soloud * Soloud_create()"
	extern "int Soloud_init(Soloud *)"
	extern "int Soloud_initEx(Soloud *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)"
	extern "void Soloud_deinit(Soloud *)"
	extern "unsigned int Soloud_getVersion(Soloud *)"
	extern "const char * Soloud_getErrorString(Soloud *, int)"
	extern "unsigned int Soloud_getBackendId(Soloud *)"
	extern "const char * Soloud_getBackendString(Soloud *)"
	extern "unsigned int Soloud_getBackendChannels(Soloud *)"
	extern "unsigned int Soloud_getBackendSamplerate(Soloud *)"
	extern "unsigned int Soloud_getBackendBufferSize(Soloud *)"
	extern "int Soloud_setSpeakerPosition(Soloud *, unsigned int, float, float, float)"
	extern "int Soloud_getSpeakerPosition(Soloud *, unsigned int, float *, float *, float *)"
	extern "unsigned int Soloud_play(Soloud *, AudioSource *)"
	extern "unsigned int Soloud_playEx(Soloud *, AudioSource *, float, float, int, unsigned int)"
	extern "unsigned int Soloud_playClocked(Soloud *, double, AudioSource *)"
	extern "unsigned int Soloud_playClockedEx(Soloud *, double, AudioSource *, float, float, unsigned int)"
	extern "unsigned int Soloud_play3d(Soloud *, AudioSource *, float, float, float)"
	extern "unsigned int Soloud_play3dEx(Soloud *, AudioSource *, float, float, float, float, float, float, float, int, unsigned int)"
	extern "unsigned int Soloud_play3dClocked(Soloud *, double, AudioSource *, float, float, float)"
	extern "unsigned int Soloud_play3dClockedEx(Soloud *, double, AudioSource *, float, float, float, float, float, float, float, unsigned int)"
	extern "unsigned int Soloud_playBackground(Soloud *, AudioSource *)"
	extern "unsigned int Soloud_playBackgroundEx(Soloud *, AudioSource *, float, int, unsigned int)"
	extern "int Soloud_seek(Soloud *, unsigned int, double)"
	extern "void Soloud_stop(Soloud *, unsigned int)"
	extern "void Soloud_stopAll(Soloud *)"
	extern "void Soloud_stopAudioSource(Soloud *, AudioSource *)"
	extern "int Soloud_countAudioSource(Soloud *, AudioSource *)"
	extern "void Soloud_setFilterParameter(Soloud *, unsigned int, unsigned int, unsigned int, float)"
	extern "float Soloud_getFilterParameter(Soloud *, unsigned int, unsigned int, unsigned int)"
	extern "void Soloud_fadeFilterParameter(Soloud *, unsigned int, unsigned int, unsigned int, float, double)"
	extern "void Soloud_oscillateFilterParameter(Soloud *, unsigned int, unsigned int, unsigned int, float, float, double)"
	extern "double Soloud_getStreamTime(Soloud *, unsigned int)"
	extern "double Soloud_getStreamPosition(Soloud *, unsigned int)"
	extern "int Soloud_getPause(Soloud *, unsigned int)"
	extern "float Soloud_getVolume(Soloud *, unsigned int)"
	extern "float Soloud_getOverallVolume(Soloud *, unsigned int)"
	extern "float Soloud_getPan(Soloud *, unsigned int)"
	extern "float Soloud_getSamplerate(Soloud *, unsigned int)"
	extern "int Soloud_getProtectVoice(Soloud *, unsigned int)"
	extern "unsigned int Soloud_getActiveVoiceCount(Soloud *)"
	extern "unsigned int Soloud_getVoiceCount(Soloud *)"
	extern "int Soloud_isValidVoiceHandle(Soloud *, unsigned int)"
	extern "float Soloud_getRelativePlaySpeed(Soloud *, unsigned int)"
	extern "float Soloud_getPostClipScaler(Soloud *)"
	extern "float Soloud_getGlobalVolume(Soloud *)"
	extern "unsigned int Soloud_getMaxActiveVoiceCount(Soloud *)"
	extern "int Soloud_getLooping(Soloud *, unsigned int)"
	extern "double Soloud_getLoopPoint(Soloud *, unsigned int)"
	extern "void Soloud_setLoopPoint(Soloud *, unsigned int, double)"
	extern "void Soloud_setLooping(Soloud *, unsigned int, int)"
	extern "int Soloud_setMaxActiveVoiceCount(Soloud *, unsigned int)"
	extern "void Soloud_setInaudibleBehavior(Soloud *, unsigned int, int, int)"
	extern "void Soloud_setGlobalVolume(Soloud *, float)"
	extern "void Soloud_setPostClipScaler(Soloud *, float)"
	extern "void Soloud_setPause(Soloud *, unsigned int, int)"
	extern "void Soloud_setPauseAll(Soloud *, int)"
	extern "int Soloud_setRelativePlaySpeed(Soloud *, unsigned int, float)"
	extern "void Soloud_setProtectVoice(Soloud *, unsigned int, int)"
	extern "void Soloud_setSamplerate(Soloud *, unsigned int, float)"
	extern "void Soloud_setPan(Soloud *, unsigned int, float)"
	extern "void Soloud_setPanAbsolute(Soloud *, unsigned int, float, float)"
	extern "void Soloud_setPanAbsoluteEx(Soloud *, unsigned int, float, float, float, float, float, float)"
	extern "void Soloud_setVolume(Soloud *, unsigned int, float)"
	extern "void Soloud_setDelaySamples(Soloud *, unsigned int, unsigned int)"
	extern "void Soloud_fadeVolume(Soloud *, unsigned int, float, double)"
	extern "void Soloud_fadePan(Soloud *, unsigned int, float, double)"
	extern "void Soloud_fadeRelativePlaySpeed(Soloud *, unsigned int, float, double)"
	extern "void Soloud_fadeGlobalVolume(Soloud *, float, double)"
	extern "void Soloud_schedulePause(Soloud *, unsigned int, double)"
	extern "void Soloud_scheduleStop(Soloud *, unsigned int, double)"
	extern "void Soloud_oscillateVolume(Soloud *, unsigned int, float, float, double)"
	extern "void Soloud_oscillatePan(Soloud *, unsigned int, float, float, double)"
	extern "void Soloud_oscillateRelativePlaySpeed(Soloud *, unsigned int, float, float, double)"
	extern "void Soloud_oscillateGlobalVolume(Soloud *, float, float, double)"
	extern "void Soloud_setGlobalFilter(Soloud *, unsigned int, Filter *)"
	extern "void Soloud_setVisualizationEnable(Soloud *, int)"
	extern "float * Soloud_calcFFT(Soloud *)"
	extern "float * Soloud_getWave(Soloud *)"
	extern "float Soloud_getApproximateVolume(Soloud *, unsigned int)"
	extern "unsigned int Soloud_getLoopCount(Soloud *, unsigned int)"
	extern "float Soloud_getInfo(Soloud *, unsigned int, unsigned int)"
	extern "unsigned int Soloud_createVoiceGroup(Soloud *)"
	extern "int Soloud_destroyVoiceGroup(Soloud *, unsigned int)"
	extern "int Soloud_addVoiceToGroup(Soloud *, unsigned int, unsigned int)"
	extern "int Soloud_isVoiceGroup(Soloud *, unsigned int)"
	extern "int Soloud_isVoiceGroupEmpty(Soloud *, unsigned int)"
	extern "void Soloud_update3dAudio(Soloud *)"
	extern "int Soloud_set3dSoundSpeed(Soloud *, float)"
	extern "float Soloud_get3dSoundSpeed(Soloud *)"
	extern "void Soloud_set3dListenerParameters(Soloud *, float, float, float, float, float, float, float, float, float)"
	extern "void Soloud_set3dListenerParametersEx(Soloud *, float, float, float, float, float, float, float, float, float, float, float, float)"
	extern "void Soloud_set3dListenerPosition(Soloud *, float, float, float)"
	extern "void Soloud_set3dListenerAt(Soloud *, float, float, float)"
	extern "void Soloud_set3dListenerUp(Soloud *, float, float, float)"
	extern "void Soloud_set3dListenerVelocity(Soloud *, float, float, float)"
	extern "void Soloud_set3dSourceParameters(Soloud *, unsigned int, float, float, float)"
	extern "void Soloud_set3dSourceParametersEx(Soloud *, unsigned int, float, float, float, float, float, float)"
	extern "void Soloud_set3dSourcePosition(Soloud *, unsigned int, float, float, float)"
	extern "void Soloud_set3dSourceVelocity(Soloud *, unsigned int, float, float, float)"
	extern "void Soloud_set3dSourceMinMaxDistance(Soloud *, unsigned int, float, float)"
	extern "void Soloud_set3dSourceAttenuation(Soloud *, unsigned int, unsigned int, float)"
	extern "void Soloud_set3dSourceDopplerFactor(Soloud *, unsigned int, float)"
	extern "void Soloud_mix(Soloud *, float *, unsigned int)"
	extern "void Soloud_mixSigned16(Soloud *, short *, unsigned int)"
	extern "void BassboostFilter_destroy(BassboostFilter *)"
	extern "int BassboostFilter_getParamCount(BassboostFilter *)"
	extern "const char * BassboostFilter_getParamName(BassboostFilter *, unsigned int)"
	extern "unsigned int BassboostFilter_getParamType(BassboostFilter *, unsigned int)"
	extern "float BassboostFilter_getParamMax(BassboostFilter *, unsigned int)"
	extern "float BassboostFilter_getParamMin(BassboostFilter *, unsigned int)"
	extern "int BassboostFilter_setParams(BassboostFilter *, float)"
	extern "BassboostFilter * BassboostFilter_create()"
	extern "void BiquadResonantFilter_destroy(BiquadResonantFilter *)"
	extern "int BiquadResonantFilter_getParamCount(BiquadResonantFilter *)"
	extern "const char * BiquadResonantFilter_getParamName(BiquadResonantFilter *, unsigned int)"
	extern "unsigned int BiquadResonantFilter_getParamType(BiquadResonantFilter *, unsigned int)"
	extern "float BiquadResonantFilter_getParamMax(BiquadResonantFilter *, unsigned int)"
	extern "float BiquadResonantFilter_getParamMin(BiquadResonantFilter *, unsigned int)"
	extern "BiquadResonantFilter * BiquadResonantFilter_create()"
	extern "int BiquadResonantFilter_setParams(BiquadResonantFilter *, int, float, float)"
	extern "void Bus_destroy(Bus *)"
	extern "Bus * Bus_create()"
	extern "void Bus_setFilter(Bus *, unsigned int, Filter *)"
	extern "unsigned int Bus_play(Bus *, AudioSource *)"
	extern "unsigned int Bus_playEx(Bus *, AudioSource *, float, float, int)"
	extern "unsigned int Bus_playClocked(Bus *, double, AudioSource *)"
	extern "unsigned int Bus_playClockedEx(Bus *, double, AudioSource *, float, float)"
	extern "unsigned int Bus_play3d(Bus *, AudioSource *, float, float, float)"
	extern "unsigned int Bus_play3dEx(Bus *, AudioSource *, float, float, float, float, float, float, float, int)"
	extern "unsigned int Bus_play3dClocked(Bus *, double, AudioSource *, float, float, float)"
	extern "unsigned int Bus_play3dClockedEx(Bus *, double, AudioSource *, float, float, float, float, float, float, float)"
	extern "int Bus_setChannels(Bus *, unsigned int)"
	extern "void Bus_setVisualizationEnable(Bus *, int)"
	extern "void Bus_annexSound(Bus *, unsigned int)"
	extern "float * Bus_calcFFT(Bus *)"
	extern "float * Bus_getWave(Bus *)"
	extern "float Bus_getApproximateVolume(Bus *, unsigned int)"
	extern "unsigned int Bus_getActiveVoiceCount(Bus *)"
	extern "void Bus_setVolume(Bus *, float)"
	extern "void Bus_setLooping(Bus *, int)"
	extern "void Bus_set3dMinMaxDistance(Bus *, float, float)"
	extern "void Bus_set3dAttenuation(Bus *, unsigned int, float)"
	extern "void Bus_set3dDopplerFactor(Bus *, float)"
	extern "void Bus_set3dListenerRelative(Bus *, int)"
	extern "void Bus_set3dDistanceDelay(Bus *, int)"
	extern "void Bus_set3dCollider(Bus *, AudioCollider *)"
	extern "void Bus_set3dColliderEx(Bus *, AudioCollider *, int)"
	extern "void Bus_set3dAttenuator(Bus *, AudioAttenuator *)"
	extern "void Bus_setInaudibleBehavior(Bus *, int, int)"
	extern "void Bus_setLoopPoint(Bus *, double)"
	extern "double Bus_getLoopPoint(Bus *)"
	extern "void Bus_stop(Bus *)"
	extern "void DCRemovalFilter_destroy(DCRemovalFilter *)"
	extern "DCRemovalFilter * DCRemovalFilter_create()"
	extern "int DCRemovalFilter_setParams(DCRemovalFilter *)"
	extern "int DCRemovalFilter_setParamsEx(DCRemovalFilter *, float)"
	extern "int DCRemovalFilter_getParamCount(DCRemovalFilter *)"
	extern "const char * DCRemovalFilter_getParamName(DCRemovalFilter *, unsigned int)"
	extern "unsigned int DCRemovalFilter_getParamType(DCRemovalFilter *, unsigned int)"
	extern "float DCRemovalFilter_getParamMax(DCRemovalFilter *, unsigned int)"
	extern "float DCRemovalFilter_getParamMin(DCRemovalFilter *, unsigned int)"
	extern "void EchoFilter_destroy(EchoFilter *)"
	extern "int EchoFilter_getParamCount(EchoFilter *)"
	extern "const char * EchoFilter_getParamName(EchoFilter *, unsigned int)"
	extern "unsigned int EchoFilter_getParamType(EchoFilter *, unsigned int)"
	extern "float EchoFilter_getParamMax(EchoFilter *, unsigned int)"
	extern "float EchoFilter_getParamMin(EchoFilter *, unsigned int)"
	extern "EchoFilter * EchoFilter_create()"
	extern "int EchoFilter_setParams(EchoFilter *, float)"
	extern "int EchoFilter_setParamsEx(EchoFilter *, float, float, float)"
	extern "void FFTFilter_destroy(FFTFilter *)"
	extern "FFTFilter * FFTFilter_create()"
	extern "int FFTFilter_getParamCount(FFTFilter *)"
	extern "const char * FFTFilter_getParamName(FFTFilter *, unsigned int)"
	extern "unsigned int FFTFilter_getParamType(FFTFilter *, unsigned int)"
	extern "float FFTFilter_getParamMax(FFTFilter *, unsigned int)"
	extern "float FFTFilter_getParamMin(FFTFilter *, unsigned int)"
	extern "void FlangerFilter_destroy(FlangerFilter *)"
	extern "int FlangerFilter_getParamCount(FlangerFilter *)"
	extern "const char * FlangerFilter_getParamName(FlangerFilter *, unsigned int)"
	extern "unsigned int FlangerFilter_getParamType(FlangerFilter *, unsigned int)"
	extern "float FlangerFilter_getParamMax(FlangerFilter *, unsigned int)"
	extern "float FlangerFilter_getParamMin(FlangerFilter *, unsigned int)"
	extern "FlangerFilter * FlangerFilter_create()"
	extern "int FlangerFilter_setParams(FlangerFilter *, float, float)"
	extern "void FreeverbFilter_destroy(FreeverbFilter *)"
	extern "int FreeverbFilter_getParamCount(FreeverbFilter *)"
	extern "const char * FreeverbFilter_getParamName(FreeverbFilter *, unsigned int)"
	extern "unsigned int FreeverbFilter_getParamType(FreeverbFilter *, unsigned int)"
	extern "float FreeverbFilter_getParamMax(FreeverbFilter *, unsigned int)"
	extern "float FreeverbFilter_getParamMin(FreeverbFilter *, unsigned int)"
	extern "FreeverbFilter * FreeverbFilter_create()"
	extern "int FreeverbFilter_setParams(FreeverbFilter *, float, float, float, float)"
	extern "void LofiFilter_destroy(LofiFilter *)"
	extern "int LofiFilter_getParamCount(LofiFilter *)"
	extern "const char * LofiFilter_getParamName(LofiFilter *, unsigned int)"
	extern "unsigned int LofiFilter_getParamType(LofiFilter *, unsigned int)"
	extern "float LofiFilter_getParamMax(LofiFilter *, unsigned int)"
	extern "float LofiFilter_getParamMin(LofiFilter *, unsigned int)"
	extern "LofiFilter * LofiFilter_create()"
	extern "int LofiFilter_setParams(LofiFilter *, float, float)"
	extern "void Monotone_destroy(Monotone *)"
	extern "Monotone * Monotone_create()"
	extern "int Monotone_setParams(Monotone *, int)"
	extern "int Monotone_setParamsEx(Monotone *, int, int)"
	extern "int Monotone_load(Monotone *, const char *)"
	extern "int Monotone_loadMem(Monotone *, const unsigned char *, unsigned int)"
	extern "int Monotone_loadMemEx(Monotone *, const unsigned char *, unsigned int, int, int)"
	extern "int Monotone_loadFile(Monotone *, File *)"
	extern "void Monotone_setVolume(Monotone *, float)"
	extern "void Monotone_setLooping(Monotone *, int)"
	extern "void Monotone_set3dMinMaxDistance(Monotone *, float, float)"
	extern "void Monotone_set3dAttenuation(Monotone *, unsigned int, float)"
	extern "void Monotone_set3dDopplerFactor(Monotone *, float)"
	extern "void Monotone_set3dListenerRelative(Monotone *, int)"
	extern "void Monotone_set3dDistanceDelay(Monotone *, int)"
	extern "void Monotone_set3dCollider(Monotone *, AudioCollider *)"
	extern "void Monotone_set3dColliderEx(Monotone *, AudioCollider *, int)"
	extern "void Monotone_set3dAttenuator(Monotone *, AudioAttenuator *)"
	extern "void Monotone_setInaudibleBehavior(Monotone *, int, int)"
	extern "void Monotone_setLoopPoint(Monotone *, double)"
	extern "double Monotone_getLoopPoint(Monotone *)"
	extern "void Monotone_setFilter(Monotone *, unsigned int, Filter *)"
	extern "void Monotone_stop(Monotone *)"
	extern "void Noise_destroy(Noise *)"
	extern "Noise * Noise_create()"
	extern "void Noise_setOctaveScale(Noise *, float, float, float, float, float, float, float, float, float, float)"
	extern "void Noise_setType(Noise *, int)"
	extern "void Noise_setVolume(Noise *, float)"
	extern "void Noise_setLooping(Noise *, int)"
	extern "void Noise_set3dMinMaxDistance(Noise *, float, float)"
	extern "void Noise_set3dAttenuation(Noise *, unsigned int, float)"
	extern "void Noise_set3dDopplerFactor(Noise *, float)"
	extern "void Noise_set3dListenerRelative(Noise *, int)"
	extern "void Noise_set3dDistanceDelay(Noise *, int)"
	extern "void Noise_set3dCollider(Noise *, AudioCollider *)"
	extern "void Noise_set3dColliderEx(Noise *, AudioCollider *, int)"
	extern "void Noise_set3dAttenuator(Noise *, AudioAttenuator *)"
	extern "void Noise_setInaudibleBehavior(Noise *, int, int)"
	extern "void Noise_setLoopPoint(Noise *, double)"
	extern "double Noise_getLoopPoint(Noise *)"
	extern "void Noise_setFilter(Noise *, unsigned int, Filter *)"
	extern "void Noise_stop(Noise *)"
	extern "void Openmpt_destroy(Openmpt *)"
	extern "Openmpt * Openmpt_create()"
	extern "int Openmpt_load(Openmpt *, const char *)"
	extern "int Openmpt_loadMem(Openmpt *, const unsigned char *, unsigned int)"
	extern "int Openmpt_loadMemEx(Openmpt *, const unsigned char *, unsigned int, int, int)"
	extern "int Openmpt_loadFile(Openmpt *, File *)"
	extern "void Openmpt_setVolume(Openmpt *, float)"
	extern "void Openmpt_setLooping(Openmpt *, int)"
	extern "void Openmpt_set3dMinMaxDistance(Openmpt *, float, float)"
	extern "void Openmpt_set3dAttenuation(Openmpt *, unsigned int, float)"
	extern "void Openmpt_set3dDopplerFactor(Openmpt *, float)"
	extern "void Openmpt_set3dListenerRelative(Openmpt *, int)"
	extern "void Openmpt_set3dDistanceDelay(Openmpt *, int)"
	extern "void Openmpt_set3dCollider(Openmpt *, AudioCollider *)"
	extern "void Openmpt_set3dColliderEx(Openmpt *, AudioCollider *, int)"
	extern "void Openmpt_set3dAttenuator(Openmpt *, AudioAttenuator *)"
	extern "void Openmpt_setInaudibleBehavior(Openmpt *, int, int)"
	extern "void Openmpt_setLoopPoint(Openmpt *, double)"
	extern "double Openmpt_getLoopPoint(Openmpt *)"
	extern "void Openmpt_setFilter(Openmpt *, unsigned int, Filter *)"
	extern "void Openmpt_stop(Openmpt *)"
	extern "void Queue_destroy(Queue *)"
	extern "Queue * Queue_create()"
	extern "int Queue_play(Queue *, AudioSource *)"
	extern "unsigned int Queue_getQueueCount(Queue *)"
	extern "int Queue_isCurrentlyPlaying(Queue *, AudioSource *)"
	extern "int Queue_setParamsFromAudioSource(Queue *, AudioSource *)"
	extern "int Queue_setParams(Queue *, float)"
	extern "int Queue_setParamsEx(Queue *, float, unsigned int)"
	extern "void Queue_setVolume(Queue *, float)"
	extern "void Queue_setLooping(Queue *, int)"
	extern "void Queue_set3dMinMaxDistance(Queue *, float, float)"
	extern "void Queue_set3dAttenuation(Queue *, unsigned int, float)"
	extern "void Queue_set3dDopplerFactor(Queue *, float)"
	extern "void Queue_set3dListenerRelative(Queue *, int)"
	extern "void Queue_set3dDistanceDelay(Queue *, int)"
	extern "void Queue_set3dCollider(Queue *, AudioCollider *)"
	extern "void Queue_set3dColliderEx(Queue *, AudioCollider *, int)"
	extern "void Queue_set3dAttenuator(Queue *, AudioAttenuator *)"
	extern "void Queue_setInaudibleBehavior(Queue *, int, int)"
	extern "void Queue_setLoopPoint(Queue *, double)"
	extern "double Queue_getLoopPoint(Queue *)"
	extern "void Queue_setFilter(Queue *, unsigned int, Filter *)"
	extern "void Queue_stop(Queue *)"
	extern "void RobotizeFilter_destroy(RobotizeFilter *)"
	extern "int RobotizeFilter_getParamCount(RobotizeFilter *)"
	extern "const char * RobotizeFilter_getParamName(RobotizeFilter *, unsigned int)"
	extern "unsigned int RobotizeFilter_getParamType(RobotizeFilter *, unsigned int)"
	extern "float RobotizeFilter_getParamMax(RobotizeFilter *, unsigned int)"
	extern "float RobotizeFilter_getParamMin(RobotizeFilter *, unsigned int)"
	extern "void RobotizeFilter_setParams(RobotizeFilter *, float, int)"
	extern "RobotizeFilter * RobotizeFilter_create()"
	extern "void Sfxr_destroy(Sfxr *)"
	extern "Sfxr * Sfxr_create()"
	extern "void Sfxr_resetParams(Sfxr *)"
	extern "int Sfxr_loadParams(Sfxr *, const char *)"
	extern "int Sfxr_loadParamsMem(Sfxr *, unsigned char *, unsigned int)"
	extern "int Sfxr_loadParamsMemEx(Sfxr *, unsigned char *, unsigned int, int, int)"
	extern "int Sfxr_loadParamsFile(Sfxr *, File *)"
	extern "int Sfxr_loadPreset(Sfxr *, int, int)"
	extern "void Sfxr_setVolume(Sfxr *, float)"
	extern "void Sfxr_setLooping(Sfxr *, int)"
	extern "void Sfxr_set3dMinMaxDistance(Sfxr *, float, float)"
	extern "void Sfxr_set3dAttenuation(Sfxr *, unsigned int, float)"
	extern "void Sfxr_set3dDopplerFactor(Sfxr *, float)"
	extern "void Sfxr_set3dListenerRelative(Sfxr *, int)"
	extern "void Sfxr_set3dDistanceDelay(Sfxr *, int)"
	extern "void Sfxr_set3dCollider(Sfxr *, AudioCollider *)"
	extern "void Sfxr_set3dColliderEx(Sfxr *, AudioCollider *, int)"
	extern "void Sfxr_set3dAttenuator(Sfxr *, AudioAttenuator *)"
	extern "void Sfxr_setInaudibleBehavior(Sfxr *, int, int)"
	extern "void Sfxr_setLoopPoint(Sfxr *, double)"
	extern "double Sfxr_getLoopPoint(Sfxr *)"
	extern "void Sfxr_setFilter(Sfxr *, unsigned int, Filter *)"
	extern "void Sfxr_stop(Sfxr *)"
	extern "void Speech_destroy(Speech *)"
	extern "Speech * Speech_create()"
	extern "int Speech_setText(Speech *, const char *)"
	extern "int Speech_setParams(Speech *)"
	extern "int Speech_setParamsEx(Speech *, unsigned int, float, float, int)"
	extern "void Speech_setVolume(Speech *, float)"
	extern "void Speech_setLooping(Speech *, int)"
	extern "void Speech_set3dMinMaxDistance(Speech *, float, float)"
	extern "void Speech_set3dAttenuation(Speech *, unsigned int, float)"
	extern "void Speech_set3dDopplerFactor(Speech *, float)"
	extern "void Speech_set3dListenerRelative(Speech *, int)"
	extern "void Speech_set3dDistanceDelay(Speech *, int)"
	extern "void Speech_set3dCollider(Speech *, AudioCollider *)"
	extern "void Speech_set3dColliderEx(Speech *, AudioCollider *, int)"
	extern "void Speech_set3dAttenuator(Speech *, AudioAttenuator *)"
	extern "void Speech_setInaudibleBehavior(Speech *, int, int)"
	extern "void Speech_setLoopPoint(Speech *, double)"
	extern "double Speech_getLoopPoint(Speech *)"
	extern "void Speech_setFilter(Speech *, unsigned int, Filter *)"
	extern "void Speech_stop(Speech *)"
	extern "void TedSid_destroy(TedSid *)"
	extern "TedSid * TedSid_create()"
	extern "int TedSid_load(TedSid *, const char *)"
	extern "int TedSid_loadToMem(TedSid *, const char *)"
	extern "int TedSid_loadMem(TedSid *, const unsigned char *, unsigned int)"
	extern "int TedSid_loadMemEx(TedSid *, const unsigned char *, unsigned int, int, int)"
	extern "int TedSid_loadFileToMem(TedSid *, File *)"
	extern "int TedSid_loadFile(TedSid *, File *)"
	extern "void TedSid_setVolume(TedSid *, float)"
	extern "void TedSid_setLooping(TedSid *, int)"
	extern "void TedSid_set3dMinMaxDistance(TedSid *, float, float)"
	extern "void TedSid_set3dAttenuation(TedSid *, unsigned int, float)"
	extern "void TedSid_set3dDopplerFactor(TedSid *, float)"
	extern "void TedSid_set3dListenerRelative(TedSid *, int)"
	extern "void TedSid_set3dDistanceDelay(TedSid *, int)"
	extern "void TedSid_set3dCollider(TedSid *, AudioCollider *)"
	extern "void TedSid_set3dColliderEx(TedSid *, AudioCollider *, int)"
	extern "void TedSid_set3dAttenuator(TedSid *, AudioAttenuator *)"
	extern "void TedSid_setInaudibleBehavior(TedSid *, int, int)"
	extern "void TedSid_setLoopPoint(TedSid *, double)"
	extern "double TedSid_getLoopPoint(TedSid *)"
	extern "void TedSid_setFilter(TedSid *, unsigned int, Filter *)"
	extern "void TedSid_stop(TedSid *)"
	extern "void Vic_destroy(Vic *)"
	extern "Vic * Vic_create()"
	extern "void Vic_setModel(Vic *, int)"
	extern "int Vic_getModel(Vic *)"
	extern "void Vic_setRegister(Vic *, int, unsigned char)"
	extern "unsigned char Vic_getRegister(Vic *, int)"
	extern "void Vic_setVolume(Vic *, float)"
	extern "void Vic_setLooping(Vic *, int)"
	extern "void Vic_set3dMinMaxDistance(Vic *, float, float)"
	extern "void Vic_set3dAttenuation(Vic *, unsigned int, float)"
	extern "void Vic_set3dDopplerFactor(Vic *, float)"
	extern "void Vic_set3dListenerRelative(Vic *, int)"
	extern "void Vic_set3dDistanceDelay(Vic *, int)"
	extern "void Vic_set3dCollider(Vic *, AudioCollider *)"
	extern "void Vic_set3dColliderEx(Vic *, AudioCollider *, int)"
	extern "void Vic_set3dAttenuator(Vic *, AudioAttenuator *)"
	extern "void Vic_setInaudibleBehavior(Vic *, int, int)"
	extern "void Vic_setLoopPoint(Vic *, double)"
	extern "double Vic_getLoopPoint(Vic *)"
	extern "void Vic_setFilter(Vic *, unsigned int, Filter *)"
	extern "void Vic_stop(Vic *)"
	extern "void Vizsn_destroy(Vizsn *)"
	extern "Vizsn * Vizsn_create()"
	extern "void Vizsn_setText(Vizsn *, char *)"
	extern "void Vizsn_setVolume(Vizsn *, float)"
	extern "void Vizsn_setLooping(Vizsn *, int)"
	extern "void Vizsn_set3dMinMaxDistance(Vizsn *, float, float)"
	extern "void Vizsn_set3dAttenuation(Vizsn *, unsigned int, float)"
	extern "void Vizsn_set3dDopplerFactor(Vizsn *, float)"
	extern "void Vizsn_set3dListenerRelative(Vizsn *, int)"
	extern "void Vizsn_set3dDistanceDelay(Vizsn *, int)"
	extern "void Vizsn_set3dCollider(Vizsn *, AudioCollider *)"
	extern "void Vizsn_set3dColliderEx(Vizsn *, AudioCollider *, int)"
	extern "void Vizsn_set3dAttenuator(Vizsn *, AudioAttenuator *)"
	extern "void Vizsn_setInaudibleBehavior(Vizsn *, int, int)"
	extern "void Vizsn_setLoopPoint(Vizsn *, double)"
	extern "double Vizsn_getLoopPoint(Vizsn *)"
	extern "void Vizsn_setFilter(Vizsn *, unsigned int, Filter *)"
	extern "void Vizsn_stop(Vizsn *)"
	extern "void Wav_destroy(Wav *)"
	extern "Wav * Wav_create()"
	extern "int Wav_load(Wav *, const char *)"
	extern "int Wav_loadMem(Wav *, const unsigned char *, unsigned int)"
	extern "int Wav_loadMemEx(Wav *, const unsigned char *, unsigned int, int, int)"
	extern "int Wav_loadFile(Wav *, File *)"
	extern "int Wav_loadRawWave8(Wav *, unsigned char *, unsigned int)"
	extern "int Wav_loadRawWave8Ex(Wav *, unsigned char *, unsigned int, float, unsigned int)"
	extern "int Wav_loadRawWave16(Wav *, short *, unsigned int)"
	extern "int Wav_loadRawWave16Ex(Wav *, short *, unsigned int, float, unsigned int)"
	extern "int Wav_loadRawWave(Wav *, float *, unsigned int)"
	extern "int Wav_loadRawWaveEx(Wav *, float *, unsigned int, float, unsigned int, int, int)"
	extern "double Wav_getLength(Wav *)"
	extern "void Wav_setVolume(Wav *, float)"
	extern "void Wav_setLooping(Wav *, int)"
	extern "void Wav_set3dMinMaxDistance(Wav *, float, float)"
	extern "void Wav_set3dAttenuation(Wav *, unsigned int, float)"
	extern "void Wav_set3dDopplerFactor(Wav *, float)"
	extern "void Wav_set3dListenerRelative(Wav *, int)"
	extern "void Wav_set3dDistanceDelay(Wav *, int)"
	extern "void Wav_set3dCollider(Wav *, AudioCollider *)"
	extern "void Wav_set3dColliderEx(Wav *, AudioCollider *, int)"
	extern "void Wav_set3dAttenuator(Wav *, AudioAttenuator *)"
	extern "void Wav_setInaudibleBehavior(Wav *, int, int)"
	extern "void Wav_setLoopPoint(Wav *, double)"
	extern "double Wav_getLoopPoint(Wav *)"
	extern "void Wav_setFilter(Wav *, unsigned int, Filter *)"
	extern "void Wav_stop(Wav *)"
	extern "void WaveShaperFilter_destroy(WaveShaperFilter *)"
	extern "int WaveShaperFilter_setParams(WaveShaperFilter *, float)"
	extern "WaveShaperFilter * WaveShaperFilter_create()"
	extern "int WaveShaperFilter_getParamCount(WaveShaperFilter *)"
	extern "const char * WaveShaperFilter_getParamName(WaveShaperFilter *, unsigned int)"
	extern "unsigned int WaveShaperFilter_getParamType(WaveShaperFilter *, unsigned int)"
	extern "float WaveShaperFilter_getParamMax(WaveShaperFilter *, unsigned int)"
	extern "float WaveShaperFilter_getParamMin(WaveShaperFilter *, unsigned int)"
	extern "void WavStream_destroy(WavStream *)"
	extern "WavStream * WavStream_create()"
	extern "int WavStream_load(WavStream *, const char *)"
	extern "int WavStream_loadMem(WavStream *, const unsigned char *, unsigned int)"
	extern "int WavStream_loadMemEx(WavStream *, const unsigned char *, unsigned int, int, int)"
	extern "int WavStream_loadToMem(WavStream *, const char *)"
	extern "int WavStream_loadFile(WavStream *, File *)"
	extern "int WavStream_loadFileToMem(WavStream *, File *)"
	extern "double WavStream_getLength(WavStream *)"
	extern "void WavStream_setVolume(WavStream *, float)"
	extern "void WavStream_setLooping(WavStream *, int)"
	extern "void WavStream_set3dMinMaxDistance(WavStream *, float, float)"
	extern "void WavStream_set3dAttenuation(WavStream *, unsigned int, float)"
	extern "void WavStream_set3dDopplerFactor(WavStream *, float)"
	extern "void WavStream_set3dListenerRelative(WavStream *, int)"
	extern "void WavStream_set3dDistanceDelay(WavStream *, int)"
	extern "void WavStream_set3dCollider(WavStream *, AudioCollider *)"
	extern "void WavStream_set3dColliderEx(WavStream *, AudioCollider *, int)"
	extern "void WavStream_set3dAttenuator(WavStream *, AudioAttenuator *)"
	extern "void WavStream_setInaudibleBehavior(WavStream *, int, int)"
	extern "void WavStream_setLoopPoint(WavStream *, double)"
	extern "double WavStream_getLoopPoint(WavStream *)"
	extern "void WavStream_setFilter(WavStream *, unsigned int, Filter *)"
	extern "void WavStream_stop(WavStream *)"
end


# OOP wrappers

class Soloud
	@objhandle=nil
	attr_accessor :objhandle
	AUTO=0
	SDL1=1
	SDL2=2
	PORTAUDIO=3
	WINMM=4
	XAUDIO2=5
	WASAPI=6
	ALSA=7
	JACK=8
	OSS=9
	OPENAL=10
	COREAUDIO=11
	OPENSLES=12
	VITA_HOMEBREW=13
	MINIAUDIO=14
	NOSOUND=15
	NULLDRIVER=16
	BACKEND_MAX=17
	CLIP_ROUNDOFF=1
	ENABLE_VISUALIZATION=2
	LEFT_HANDED_3D=4
	NO_FPU_REGISTER_CHANGE=8
	def initialize(args)
		@objhandle = SoLoudImporter.Soloud_create()
	end
	def destroy()
		SoLoudImporter.Soloud_destroy(@objhandle)
	end
	def init(aFlags=CLIP_ROUNDOFF, aBackend=AUTO, aSamplerate=AUTO, aBufferSize=AUTO, aChannels=2)
		SoLoudImporter.Soloud_initEx(@objhandle, aFlags, aBackend, aSamplerate, aBufferSize, aChannels)
	end
	def deinit()
		SoLoudImporter.Soloud_deinit(@objhandle)
	end
	def get_version()
		SoLoudImporter.Soloud_getVersion(@objhandle)
	end
	def get_error_string(aErrorCode)
		SoLoudImporter.Soloud_getErrorString(@objhandle, aErrorCode)
	end
	def get_backend_id()
		SoLoudImporter.Soloud_getBackendId(@objhandle)
	end
	def get_backend_string()
		SoLoudImporter.Soloud_getBackendString(@objhandle)
	end
	def get_backend_channels()
		SoLoudImporter.Soloud_getBackendChannels(@objhandle)
	end
	def get_backend_samplerate()
		SoLoudImporter.Soloud_getBackendSamplerate(@objhandle)
	end
	def get_backend_buffer_size()
		SoLoudImporter.Soloud_getBackendBufferSize(@objhandle)
	end
	def set_speaker_position(aChannel, aX, aY, aZ)
		SoLoudImporter.Soloud_setSpeakerPosition(@objhandle, aChannel, aX, aY, aZ)
	end
	def get_speaker_position(aChannel, aX, aY, aZ)
		SoLoudImporter.Soloud_getSpeakerPosition(@objhandle, aChannel, aX, aY, aZ)
	end
	def play(aSound, aVolume=-1.0, aPan=0.0, aPaused=0, aBus=0)
		SoLoudImporter.Soloud_playEx(@objhandle, aSound.objhandle, aVolume, aPan, aPaused, aBus)
	end
	def play_clocked(aSoundTime, aSound, aVolume=-1.0, aPan=0.0, aBus=0)
		SoLoudImporter.Soloud_playClockedEx(@objhandle, aSoundTime, aSound.objhandle, aVolume, aPan, aBus)
	end
	def play_3d(aSound, aPosX, aPosY, aPosZ, aVelX=0.0, aVelY=0.0, aVelZ=0.0, aVolume=1.0, aPaused=0, aBus=0)
		SoLoudImporter.Soloud_play3dEx(@objhandle, aSound.objhandle, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, aPaused, aBus)
	end
	def play_3d_clocked(aSoundTime, aSound, aPosX, aPosY, aPosZ, aVelX=0.0, aVelY=0.0, aVelZ=0.0, aVolume=1.0, aBus=0)
		SoLoudImporter.Soloud_play3dClockedEx(@objhandle, aSoundTime, aSound.objhandle, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, aBus)
	end
	def play_background(aSound, aVolume=-1.0, aPaused=0, aBus=0)
		SoLoudImporter.Soloud_playBackgroundEx(@objhandle, aSound.objhandle, aVolume, aPaused, aBus)
	end
	def seek(aVoiceHandle, aSeconds)
		SoLoudImporter.Soloud_seek(@objhandle, aVoiceHandle, aSeconds)
	end
	def stop(aVoiceHandle)
		SoLoudImporter.Soloud_stop(@objhandle, aVoiceHandle)
	end
	def stop_all()
		SoLoudImporter.Soloud_stopAll(@objhandle)
	end
	def stop_audio_source(aSound)
		SoLoudImporter.Soloud_stopAudioSource(@objhandle, aSound.objhandle)
	end
	def count_audio_source(aSound)
		SoLoudImporter.Soloud_countAudioSource(@objhandle, aSound.objhandle)
	end
	def set_filter_parameter(aVoiceHandle, aFilterId, aAttributeId, aValue)
		SoLoudImporter.Soloud_setFilterParameter(@objhandle, aVoiceHandle, aFilterId, aAttributeId, aValue)
	end
	def get_filter_parameter(aVoiceHandle, aFilterId, aAttributeId)
		SoLoudImporter.Soloud_getFilterParameter(@objhandle, aVoiceHandle, aFilterId, aAttributeId)
	end
	def fade_filter_parameter(aVoiceHandle, aFilterId, aAttributeId, aTo, aTime)
		SoLoudImporter.Soloud_fadeFilterParameter(@objhandle, aVoiceHandle, aFilterId, aAttributeId, aTo, aTime)
	end
	def oscillate_filter_parameter(aVoiceHandle, aFilterId, aAttributeId, aFrom, aTo, aTime)
		SoLoudImporter.Soloud_oscillateFilterParameter(@objhandle, aVoiceHandle, aFilterId, aAttributeId, aFrom, aTo, aTime)
	end
	def get_stream_time(aVoiceHandle)
		SoLoudImporter.Soloud_getStreamTime(@objhandle, aVoiceHandle)
	end
	def get_stream_position(aVoiceHandle)
		SoLoudImporter.Soloud_getStreamPosition(@objhandle, aVoiceHandle)
	end
	def get_pause(aVoiceHandle)
		SoLoudImporter.Soloud_getPause(@objhandle, aVoiceHandle)
	end
	def get_volume(aVoiceHandle)
		SoLoudImporter.Soloud_getVolume(@objhandle, aVoiceHandle)
	end
	def get_overall_volume(aVoiceHandle)
		SoLoudImporter.Soloud_getOverallVolume(@objhandle, aVoiceHandle)
	end
	def get_pan(aVoiceHandle)
		SoLoudImporter.Soloud_getPan(@objhandle, aVoiceHandle)
	end
	def get_samplerate(aVoiceHandle)
		SoLoudImporter.Soloud_getSamplerate(@objhandle, aVoiceHandle)
	end
	def get_protect_voice(aVoiceHandle)
		SoLoudImporter.Soloud_getProtectVoice(@objhandle, aVoiceHandle)
	end
	def get_active_voice_count()
		SoLoudImporter.Soloud_getActiveVoiceCount(@objhandle)
	end
	def get_voice_count()
		SoLoudImporter.Soloud_getVoiceCount(@objhandle)
	end
	def is_valid_voice_handle(aVoiceHandle)
		SoLoudImporter.Soloud_isValidVoiceHandle(@objhandle, aVoiceHandle)
	end
	def get_relative_play_speed(aVoiceHandle)
		SoLoudImporter.Soloud_getRelativePlaySpeed(@objhandle, aVoiceHandle)
	end
	def get_post_clip_scaler()
		SoLoudImporter.Soloud_getPostClipScaler(@objhandle)
	end
	def get_global_volume()
		SoLoudImporter.Soloud_getGlobalVolume(@objhandle)
	end
	def get_max_active_voice_count()
		SoLoudImporter.Soloud_getMaxActiveVoiceCount(@objhandle)
	end
	def get_looping(aVoiceHandle)
		SoLoudImporter.Soloud_getLooping(@objhandle, aVoiceHandle)
	end
	def get_loop_point(aVoiceHandle)
		SoLoudImporter.Soloud_getLoopPoint(@objhandle, aVoiceHandle)
	end
	def set_loop_point(aVoiceHandle, aLoopPoint)
		SoLoudImporter.Soloud_setLoopPoint(@objhandle, aVoiceHandle, aLoopPoint)
	end
	def set_looping(aVoiceHandle, aLooping)
		SoLoudImporter.Soloud_setLooping(@objhandle, aVoiceHandle, aLooping)
	end
	def set_max_active_voice_count(aVoiceCount)
		SoLoudImporter.Soloud_setMaxActiveVoiceCount(@objhandle, aVoiceCount)
	end
	def set_inaudible_behavior(aVoiceHandle, aMustTick, aKill)
		SoLoudImporter.Soloud_setInaudibleBehavior(@objhandle, aVoiceHandle, aMustTick, aKill)
	end
	def set_global_volume(aVolume)
		SoLoudImporter.Soloud_setGlobalVolume(@objhandle, aVolume)
	end
	def set_post_clip_scaler(aScaler)
		SoLoudImporter.Soloud_setPostClipScaler(@objhandle, aScaler)
	end
	def set_pause(aVoiceHandle, aPause)
		SoLoudImporter.Soloud_setPause(@objhandle, aVoiceHandle, aPause)
	end
	def set_pause_all(aPause)
		SoLoudImporter.Soloud_setPauseAll(@objhandle, aPause)
	end
	def set_relative_play_speed(aVoiceHandle, aSpeed)
		SoLoudImporter.Soloud_setRelativePlaySpeed(@objhandle, aVoiceHandle, aSpeed)
	end
	def set_protect_voice(aVoiceHandle, aProtect)
		SoLoudImporter.Soloud_setProtectVoice(@objhandle, aVoiceHandle, aProtect)
	end
	def set_samplerate(aVoiceHandle, aSamplerate)
		SoLoudImporter.Soloud_setSamplerate(@objhandle, aVoiceHandle, aSamplerate)
	end
	def set_pan(aVoiceHandle, aPan)
		SoLoudImporter.Soloud_setPan(@objhandle, aVoiceHandle, aPan)
	end
	def set_pan_absolute(aVoiceHandle, aLVolume, aRVolume, aLBVolume=0, aRBVolume=0, aCVolume=0, aSVolume=0)
		SoLoudImporter.Soloud_setPanAbsoluteEx(@objhandle, aVoiceHandle, aLVolume, aRVolume, aLBVolume, aRBVolume, aCVolume, aSVolume)
	end
	def set_volume(aVoiceHandle, aVolume)
		SoLoudImporter.Soloud_setVolume(@objhandle, aVoiceHandle, aVolume)
	end
	def set_delay_samples(aVoiceHandle, aSamples)
		SoLoudImporter.Soloud_setDelaySamples(@objhandle, aVoiceHandle, aSamples)
	end
	def fade_volume(aVoiceHandle, aTo, aTime)
		SoLoudImporter.Soloud_fadeVolume(@objhandle, aVoiceHandle, aTo, aTime)
	end
	def fade_pan(aVoiceHandle, aTo, aTime)
		SoLoudImporter.Soloud_fadePan(@objhandle, aVoiceHandle, aTo, aTime)
	end
	def fade_relative_play_speed(aVoiceHandle, aTo, aTime)
		SoLoudImporter.Soloud_fadeRelativePlaySpeed(@objhandle, aVoiceHandle, aTo, aTime)
	end
	def fade_global_volume(aTo, aTime)
		SoLoudImporter.Soloud_fadeGlobalVolume(@objhandle, aTo, aTime)
	end
	def schedule_pause(aVoiceHandle, aTime)
		SoLoudImporter.Soloud_schedulePause(@objhandle, aVoiceHandle, aTime)
	end
	def schedule_stop(aVoiceHandle, aTime)
		SoLoudImporter.Soloud_scheduleStop(@objhandle, aVoiceHandle, aTime)
	end
	def oscillate_volume(aVoiceHandle, aFrom, aTo, aTime)
		SoLoudImporter.Soloud_oscillateVolume(@objhandle, aVoiceHandle, aFrom, aTo, aTime)
	end
	def oscillate_pan(aVoiceHandle, aFrom, aTo, aTime)
		SoLoudImporter.Soloud_oscillatePan(@objhandle, aVoiceHandle, aFrom, aTo, aTime)
	end
	def oscillate_relative_play_speed(aVoiceHandle, aFrom, aTo, aTime)
		SoLoudImporter.Soloud_oscillateRelativePlaySpeed(@objhandle, aVoiceHandle, aFrom, aTo, aTime)
	end
	def oscillate_global_volume(aFrom, aTo, aTime)
		SoLoudImporter.Soloud_oscillateGlobalVolume(@objhandle, aFrom, aTo, aTime)
	end
	def set_global_filter(aFilterId, aFilter)
		SoLoudImporter.Soloud_setGlobalFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def set_visualization_enable(aEnable)
		SoLoudImporter.Soloud_setVisualizationEnable(@objhandle, aEnable)
	end
	def calc_fft()
		SoLoudImporter.Soloud_calcFFT(@objhandle)
	end
	def get_wave()
		SoLoudImporter.Soloud_getWave(@objhandle)
	end
	def get_approximate_volume(aChannel)
		SoLoudImporter.Soloud_getApproximateVolume(@objhandle, aChannel)
	end
	def get_loop_count(aVoiceHandle)
		SoLoudImporter.Soloud_getLoopCount(@objhandle, aVoiceHandle)
	end
	def get_info(aVoiceHandle, aInfoKey)
		SoLoudImporter.Soloud_getInfo(@objhandle, aVoiceHandle, aInfoKey)
	end
	def create_voice_group()
		SoLoudImporter.Soloud_createVoiceGroup(@objhandle)
	end
	def destroy_voice_group(aVoiceGroupHandle)
		SoLoudImporter.Soloud_destroyVoiceGroup(@objhandle, aVoiceGroupHandle)
	end
	def add_voice_to_group(aVoiceGroupHandle, aVoiceHandle)
		SoLoudImporter.Soloud_addVoiceToGroup(@objhandle, aVoiceGroupHandle, aVoiceHandle)
	end
	def is_voice_group(aVoiceGroupHandle)
		SoLoudImporter.Soloud_isVoiceGroup(@objhandle, aVoiceGroupHandle)
	end
	def is_voice_group_empty(aVoiceGroupHandle)
		SoLoudImporter.Soloud_isVoiceGroupEmpty(@objhandle, aVoiceGroupHandle)
	end
	def update_3d_audio()
		SoLoudImporter.Soloud_update3dAudio(@objhandle)
	end
	def set_3d_sound_speed(aSpeed)
		SoLoudImporter.Soloud_set3dSoundSpeed(@objhandle, aSpeed)
	end
	def get_3d_sound_speed()
		SoLoudImporter.Soloud_get3dSoundSpeed(@objhandle)
	end
	def set_3d_listener_parameters(aPosX, aPosY, aPosZ, aAtX, aAtY, aAtZ, aUpX, aUpY, aUpZ, aVelocityX=0.0, aVelocityY=0.0, aVelocityZ=0.0)
		SoLoudImporter.Soloud_set3dListenerParametersEx(@objhandle, aPosX, aPosY, aPosZ, aAtX, aAtY, aAtZ, aUpX, aUpY, aUpZ, aVelocityX, aVelocityY, aVelocityZ)
	end
	def set_3d_listener_position(aPosX, aPosY, aPosZ)
		SoLoudImporter.Soloud_set3dListenerPosition(@objhandle, aPosX, aPosY, aPosZ)
	end
	def set_3d_listener_at(aAtX, aAtY, aAtZ)
		SoLoudImporter.Soloud_set3dListenerAt(@objhandle, aAtX, aAtY, aAtZ)
	end
	def set_3d_listener_up(aUpX, aUpY, aUpZ)
		SoLoudImporter.Soloud_set3dListenerUp(@objhandle, aUpX, aUpY, aUpZ)
	end
	def set_3d_listener_velocity(aVelocityX, aVelocityY, aVelocityZ)
		SoLoudImporter.Soloud_set3dListenerVelocity(@objhandle, aVelocityX, aVelocityY, aVelocityZ)
	end
	def set_3d_source_parameters(aVoiceHandle, aPosX, aPosY, aPosZ, aVelocityX=0.0, aVelocityY=0.0, aVelocityZ=0.0)
		SoLoudImporter.Soloud_set3dSourceParametersEx(@objhandle, aVoiceHandle, aPosX, aPosY, aPosZ, aVelocityX, aVelocityY, aVelocityZ)
	end
	def set_3d_source_position(aVoiceHandle, aPosX, aPosY, aPosZ)
		SoLoudImporter.Soloud_set3dSourcePosition(@objhandle, aVoiceHandle, aPosX, aPosY, aPosZ)
	end
	def set_3d_source_velocity(aVoiceHandle, aVelocityX, aVelocityY, aVelocityZ)
		SoLoudImporter.Soloud_set3dSourceVelocity(@objhandle, aVoiceHandle, aVelocityX, aVelocityY, aVelocityZ)
	end
	def set_3d_source_min_max_distance(aVoiceHandle, aMinDistance, aMaxDistance)
		SoLoudImporter.Soloud_set3dSourceMinMaxDistance(@objhandle, aVoiceHandle, aMinDistance, aMaxDistance)
	end
	def set_3d_source_attenuation(aVoiceHandle, aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Soloud_set3dSourceAttenuation(@objhandle, aVoiceHandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_source_doppler_factor(aVoiceHandle, aDopplerFactor)
		SoLoudImporter.Soloud_set3dSourceDopplerFactor(@objhandle, aVoiceHandle, aDopplerFactor)
	end
	def mix(aBuffer, aSamples)
		SoLoudImporter.Soloud_mix(@objhandle, aBuffer, aSamples)
	end
	def mix_signed16(aBuffer, aSamples)
		SoLoudImporter.Soloud_mixSigned16(@objhandle, aBuffer, aSamples)
	end
end

class BassboostFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	BOOST=1
	def initialize(args)
		@objhandle = SoLoudImporter.BassboostFilter_create()
	end
	def destroy()
		SoLoudImporter.BassboostFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.BassboostFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.BassboostFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.BassboostFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.BassboostFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.BassboostFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aBoost)
		SoLoudImporter.BassboostFilter_setParams(@objhandle, aBoost)
	end
end

class BiquadResonantFilter
	@objhandle=nil
	attr_accessor :objhandle
	LOWPASS=0
	HIGHPASS=1
	BANDPASS=2
	WET=0
	TYPE=1
	FREQUENCY=2
	RESONANCE=3
	def initialize(args)
		@objhandle = SoLoudImporter.BiquadResonantFilter_create()
	end
	def destroy()
		SoLoudImporter.BiquadResonantFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.BiquadResonantFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.BiquadResonantFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.BiquadResonantFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.BiquadResonantFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.BiquadResonantFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aType, aFrequency, aResonance)
		SoLoudImporter.BiquadResonantFilter_setParams(@objhandle, aType, aFrequency, aResonance)
	end
end

class Bus
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.Bus_create()
	end
	def destroy()
		SoLoudImporter.Bus_destroy(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Bus_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def play(aSound, aVolume=1.0, aPan=0.0, aPaused=0)
		SoLoudImporter.Bus_playEx(@objhandle, aSound.objhandle, aVolume, aPan, aPaused)
	end
	def play_clocked(aSoundTime, aSound, aVolume=1.0, aPan=0.0)
		SoLoudImporter.Bus_playClockedEx(@objhandle, aSoundTime, aSound.objhandle, aVolume, aPan)
	end
	def play_3d(aSound, aPosX, aPosY, aPosZ, aVelX=0.0, aVelY=0.0, aVelZ=0.0, aVolume=1.0, aPaused=0)
		SoLoudImporter.Bus_play3dEx(@objhandle, aSound.objhandle, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, aPaused)
	end
	def play_3d_clocked(aSoundTime, aSound, aPosX, aPosY, aPosZ, aVelX=0.0, aVelY=0.0, aVelZ=0.0, aVolume=1.0)
		SoLoudImporter.Bus_play3dClockedEx(@objhandle, aSoundTime, aSound.objhandle, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume)
	end
	def set_channels(aChannels)
		SoLoudImporter.Bus_setChannels(@objhandle, aChannels)
	end
	def set_visualization_enable(aEnable)
		SoLoudImporter.Bus_setVisualizationEnable(@objhandle, aEnable)
	end
	def annex_sound(aVoiceHandle)
		SoLoudImporter.Bus_annexSound(@objhandle, aVoiceHandle)
	end
	def calc_fft()
		SoLoudImporter.Bus_calcFFT(@objhandle)
	end
	def get_wave()
		SoLoudImporter.Bus_getWave(@objhandle)
	end
	def get_approximate_volume(aChannel)
		SoLoudImporter.Bus_getApproximateVolume(@objhandle, aChannel)
	end
	def get_active_voice_count()
		SoLoudImporter.Bus_getActiveVoiceCount(@objhandle)
	end
	def set_volume(aVolume)
		SoLoudImporter.Bus_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Bus_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Bus_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Bus_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Bus_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Bus_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Bus_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Bus_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Bus_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Bus_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Bus_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Bus_getLoopPoint(@objhandle)
	end
	def stop()
		SoLoudImporter.Bus_stop(@objhandle)
	end
end

class DCRemovalFilter
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.DCRemovalFilter_create()
	end
	def destroy()
		SoLoudImporter.DCRemovalFilter_destroy(@objhandle)
	end
	def set_params(aLength=0.1)
		SoLoudImporter.DCRemovalFilter_setParamsEx(@objhandle, aLength)
	end
	def get_param_count()
		SoLoudImporter.DCRemovalFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.DCRemovalFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.DCRemovalFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.DCRemovalFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.DCRemovalFilter_getParamMin(@objhandle, aParamIndex)
	end
end

class EchoFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	DELAY=1
	DECAY=2
	FILTER=3
	def initialize(args)
		@objhandle = SoLoudImporter.EchoFilter_create()
	end
	def destroy()
		SoLoudImporter.EchoFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.EchoFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.EchoFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.EchoFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.EchoFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.EchoFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aDelay, aDecay=0.7, aFilter=0.0)
		SoLoudImporter.EchoFilter_setParamsEx(@objhandle, aDelay, aDecay, aFilter)
	end
end

class FFTFilter
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.FFTFilter_create()
	end
	def destroy()
		SoLoudImporter.FFTFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.FFTFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.FFTFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.FFTFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.FFTFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.FFTFilter_getParamMin(@objhandle, aParamIndex)
	end
end

class FlangerFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	DELAY=1
	FREQ=2
	def initialize(args)
		@objhandle = SoLoudImporter.FlangerFilter_create()
	end
	def destroy()
		SoLoudImporter.FlangerFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.FlangerFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.FlangerFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.FlangerFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.FlangerFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.FlangerFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aDelay, aFreq)
		SoLoudImporter.FlangerFilter_setParams(@objhandle, aDelay, aFreq)
	end
end

class FreeverbFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	FREEZE=1
	ROOMSIZE=2
	DAMP=3
	WIDTH=4
	def initialize(args)
		@objhandle = SoLoudImporter.FreeverbFilter_create()
	end
	def destroy()
		SoLoudImporter.FreeverbFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.FreeverbFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.FreeverbFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.FreeverbFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.FreeverbFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.FreeverbFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aMode, aRoomSize, aDamp, aWidth)
		SoLoudImporter.FreeverbFilter_setParams(@objhandle, aMode, aRoomSize, aDamp, aWidth)
	end
end

class LofiFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	SAMPLERATE=1
	BITDEPTH=2
	def initialize(args)
		@objhandle = SoLoudImporter.LofiFilter_create()
	end
	def destroy()
		SoLoudImporter.LofiFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.LofiFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.LofiFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.LofiFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.LofiFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.LofiFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aSampleRate, aBitdepth)
		SoLoudImporter.LofiFilter_setParams(@objhandle, aSampleRate, aBitdepth)
	end
end

class Monotone
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.Monotone_create()
	end
	def destroy()
		SoLoudImporter.Monotone_destroy(@objhandle)
	end
	def set_params(aHardwareChannels, aWaveform=SoLoud::Misc::WAVE_SQUARE)
		SoLoudImporter.Monotone_setParamsEx(@objhandle, aHardwareChannels, aWaveform)
	end
	def load(aFilename)
		SoLoudImporter.Monotone_load(@objhandle, aFilename)
	end
	def load_mem(aMem, aLength, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.Monotone_loadMemEx(@objhandle, aMem, aLength, aCopy, aTakeOwnership)
	end
	def load_file(aFile)
		SoLoudImporter.Monotone_loadFile(@objhandle, aFile)
	end
	def set_volume(aVolume)
		SoLoudImporter.Monotone_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Monotone_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Monotone_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Monotone_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Monotone_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Monotone_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Monotone_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Monotone_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Monotone_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Monotone_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Monotone_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Monotone_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Monotone_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Monotone_stop(@objhandle)
	end
end

class Noise
	@objhandle=nil
	attr_accessor :objhandle
	WHITE=0
	PINK=1
	BROWNISH=2
	BLUEISH=3
	def initialize(args)
		@objhandle = SoLoudImporter.Noise_create()
	end
	def destroy()
		SoLoudImporter.Noise_destroy(@objhandle)
	end
	def set_octave_scale(aOct0, aOct1, aOct2, aOct3, aOct4, aOct5, aOct6, aOct7, aOct8, aOct9)
		SoLoudImporter.Noise_setOctaveScale(@objhandle, aOct0, aOct1, aOct2, aOct3, aOct4, aOct5, aOct6, aOct7, aOct8, aOct9)
	end
	def set_type(aType)
		SoLoudImporter.Noise_setType(@objhandle, aType)
	end
	def set_volume(aVolume)
		SoLoudImporter.Noise_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Noise_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Noise_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Noise_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Noise_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Noise_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Noise_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Noise_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Noise_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Noise_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Noise_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Noise_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Noise_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Noise_stop(@objhandle)
	end
end

class Openmpt
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.Openmpt_create()
	end
	def destroy()
		SoLoudImporter.Openmpt_destroy(@objhandle)
	end
	def load(aFilename)
		SoLoudImporter.Openmpt_load(@objhandle, aFilename)
	end
	def load_mem(aMem, aLength, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.Openmpt_loadMemEx(@objhandle, aMem, aLength, aCopy, aTakeOwnership)
	end
	def load_file(aFile)
		SoLoudImporter.Openmpt_loadFile(@objhandle, aFile)
	end
	def set_volume(aVolume)
		SoLoudImporter.Openmpt_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Openmpt_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Openmpt_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Openmpt_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Openmpt_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Openmpt_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Openmpt_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Openmpt_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Openmpt_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Openmpt_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Openmpt_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Openmpt_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Openmpt_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Openmpt_stop(@objhandle)
	end
end

class Queue
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.Queue_create()
	end
	def destroy()
		SoLoudImporter.Queue_destroy(@objhandle)
	end
	def play(aSound)
		SoLoudImporter.Queue_play(@objhandle, aSound.objhandle)
	end
	def get_queue_count()
		SoLoudImporter.Queue_getQueueCount(@objhandle)
	end
	def is_currently_playing(aSound)
		SoLoudImporter.Queue_isCurrentlyPlaying(@objhandle, aSound.objhandle)
	end
	def set_params_from_audio_source(aSound)
		SoLoudImporter.Queue_setParamsFromAudioSource(@objhandle, aSound.objhandle)
	end
	def set_params(aSamplerate, aChannels=2)
		SoLoudImporter.Queue_setParamsEx(@objhandle, aSamplerate, aChannels)
	end
	def set_volume(aVolume)
		SoLoudImporter.Queue_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Queue_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Queue_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Queue_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Queue_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Queue_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Queue_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Queue_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Queue_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Queue_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Queue_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Queue_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Queue_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Queue_stop(@objhandle)
	end
end

class RobotizeFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	FREQ=1
	WAVE=2
	def initialize(args)
		@objhandle = SoLoudImporter.RobotizeFilter_create()
	end
	def destroy()
		SoLoudImporter.RobotizeFilter_destroy(@objhandle)
	end
	def get_param_count()
		SoLoudImporter.RobotizeFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.RobotizeFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.RobotizeFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.RobotizeFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.RobotizeFilter_getParamMin(@objhandle, aParamIndex)
	end
	def set_params(aFreq, aWaveform)
		SoLoudImporter.RobotizeFilter_setParams(@objhandle, aFreq, aWaveform)
	end
end

class Sfxr
	@objhandle=nil
	attr_accessor :objhandle
	COIN=0
	LASER=1
	EXPLOSION=2
	POWERUP=3
	HURT=4
	JUMP=5
	BLIP=6
	def initialize(args)
		@objhandle = SoLoudImporter.Sfxr_create()
	end
	def destroy()
		SoLoudImporter.Sfxr_destroy(@objhandle)
	end
	def reset_params()
		SoLoudImporter.Sfxr_resetParams(@objhandle)
	end
	def load_params(aFilename)
		SoLoudImporter.Sfxr_loadParams(@objhandle, aFilename)
	end
	def load_params_mem(aMem, aLength, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.Sfxr_loadParamsMemEx(@objhandle, aMem, aLength, aCopy, aTakeOwnership)
	end
	def load_params_file(aFile)
		SoLoudImporter.Sfxr_loadParamsFile(@objhandle, aFile)
	end
	def load_preset(aPresetNo, aRandSeed)
		SoLoudImporter.Sfxr_loadPreset(@objhandle, aPresetNo, aRandSeed)
	end
	def set_volume(aVolume)
		SoLoudImporter.Sfxr_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Sfxr_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Sfxr_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Sfxr_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Sfxr_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Sfxr_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Sfxr_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Sfxr_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Sfxr_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Sfxr_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Sfxr_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Sfxr_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Sfxr_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Sfxr_stop(@objhandle)
	end
end

class Speech
	@objhandle=nil
	attr_accessor :objhandle
	KW_SAW=0
	KW_TRIANGLE=1
	KW_SIN=2
	KW_SQUARE=3
	KW_PULSE=4
	KW_NOISE=5
	KW_WARBLE=6
	def initialize(args)
		@objhandle = SoLoudImporter.Speech_create()
	end
	def destroy()
		SoLoudImporter.Speech_destroy(@objhandle)
	end
	def set_text(aText)
		SoLoudImporter.Speech_setText(@objhandle, aText)
	end
	def set_params(aBaseFrequency=1330, aBaseSpeed=10.0, aBaseDeclination=0.5, aBaseWaveform=KW_TRIANGLE)
		SoLoudImporter.Speech_setParamsEx(@objhandle, aBaseFrequency, aBaseSpeed, aBaseDeclination, aBaseWaveform)
	end
	def set_volume(aVolume)
		SoLoudImporter.Speech_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Speech_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Speech_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Speech_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Speech_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Speech_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Speech_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Speech_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Speech_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Speech_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Speech_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Speech_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Speech_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Speech_stop(@objhandle)
	end
end

class TedSid
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.TedSid_create()
	end
	def destroy()
		SoLoudImporter.TedSid_destroy(@objhandle)
	end
	def load(aFilename)
		SoLoudImporter.TedSid_load(@objhandle, aFilename)
	end
	def load_to_mem(aFilename)
		SoLoudImporter.TedSid_loadToMem(@objhandle, aFilename)
	end
	def load_mem(aMem, aLength, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.TedSid_loadMemEx(@objhandle, aMem, aLength, aCopy, aTakeOwnership)
	end
	def load_file_to_mem(aFile)
		SoLoudImporter.TedSid_loadFileToMem(@objhandle, aFile)
	end
	def load_file(aFile)
		SoLoudImporter.TedSid_loadFile(@objhandle, aFile)
	end
	def set_volume(aVolume)
		SoLoudImporter.TedSid_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.TedSid_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.TedSid_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.TedSid_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.TedSid_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.TedSid_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.TedSid_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.TedSid_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.TedSid_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.TedSid_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.TedSid_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.TedSid_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.TedSid_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.TedSid_stop(@objhandle)
	end
end

class Vic
	@objhandle=nil
	attr_accessor :objhandle
	PAL=0
	NTSC=1
	BASS=0
	ALTO=1
	SOPRANO=2
	NOISE=3
	MAX_REGS=4
	def initialize(args)
		@objhandle = SoLoudImporter.Vic_create()
	end
	def destroy()
		SoLoudImporter.Vic_destroy(@objhandle)
	end
	def set_model(model)
		SoLoudImporter.Vic_setModel(@objhandle, model)
	end
	def get_model()
		SoLoudImporter.Vic_getModel(@objhandle)
	end
	def set_register(reg, value)
		SoLoudImporter.Vic_setRegister(@objhandle, reg, value)
	end
	def get_register(reg)
		SoLoudImporter.Vic_getRegister(@objhandle, reg)
	end
	def set_volume(aVolume)
		SoLoudImporter.Vic_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Vic_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Vic_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Vic_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Vic_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Vic_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Vic_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Vic_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Vic_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Vic_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Vic_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Vic_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Vic_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Vic_stop(@objhandle)
	end
end

class Vizsn
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.Vizsn_create()
	end
	def destroy()
		SoLoudImporter.Vizsn_destroy(@objhandle)
	end
	def set_text(aText)
		SoLoudImporter.Vizsn_setText(@objhandle, aText)
	end
	def set_volume(aVolume)
		SoLoudImporter.Vizsn_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Vizsn_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Vizsn_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Vizsn_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Vizsn_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Vizsn_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Vizsn_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Vizsn_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Vizsn_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Vizsn_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Vizsn_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Vizsn_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Vizsn_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Vizsn_stop(@objhandle)
	end
end

class Wav
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.Wav_create()
	end
	def destroy()
		SoLoudImporter.Wav_destroy(@objhandle)
	end
	def load(aFilename)
		SoLoudImporter.Wav_load(@objhandle, aFilename)
	end
	def load_mem(aMem, aLength, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.Wav_loadMemEx(@objhandle, aMem, aLength, aCopy, aTakeOwnership)
	end
	def load_file(aFile)
		SoLoudImporter.Wav_loadFile(@objhandle, aFile)
	end
	def load_raw_wave8(aMem, aLength, aSamplerate=44100.0, aChannels=1)
		SoLoudImporter.Wav_loadRawWave8Ex(@objhandle, aMem, aLength, aSamplerate, aChannels)
	end
	def load_raw_wave16(aMem, aLength, aSamplerate=44100.0, aChannels=1)
		SoLoudImporter.Wav_loadRawWave16Ex(@objhandle, aMem, aLength, aSamplerate, aChannels)
	end
	def load_raw_wave(aMem, aLength, aSamplerate=44100.0, aChannels=1, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.Wav_loadRawWaveEx(@objhandle, aMem, aLength, aSamplerate, aChannels, aCopy, aTakeOwnership)
	end
	def get_length()
		SoLoudImporter.Wav_getLength(@objhandle)
	end
	def set_volume(aVolume)
		SoLoudImporter.Wav_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.Wav_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.Wav_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.Wav_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.Wav_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.Wav_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.Wav_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.Wav_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.Wav_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.Wav_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.Wav_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.Wav_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.Wav_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.Wav_stop(@objhandle)
	end
end

class WaveShaperFilter
	@objhandle=nil
	attr_accessor :objhandle
	WET=0
	AMOUNT=1
	def initialize(args)
		@objhandle = SoLoudImporter.WaveShaperFilter_create()
	end
	def destroy()
		SoLoudImporter.WaveShaperFilter_destroy(@objhandle)
	end
	def set_params(aAmount)
		SoLoudImporter.WaveShaperFilter_setParams(@objhandle, aAmount)
	end
	def get_param_count()
		SoLoudImporter.WaveShaperFilter_getParamCount(@objhandle)
	end
	def get_param_name(aParamIndex)
		SoLoudImporter.WaveShaperFilter_getParamName(@objhandle, aParamIndex)
	end
	def get_param_type(aParamIndex)
		SoLoudImporter.WaveShaperFilter_getParamType(@objhandle, aParamIndex)
	end
	def get_param_max(aParamIndex)
		SoLoudImporter.WaveShaperFilter_getParamMax(@objhandle, aParamIndex)
	end
	def get_param_min(aParamIndex)
		SoLoudImporter.WaveShaperFilter_getParamMin(@objhandle, aParamIndex)
	end
end

class WavStream
	@objhandle=nil
	attr_accessor :objhandle
	def initialize(args)
		@objhandle = SoLoudImporter.WavStream_create()
	end
	def destroy()
		SoLoudImporter.WavStream_destroy(@objhandle)
	end
	def load(aFilename)
		SoLoudImporter.WavStream_load(@objhandle, aFilename)
	end
	def load_mem(aData, aDataLen, aCopy=false, aTakeOwnership=true)
		SoLoudImporter.WavStream_loadMemEx(@objhandle, aData, aDataLen, aCopy, aTakeOwnership)
	end
	def load_to_mem(aFilename)
		SoLoudImporter.WavStream_loadToMem(@objhandle, aFilename)
	end
	def load_file(aFile)
		SoLoudImporter.WavStream_loadFile(@objhandle, aFile)
	end
	def load_file_to_mem(aFile)
		SoLoudImporter.WavStream_loadFileToMem(@objhandle, aFile)
	end
	def get_length()
		SoLoudImporter.WavStream_getLength(@objhandle)
	end
	def set_volume(aVolume)
		SoLoudImporter.WavStream_setVolume(@objhandle, aVolume)
	end
	def set_looping(aLoop)
		SoLoudImporter.WavStream_setLooping(@objhandle, aLoop)
	end
	def set_3d_min_max_distance(aMinDistance, aMaxDistance)
		SoLoudImporter.WavStream_set3dMinMaxDistance(@objhandle, aMinDistance, aMaxDistance)
	end
	def set_3d_attenuation(aAttenuationModel, aAttenuationRolloffFactor)
		SoLoudImporter.WavStream_set3dAttenuation(@objhandle, aAttenuationModel, aAttenuationRolloffFactor)
	end
	def set_3d_doppler_factor(aDopplerFactor)
		SoLoudImporter.WavStream_set3dDopplerFactor(@objhandle, aDopplerFactor)
	end
	def set_3d_listener_relative(aListenerRelative)
		SoLoudImporter.WavStream_set3dListenerRelative(@objhandle, aListenerRelative)
	end
	def set_3d_distance_delay(aDistanceDelay)
		SoLoudImporter.WavStream_set3dDistanceDelay(@objhandle, aDistanceDelay)
	end
	def set_3d_collider(aCollider, aUserData=0)
		SoLoudImporter.WavStream_set3dColliderEx(@objhandle, aCollider.objhandle, aUserData)
	end
	def set_3d_attenuator(aAttenuator)
		SoLoudImporter.WavStream_set3dAttenuator(@objhandle, aAttenuator.objhandle)
	end
	def set_inaudible_behavior(aMustTick, aKill)
		SoLoudImporter.WavStream_setInaudibleBehavior(@objhandle, aMustTick, aKill)
	end
	def set_loop_point(aLoopPoint)
		SoLoudImporter.WavStream_setLoopPoint(@objhandle, aLoopPoint)
	end
	def get_loop_point()
		SoLoudImporter.WavStream_getLoopPoint(@objhandle)
	end
	def set_filter(aFilterId, aFilter)
		SoLoudImporter.WavStream_setFilter(@objhandle, aFilterId, aFilter.objhandle)
	end
	def stop()
		SoLoudImporter.WavStream_stop(@objhandle)
	end
end
