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

import ctypes
import sys

try:
	soloud_dll = ctypes.CDLL("soloud_x86")
except:
	print("SoLoud dynamic link library (soloud_x86.dll on Windows) not found. Terminating.")
	sys.exit()

# Raw DLL functions
Soloud_destroy = soloud_dll.Soloud_destroy
Soloud_destroy.restype = None
Soloud_destroy.argtypes = [ctypes.c_void_p]

Soloud_create = soloud_dll.Soloud_create
Soloud_create.restype = ctypes.c_void_p
Soloud_create.argtypes = []

Soloud_init = soloud_dll.Soloud_init
Soloud_init.restype = ctypes.c_int
Soloud_init.argtypes = [ctypes.c_void_p]

Soloud_initEx = soloud_dll.Soloud_initEx
Soloud_initEx.restype = ctypes.c_int
Soloud_initEx.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint]

Soloud_deinit = soloud_dll.Soloud_deinit
Soloud_deinit.restype = None
Soloud_deinit.argtypes = [ctypes.c_void_p]

Soloud_getVersion = soloud_dll.Soloud_getVersion
Soloud_getVersion.restype = ctypes.c_uint
Soloud_getVersion.argtypes = [ctypes.c_void_p]

Soloud_getErrorString = soloud_dll.Soloud_getErrorString
Soloud_getErrorString.restype = ctypes.c_char_p
Soloud_getErrorString.argtypes = [ctypes.c_void_p, ctypes.c_int]

Soloud_getBackendId = soloud_dll.Soloud_getBackendId
Soloud_getBackendId.restype = ctypes.c_uint
Soloud_getBackendId.argtypes = [ctypes.c_void_p]

Soloud_getBackendString = soloud_dll.Soloud_getBackendString
Soloud_getBackendString.restype = ctypes.c_char_p
Soloud_getBackendString.argtypes = [ctypes.c_void_p]

Soloud_getBackendChannels = soloud_dll.Soloud_getBackendChannels
Soloud_getBackendChannels.restype = ctypes.c_uint
Soloud_getBackendChannels.argtypes = [ctypes.c_void_p]

Soloud_getBackendSamplerate = soloud_dll.Soloud_getBackendSamplerate
Soloud_getBackendSamplerate.restype = ctypes.c_uint
Soloud_getBackendSamplerate.argtypes = [ctypes.c_void_p]

Soloud_getBackendBufferSize = soloud_dll.Soloud_getBackendBufferSize
Soloud_getBackendBufferSize.restype = ctypes.c_uint
Soloud_getBackendBufferSize.argtypes = [ctypes.c_void_p]

Soloud_setSpeakerPosition = soloud_dll.Soloud_setSpeakerPosition
Soloud_setSpeakerPosition.restype = ctypes.c_int
Soloud_setSpeakerPosition.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_getSpeakerPosition = soloud_dll.Soloud_getSpeakerPosition
Soloud_getSpeakerPosition.restype = ctypes.c_int
Soloud_getSpeakerPosition.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.POINTER(ctypes.c_float * 256), ctypes.POINTER(ctypes.c_float * 256), ctypes.POINTER(ctypes.c_float * 256)]

Soloud_play = soloud_dll.Soloud_play
Soloud_play.restype = ctypes.c_uint
Soloud_play.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Soloud_playEx = soloud_dll.Soloud_playEx
Soloud_playEx.restype = ctypes.c_uint
Soloud_playEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_int, ctypes.c_uint]

Soloud_playClocked = soloud_dll.Soloud_playClocked
Soloud_playClocked.restype = ctypes.c_uint
Soloud_playClocked.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p]

Soloud_playClockedEx = soloud_dll.Soloud_playClockedEx
Soloud_playClockedEx.restype = ctypes.c_uint
Soloud_playClockedEx.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_uint]

Soloud_play3d = soloud_dll.Soloud_play3d
Soloud_play3d.restype = ctypes.c_uint
Soloud_play3d.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_play3dEx = soloud_dll.Soloud_play3dEx
Soloud_play3dEx.restype = ctypes.c_uint
Soloud_play3dEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_int, ctypes.c_uint]

Soloud_play3dClocked = soloud_dll.Soloud_play3dClocked
Soloud_play3dClocked.restype = ctypes.c_uint
Soloud_play3dClocked.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_play3dClockedEx = soloud_dll.Soloud_play3dClockedEx
Soloud_play3dClockedEx.restype = ctypes.c_uint
Soloud_play3dClockedEx.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_uint]

Soloud_playBackground = soloud_dll.Soloud_playBackground
Soloud_playBackground.restype = ctypes.c_uint
Soloud_playBackground.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Soloud_playBackgroundEx = soloud_dll.Soloud_playBackgroundEx
Soloud_playBackgroundEx.restype = ctypes.c_uint
Soloud_playBackgroundEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_int, ctypes.c_uint]

Soloud_seek = soloud_dll.Soloud_seek
Soloud_seek.restype = ctypes.c_int
Soloud_seek.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_double]

Soloud_stop = soloud_dll.Soloud_stop
Soloud_stop.restype = None
Soloud_stop.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_stopAll = soloud_dll.Soloud_stopAll
Soloud_stopAll.restype = None
Soloud_stopAll.argtypes = [ctypes.c_void_p]

Soloud_stopAudioSource = soloud_dll.Soloud_stopAudioSource
Soloud_stopAudioSource.restype = None
Soloud_stopAudioSource.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Soloud_countAudioSource = soloud_dll.Soloud_countAudioSource
Soloud_countAudioSource.restype = ctypes.c_int
Soloud_countAudioSource.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Soloud_setFilterParameter = soloud_dll.Soloud_setFilterParameter
Soloud_setFilterParameter.restype = None
Soloud_setFilterParameter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_float]

Soloud_getFilterParameter = soloud_dll.Soloud_getFilterParameter
Soloud_getFilterParameter.restype = ctypes.c_float
Soloud_getFilterParameter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint]

Soloud_fadeFilterParameter = soloud_dll.Soloud_fadeFilterParameter
Soloud_fadeFilterParameter.restype = None
Soloud_fadeFilterParameter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_float, ctypes.c_double]

Soloud_oscillateFilterParameter = soloud_dll.Soloud_oscillateFilterParameter
Soloud_oscillateFilterParameter.restype = None
Soloud_oscillateFilterParameter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_double]

Soloud_getStreamTime = soloud_dll.Soloud_getStreamTime
Soloud_getStreamTime.restype = ctypes.c_double
Soloud_getStreamTime.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getStreamPosition = soloud_dll.Soloud_getStreamPosition
Soloud_getStreamPosition.restype = ctypes.c_double
Soloud_getStreamPosition.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getPause = soloud_dll.Soloud_getPause
Soloud_getPause.restype = ctypes.c_int
Soloud_getPause.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getVolume = soloud_dll.Soloud_getVolume
Soloud_getVolume.restype = ctypes.c_float
Soloud_getVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getOverallVolume = soloud_dll.Soloud_getOverallVolume
Soloud_getOverallVolume.restype = ctypes.c_float
Soloud_getOverallVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getPan = soloud_dll.Soloud_getPan
Soloud_getPan.restype = ctypes.c_float
Soloud_getPan.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getSamplerate = soloud_dll.Soloud_getSamplerate
Soloud_getSamplerate.restype = ctypes.c_float
Soloud_getSamplerate.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getProtectVoice = soloud_dll.Soloud_getProtectVoice
Soloud_getProtectVoice.restype = ctypes.c_int
Soloud_getProtectVoice.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getActiveVoiceCount = soloud_dll.Soloud_getActiveVoiceCount
Soloud_getActiveVoiceCount.restype = ctypes.c_uint
Soloud_getActiveVoiceCount.argtypes = [ctypes.c_void_p]

Soloud_getVoiceCount = soloud_dll.Soloud_getVoiceCount
Soloud_getVoiceCount.restype = ctypes.c_uint
Soloud_getVoiceCount.argtypes = [ctypes.c_void_p]

Soloud_isValidVoiceHandle = soloud_dll.Soloud_isValidVoiceHandle
Soloud_isValidVoiceHandle.restype = ctypes.c_int
Soloud_isValidVoiceHandle.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getRelativePlaySpeed = soloud_dll.Soloud_getRelativePlaySpeed
Soloud_getRelativePlaySpeed.restype = ctypes.c_float
Soloud_getRelativePlaySpeed.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getPostClipScaler = soloud_dll.Soloud_getPostClipScaler
Soloud_getPostClipScaler.restype = ctypes.c_float
Soloud_getPostClipScaler.argtypes = [ctypes.c_void_p]

Soloud_getGlobalVolume = soloud_dll.Soloud_getGlobalVolume
Soloud_getGlobalVolume.restype = ctypes.c_float
Soloud_getGlobalVolume.argtypes = [ctypes.c_void_p]

Soloud_getMaxActiveVoiceCount = soloud_dll.Soloud_getMaxActiveVoiceCount
Soloud_getMaxActiveVoiceCount.restype = ctypes.c_uint
Soloud_getMaxActiveVoiceCount.argtypes = [ctypes.c_void_p]

Soloud_getLooping = soloud_dll.Soloud_getLooping
Soloud_getLooping.restype = ctypes.c_int
Soloud_getLooping.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getLoopPoint = soloud_dll.Soloud_getLoopPoint
Soloud_getLoopPoint.restype = ctypes.c_double
Soloud_getLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_setLoopPoint = soloud_dll.Soloud_setLoopPoint
Soloud_setLoopPoint.restype = None
Soloud_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_double]

Soloud_setLooping = soloud_dll.Soloud_setLooping
Soloud_setLooping.restype = None
Soloud_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_int]

Soloud_setMaxActiveVoiceCount = soloud_dll.Soloud_setMaxActiveVoiceCount
Soloud_setMaxActiveVoiceCount.restype = ctypes.c_int
Soloud_setMaxActiveVoiceCount.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_setInaudibleBehavior = soloud_dll.Soloud_setInaudibleBehavior
Soloud_setInaudibleBehavior.restype = None
Soloud_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_int, ctypes.c_int]

Soloud_setGlobalVolume = soloud_dll.Soloud_setGlobalVolume
Soloud_setGlobalVolume.restype = None
Soloud_setGlobalVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Soloud_setPostClipScaler = soloud_dll.Soloud_setPostClipScaler
Soloud_setPostClipScaler.restype = None
Soloud_setPostClipScaler.argtypes = [ctypes.c_void_p, ctypes.c_float]

Soloud_setPause = soloud_dll.Soloud_setPause
Soloud_setPause.restype = None
Soloud_setPause.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_int]

Soloud_setPauseAll = soloud_dll.Soloud_setPauseAll
Soloud_setPauseAll.restype = None
Soloud_setPauseAll.argtypes = [ctypes.c_void_p, ctypes.c_int]

Soloud_setRelativePlaySpeed = soloud_dll.Soloud_setRelativePlaySpeed
Soloud_setRelativePlaySpeed.restype = ctypes.c_int
Soloud_setRelativePlaySpeed.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Soloud_setProtectVoice = soloud_dll.Soloud_setProtectVoice
Soloud_setProtectVoice.restype = None
Soloud_setProtectVoice.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_int]

Soloud_setSamplerate = soloud_dll.Soloud_setSamplerate
Soloud_setSamplerate.restype = None
Soloud_setSamplerate.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Soloud_setPan = soloud_dll.Soloud_setPan
Soloud_setPan.restype = None
Soloud_setPan.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Soloud_setPanAbsolute = soloud_dll.Soloud_setPanAbsolute
Soloud_setPanAbsolute.restype = None
Soloud_setPanAbsolute.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float]

Soloud_setPanAbsoluteEx = soloud_dll.Soloud_setPanAbsoluteEx
Soloud_setPanAbsoluteEx.restype = None
Soloud_setPanAbsoluteEx.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_setVolume = soloud_dll.Soloud_setVolume
Soloud_setVolume.restype = None
Soloud_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Soloud_setDelaySamples = soloud_dll.Soloud_setDelaySamples
Soloud_setDelaySamples.restype = None
Soloud_setDelaySamples.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint]

Soloud_fadeVolume = soloud_dll.Soloud_fadeVolume
Soloud_fadeVolume.restype = None
Soloud_fadeVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_double]

Soloud_fadePan = soloud_dll.Soloud_fadePan
Soloud_fadePan.restype = None
Soloud_fadePan.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_double]

Soloud_fadeRelativePlaySpeed = soloud_dll.Soloud_fadeRelativePlaySpeed
Soloud_fadeRelativePlaySpeed.restype = None
Soloud_fadeRelativePlaySpeed.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_double]

Soloud_fadeGlobalVolume = soloud_dll.Soloud_fadeGlobalVolume
Soloud_fadeGlobalVolume.restype = None
Soloud_fadeGlobalVolume.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_double]

Soloud_schedulePause = soloud_dll.Soloud_schedulePause
Soloud_schedulePause.restype = None
Soloud_schedulePause.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_double]

Soloud_scheduleStop = soloud_dll.Soloud_scheduleStop
Soloud_scheduleStop.restype = None
Soloud_scheduleStop.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_double]

Soloud_oscillateVolume = soloud_dll.Soloud_oscillateVolume
Soloud_oscillateVolume.restype = None
Soloud_oscillateVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_double]

Soloud_oscillatePan = soloud_dll.Soloud_oscillatePan
Soloud_oscillatePan.restype = None
Soloud_oscillatePan.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_double]

Soloud_oscillateRelativePlaySpeed = soloud_dll.Soloud_oscillateRelativePlaySpeed
Soloud_oscillateRelativePlaySpeed.restype = None
Soloud_oscillateRelativePlaySpeed.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_double]

Soloud_oscillateGlobalVolume = soloud_dll.Soloud_oscillateGlobalVolume
Soloud_oscillateGlobalVolume.restype = None
Soloud_oscillateGlobalVolume.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_double]

Soloud_setGlobalFilter = soloud_dll.Soloud_setGlobalFilter
Soloud_setGlobalFilter.restype = None
Soloud_setGlobalFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Soloud_setVisualizationEnable = soloud_dll.Soloud_setVisualizationEnable
Soloud_setVisualizationEnable.restype = None
Soloud_setVisualizationEnable.argtypes = [ctypes.c_void_p, ctypes.c_int]

Soloud_calcFFT = soloud_dll.Soloud_calcFFT
Soloud_calcFFT.restype = ctypes.POINTER(ctypes.c_float * 256)
Soloud_calcFFT.argtypes = [ctypes.c_void_p]

Soloud_getWave = soloud_dll.Soloud_getWave
Soloud_getWave.restype = ctypes.POINTER(ctypes.c_float * 256)
Soloud_getWave.argtypes = [ctypes.c_void_p]

Soloud_getApproximateVolume = soloud_dll.Soloud_getApproximateVolume
Soloud_getApproximateVolume.restype = ctypes.c_float
Soloud_getApproximateVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getLoopCount = soloud_dll.Soloud_getLoopCount
Soloud_getLoopCount.restype = ctypes.c_uint
Soloud_getLoopCount.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_getInfo = soloud_dll.Soloud_getInfo
Soloud_getInfo.restype = ctypes.c_float
Soloud_getInfo.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint]

Soloud_createVoiceGroup = soloud_dll.Soloud_createVoiceGroup
Soloud_createVoiceGroup.restype = ctypes.c_uint
Soloud_createVoiceGroup.argtypes = [ctypes.c_void_p]

Soloud_destroyVoiceGroup = soloud_dll.Soloud_destroyVoiceGroup
Soloud_destroyVoiceGroup.restype = ctypes.c_int
Soloud_destroyVoiceGroup.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_addVoiceToGroup = soloud_dll.Soloud_addVoiceToGroup
Soloud_addVoiceToGroup.restype = ctypes.c_int
Soloud_addVoiceToGroup.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint]

Soloud_isVoiceGroup = soloud_dll.Soloud_isVoiceGroup
Soloud_isVoiceGroup.restype = ctypes.c_int
Soloud_isVoiceGroup.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_isVoiceGroupEmpty = soloud_dll.Soloud_isVoiceGroupEmpty
Soloud_isVoiceGroupEmpty.restype = ctypes.c_int
Soloud_isVoiceGroupEmpty.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Soloud_update3dAudio = soloud_dll.Soloud_update3dAudio
Soloud_update3dAudio.restype = None
Soloud_update3dAudio.argtypes = [ctypes.c_void_p]

Soloud_set3dSoundSpeed = soloud_dll.Soloud_set3dSoundSpeed
Soloud_set3dSoundSpeed.restype = ctypes.c_int
Soloud_set3dSoundSpeed.argtypes = [ctypes.c_void_p, ctypes.c_float]

Soloud_get3dSoundSpeed = soloud_dll.Soloud_get3dSoundSpeed
Soloud_get3dSoundSpeed.restype = ctypes.c_float
Soloud_get3dSoundSpeed.argtypes = [ctypes.c_void_p]

Soloud_set3dListenerParameters = soloud_dll.Soloud_set3dListenerParameters
Soloud_set3dListenerParameters.restype = None
Soloud_set3dListenerParameters.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dListenerParametersEx = soloud_dll.Soloud_set3dListenerParametersEx
Soloud_set3dListenerParametersEx.restype = None
Soloud_set3dListenerParametersEx.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dListenerPosition = soloud_dll.Soloud_set3dListenerPosition
Soloud_set3dListenerPosition.restype = None
Soloud_set3dListenerPosition.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dListenerAt = soloud_dll.Soloud_set3dListenerAt
Soloud_set3dListenerAt.restype = None
Soloud_set3dListenerAt.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dListenerUp = soloud_dll.Soloud_set3dListenerUp
Soloud_set3dListenerUp.restype = None
Soloud_set3dListenerUp.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dListenerVelocity = soloud_dll.Soloud_set3dListenerVelocity
Soloud_set3dListenerVelocity.restype = None
Soloud_set3dListenerVelocity.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dSourceParameters = soloud_dll.Soloud_set3dSourceParameters
Soloud_set3dSourceParameters.restype = None
Soloud_set3dSourceParameters.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dSourceParametersEx = soloud_dll.Soloud_set3dSourceParametersEx
Soloud_set3dSourceParametersEx.restype = None
Soloud_set3dSourceParametersEx.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dSourcePosition = soloud_dll.Soloud_set3dSourcePosition
Soloud_set3dSourcePosition.restype = None
Soloud_set3dSourcePosition.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dSourceVelocity = soloud_dll.Soloud_set3dSourceVelocity
Soloud_set3dSourceVelocity.restype = None
Soloud_set3dSourceVelocity.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Soloud_set3dSourceMinMaxDistance = soloud_dll.Soloud_set3dSourceMinMaxDistance
Soloud_set3dSourceMinMaxDistance.restype = None
Soloud_set3dSourceMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float]

Soloud_set3dSourceAttenuation = soloud_dll.Soloud_set3dSourceAttenuation
Soloud_set3dSourceAttenuation.restype = None
Soloud_set3dSourceAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint, ctypes.c_float]

Soloud_set3dSourceDopplerFactor = soloud_dll.Soloud_set3dSourceDopplerFactor
Soloud_set3dSourceDopplerFactor.restype = None
Soloud_set3dSourceDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Soloud_mix = soloud_dll.Soloud_mix
Soloud_mix.restype = None
Soloud_mix.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_float * 256), ctypes.c_uint]

Soloud_mixSigned16 = soloud_dll.Soloud_mixSigned16
Soloud_mixSigned16.restype = None
Soloud_mixSigned16.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_short), ctypes.c_uint]

BassboostFilter_destroy = soloud_dll.BassboostFilter_destroy
BassboostFilter_destroy.restype = None
BassboostFilter_destroy.argtypes = [ctypes.c_void_p]

BassboostFilter_getParamCount = soloud_dll.BassboostFilter_getParamCount
BassboostFilter_getParamCount.restype = ctypes.c_int
BassboostFilter_getParamCount.argtypes = [ctypes.c_void_p]

BassboostFilter_getParamName = soloud_dll.BassboostFilter_getParamName
BassboostFilter_getParamName.restype = ctypes.c_char_p
BassboostFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BassboostFilter_getParamType = soloud_dll.BassboostFilter_getParamType
BassboostFilter_getParamType.restype = ctypes.c_uint
BassboostFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BassboostFilter_getParamMax = soloud_dll.BassboostFilter_getParamMax
BassboostFilter_getParamMax.restype = ctypes.c_float
BassboostFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BassboostFilter_getParamMin = soloud_dll.BassboostFilter_getParamMin
BassboostFilter_getParamMin.restype = ctypes.c_float
BassboostFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BassboostFilter_setParams = soloud_dll.BassboostFilter_setParams
BassboostFilter_setParams.restype = ctypes.c_int
BassboostFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float]

BassboostFilter_create = soloud_dll.BassboostFilter_create
BassboostFilter_create.restype = ctypes.c_void_p
BassboostFilter_create.argtypes = []

BiquadResonantFilter_destroy = soloud_dll.BiquadResonantFilter_destroy
BiquadResonantFilter_destroy.restype = None
BiquadResonantFilter_destroy.argtypes = [ctypes.c_void_p]

BiquadResonantFilter_getParamCount = soloud_dll.BiquadResonantFilter_getParamCount
BiquadResonantFilter_getParamCount.restype = ctypes.c_int
BiquadResonantFilter_getParamCount.argtypes = [ctypes.c_void_p]

BiquadResonantFilter_getParamName = soloud_dll.BiquadResonantFilter_getParamName
BiquadResonantFilter_getParamName.restype = ctypes.c_char_p
BiquadResonantFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BiquadResonantFilter_getParamType = soloud_dll.BiquadResonantFilter_getParamType
BiquadResonantFilter_getParamType.restype = ctypes.c_uint
BiquadResonantFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BiquadResonantFilter_getParamMax = soloud_dll.BiquadResonantFilter_getParamMax
BiquadResonantFilter_getParamMax.restype = ctypes.c_float
BiquadResonantFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BiquadResonantFilter_getParamMin = soloud_dll.BiquadResonantFilter_getParamMin
BiquadResonantFilter_getParamMin.restype = ctypes.c_float
BiquadResonantFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

BiquadResonantFilter_create = soloud_dll.BiquadResonantFilter_create
BiquadResonantFilter_create.restype = ctypes.c_void_p
BiquadResonantFilter_create.argtypes = []

BiquadResonantFilter_setParams = soloud_dll.BiquadResonantFilter_setParams
BiquadResonantFilter_setParams.restype = ctypes.c_int
BiquadResonantFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_float, ctypes.c_float]

Bus_destroy = soloud_dll.Bus_destroy
Bus_destroy.restype = None
Bus_destroy.argtypes = [ctypes.c_void_p]

Bus_create = soloud_dll.Bus_create
Bus_create.restype = ctypes.c_void_p
Bus_create.argtypes = []

Bus_setFilter = soloud_dll.Bus_setFilter
Bus_setFilter.restype = None
Bus_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Bus_play = soloud_dll.Bus_play
Bus_play.restype = ctypes.c_uint
Bus_play.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Bus_playEx = soloud_dll.Bus_playEx
Bus_playEx.restype = ctypes.c_uint
Bus_playEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_int]

Bus_playClocked = soloud_dll.Bus_playClocked
Bus_playClocked.restype = ctypes.c_uint
Bus_playClocked.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p]

Bus_playClockedEx = soloud_dll.Bus_playClockedEx
Bus_playClockedEx.restype = ctypes.c_uint
Bus_playClockedEx.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Bus_play3d = soloud_dll.Bus_play3d
Bus_play3d.restype = ctypes.c_uint
Bus_play3d.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Bus_play3dEx = soloud_dll.Bus_play3dEx
Bus_play3dEx.restype = ctypes.c_uint
Bus_play3dEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_int]

Bus_play3dClocked = soloud_dll.Bus_play3dClocked
Bus_play3dClocked.restype = ctypes.c_uint
Bus_play3dClocked.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Bus_play3dClockedEx = soloud_dll.Bus_play3dClockedEx
Bus_play3dClockedEx.restype = ctypes.c_uint
Bus_play3dClockedEx.argtypes = [ctypes.c_void_p, ctypes.c_double, ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Bus_setChannels = soloud_dll.Bus_setChannels
Bus_setChannels.restype = ctypes.c_int
Bus_setChannels.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Bus_setVisualizationEnable = soloud_dll.Bus_setVisualizationEnable
Bus_setVisualizationEnable.restype = None
Bus_setVisualizationEnable.argtypes = [ctypes.c_void_p, ctypes.c_int]

Bus_annexSound = soloud_dll.Bus_annexSound
Bus_annexSound.restype = None
Bus_annexSound.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Bus_calcFFT = soloud_dll.Bus_calcFFT
Bus_calcFFT.restype = ctypes.POINTER(ctypes.c_float * 256)
Bus_calcFFT.argtypes = [ctypes.c_void_p]

Bus_getWave = soloud_dll.Bus_getWave
Bus_getWave.restype = ctypes.POINTER(ctypes.c_float * 256)
Bus_getWave.argtypes = [ctypes.c_void_p]

Bus_getApproximateVolume = soloud_dll.Bus_getApproximateVolume
Bus_getApproximateVolume.restype = ctypes.c_float
Bus_getApproximateVolume.argtypes = [ctypes.c_void_p, ctypes.c_uint]

Bus_getActiveVoiceCount = soloud_dll.Bus_getActiveVoiceCount
Bus_getActiveVoiceCount.restype = ctypes.c_uint
Bus_getActiveVoiceCount.argtypes = [ctypes.c_void_p]

Bus_setVolume = soloud_dll.Bus_setVolume
Bus_setVolume.restype = None
Bus_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Bus_setLooping = soloud_dll.Bus_setLooping
Bus_setLooping.restype = None
Bus_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Bus_set3dMinMaxDistance = soloud_dll.Bus_set3dMinMaxDistance
Bus_set3dMinMaxDistance.restype = None
Bus_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Bus_set3dAttenuation = soloud_dll.Bus_set3dAttenuation
Bus_set3dAttenuation.restype = None
Bus_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Bus_set3dDopplerFactor = soloud_dll.Bus_set3dDopplerFactor
Bus_set3dDopplerFactor.restype = None
Bus_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Bus_set3dListenerRelative = soloud_dll.Bus_set3dListenerRelative
Bus_set3dListenerRelative.restype = None
Bus_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Bus_set3dDistanceDelay = soloud_dll.Bus_set3dDistanceDelay
Bus_set3dDistanceDelay.restype = None
Bus_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Bus_set3dCollider = soloud_dll.Bus_set3dCollider
Bus_set3dCollider.restype = None
Bus_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Bus_set3dColliderEx = soloud_dll.Bus_set3dColliderEx
Bus_set3dColliderEx.restype = None
Bus_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Bus_set3dAttenuator = soloud_dll.Bus_set3dAttenuator
Bus_set3dAttenuator.restype = None
Bus_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Bus_setInaudibleBehavior = soloud_dll.Bus_setInaudibleBehavior
Bus_setInaudibleBehavior.restype = None
Bus_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Bus_setLoopPoint = soloud_dll.Bus_setLoopPoint
Bus_setLoopPoint.restype = None
Bus_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Bus_getLoopPoint = soloud_dll.Bus_getLoopPoint
Bus_getLoopPoint.restype = ctypes.c_double
Bus_getLoopPoint.argtypes = [ctypes.c_void_p]

Bus_stop = soloud_dll.Bus_stop
Bus_stop.restype = None
Bus_stop.argtypes = [ctypes.c_void_p]

DCRemovalFilter_destroy = soloud_dll.DCRemovalFilter_destroy
DCRemovalFilter_destroy.restype = None
DCRemovalFilter_destroy.argtypes = [ctypes.c_void_p]

DCRemovalFilter_create = soloud_dll.DCRemovalFilter_create
DCRemovalFilter_create.restype = ctypes.c_void_p
DCRemovalFilter_create.argtypes = []

DCRemovalFilter_setParams = soloud_dll.DCRemovalFilter_setParams
DCRemovalFilter_setParams.restype = ctypes.c_int
DCRemovalFilter_setParams.argtypes = [ctypes.c_void_p]

DCRemovalFilter_setParamsEx = soloud_dll.DCRemovalFilter_setParamsEx
DCRemovalFilter_setParamsEx.restype = ctypes.c_int
DCRemovalFilter_setParamsEx.argtypes = [ctypes.c_void_p, ctypes.c_float]

DCRemovalFilter_getParamCount = soloud_dll.DCRemovalFilter_getParamCount
DCRemovalFilter_getParamCount.restype = ctypes.c_int
DCRemovalFilter_getParamCount.argtypes = [ctypes.c_void_p]

DCRemovalFilter_getParamName = soloud_dll.DCRemovalFilter_getParamName
DCRemovalFilter_getParamName.restype = ctypes.c_char_p
DCRemovalFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

DCRemovalFilter_getParamType = soloud_dll.DCRemovalFilter_getParamType
DCRemovalFilter_getParamType.restype = ctypes.c_uint
DCRemovalFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

DCRemovalFilter_getParamMax = soloud_dll.DCRemovalFilter_getParamMax
DCRemovalFilter_getParamMax.restype = ctypes.c_float
DCRemovalFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

DCRemovalFilter_getParamMin = soloud_dll.DCRemovalFilter_getParamMin
DCRemovalFilter_getParamMin.restype = ctypes.c_float
DCRemovalFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

EchoFilter_destroy = soloud_dll.EchoFilter_destroy
EchoFilter_destroy.restype = None
EchoFilter_destroy.argtypes = [ctypes.c_void_p]

EchoFilter_getParamCount = soloud_dll.EchoFilter_getParamCount
EchoFilter_getParamCount.restype = ctypes.c_int
EchoFilter_getParamCount.argtypes = [ctypes.c_void_p]

EchoFilter_getParamName = soloud_dll.EchoFilter_getParamName
EchoFilter_getParamName.restype = ctypes.c_char_p
EchoFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

EchoFilter_getParamType = soloud_dll.EchoFilter_getParamType
EchoFilter_getParamType.restype = ctypes.c_uint
EchoFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

EchoFilter_getParamMax = soloud_dll.EchoFilter_getParamMax
EchoFilter_getParamMax.restype = ctypes.c_float
EchoFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

EchoFilter_getParamMin = soloud_dll.EchoFilter_getParamMin
EchoFilter_getParamMin.restype = ctypes.c_float
EchoFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

EchoFilter_create = soloud_dll.EchoFilter_create
EchoFilter_create.restype = ctypes.c_void_p
EchoFilter_create.argtypes = []

EchoFilter_setParams = soloud_dll.EchoFilter_setParams
EchoFilter_setParams.restype = ctypes.c_int
EchoFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float]

EchoFilter_setParamsEx = soloud_dll.EchoFilter_setParamsEx
EchoFilter_setParamsEx.restype = ctypes.c_int
EchoFilter_setParamsEx.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float]

FFTFilter_destroy = soloud_dll.FFTFilter_destroy
FFTFilter_destroy.restype = None
FFTFilter_destroy.argtypes = [ctypes.c_void_p]

FFTFilter_create = soloud_dll.FFTFilter_create
FFTFilter_create.restype = ctypes.c_void_p
FFTFilter_create.argtypes = []

FFTFilter_getParamCount = soloud_dll.FFTFilter_getParamCount
FFTFilter_getParamCount.restype = ctypes.c_int
FFTFilter_getParamCount.argtypes = [ctypes.c_void_p]

FFTFilter_getParamName = soloud_dll.FFTFilter_getParamName
FFTFilter_getParamName.restype = ctypes.c_char_p
FFTFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FFTFilter_getParamType = soloud_dll.FFTFilter_getParamType
FFTFilter_getParamType.restype = ctypes.c_uint
FFTFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FFTFilter_getParamMax = soloud_dll.FFTFilter_getParamMax
FFTFilter_getParamMax.restype = ctypes.c_float
FFTFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FFTFilter_getParamMin = soloud_dll.FFTFilter_getParamMin
FFTFilter_getParamMin.restype = ctypes.c_float
FFTFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FlangerFilter_destroy = soloud_dll.FlangerFilter_destroy
FlangerFilter_destroy.restype = None
FlangerFilter_destroy.argtypes = [ctypes.c_void_p]

FlangerFilter_getParamCount = soloud_dll.FlangerFilter_getParamCount
FlangerFilter_getParamCount.restype = ctypes.c_int
FlangerFilter_getParamCount.argtypes = [ctypes.c_void_p]

FlangerFilter_getParamName = soloud_dll.FlangerFilter_getParamName
FlangerFilter_getParamName.restype = ctypes.c_char_p
FlangerFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FlangerFilter_getParamType = soloud_dll.FlangerFilter_getParamType
FlangerFilter_getParamType.restype = ctypes.c_uint
FlangerFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FlangerFilter_getParamMax = soloud_dll.FlangerFilter_getParamMax
FlangerFilter_getParamMax.restype = ctypes.c_float
FlangerFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FlangerFilter_getParamMin = soloud_dll.FlangerFilter_getParamMin
FlangerFilter_getParamMin.restype = ctypes.c_float
FlangerFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FlangerFilter_create = soloud_dll.FlangerFilter_create
FlangerFilter_create.restype = ctypes.c_void_p
FlangerFilter_create.argtypes = []

FlangerFilter_setParams = soloud_dll.FlangerFilter_setParams
FlangerFilter_setParams.restype = ctypes.c_int
FlangerFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

FreeverbFilter_destroy = soloud_dll.FreeverbFilter_destroy
FreeverbFilter_destroy.restype = None
FreeverbFilter_destroy.argtypes = [ctypes.c_void_p]

FreeverbFilter_getParamCount = soloud_dll.FreeverbFilter_getParamCount
FreeverbFilter_getParamCount.restype = ctypes.c_int
FreeverbFilter_getParamCount.argtypes = [ctypes.c_void_p]

FreeverbFilter_getParamName = soloud_dll.FreeverbFilter_getParamName
FreeverbFilter_getParamName.restype = ctypes.c_char_p
FreeverbFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FreeverbFilter_getParamType = soloud_dll.FreeverbFilter_getParamType
FreeverbFilter_getParamType.restype = ctypes.c_uint
FreeverbFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FreeverbFilter_getParamMax = soloud_dll.FreeverbFilter_getParamMax
FreeverbFilter_getParamMax.restype = ctypes.c_float
FreeverbFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FreeverbFilter_getParamMin = soloud_dll.FreeverbFilter_getParamMin
FreeverbFilter_getParamMin.restype = ctypes.c_float
FreeverbFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

FreeverbFilter_create = soloud_dll.FreeverbFilter_create
FreeverbFilter_create.restype = ctypes.c_void_p
FreeverbFilter_create.argtypes = []

FreeverbFilter_setParams = soloud_dll.FreeverbFilter_setParams
FreeverbFilter_setParams.restype = ctypes.c_int
FreeverbFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

LofiFilter_destroy = soloud_dll.LofiFilter_destroy
LofiFilter_destroy.restype = None
LofiFilter_destroy.argtypes = [ctypes.c_void_p]

LofiFilter_getParamCount = soloud_dll.LofiFilter_getParamCount
LofiFilter_getParamCount.restype = ctypes.c_int
LofiFilter_getParamCount.argtypes = [ctypes.c_void_p]

LofiFilter_getParamName = soloud_dll.LofiFilter_getParamName
LofiFilter_getParamName.restype = ctypes.c_char_p
LofiFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

LofiFilter_getParamType = soloud_dll.LofiFilter_getParamType
LofiFilter_getParamType.restype = ctypes.c_uint
LofiFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

LofiFilter_getParamMax = soloud_dll.LofiFilter_getParamMax
LofiFilter_getParamMax.restype = ctypes.c_float
LofiFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

LofiFilter_getParamMin = soloud_dll.LofiFilter_getParamMin
LofiFilter_getParamMin.restype = ctypes.c_float
LofiFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

LofiFilter_create = soloud_dll.LofiFilter_create
LofiFilter_create.restype = ctypes.c_void_p
LofiFilter_create.argtypes = []

LofiFilter_setParams = soloud_dll.LofiFilter_setParams
LofiFilter_setParams.restype = ctypes.c_int
LofiFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Monotone_destroy = soloud_dll.Monotone_destroy
Monotone_destroy.restype = None
Monotone_destroy.argtypes = [ctypes.c_void_p]

Monotone_create = soloud_dll.Monotone_create
Monotone_create.restype = ctypes.c_void_p
Monotone_create.argtypes = []

Monotone_setParams = soloud_dll.Monotone_setParams
Monotone_setParams.restype = ctypes.c_int
Monotone_setParams.argtypes = [ctypes.c_void_p, ctypes.c_int]

Monotone_setParamsEx = soloud_dll.Monotone_setParamsEx
Monotone_setParamsEx.restype = ctypes.c_int
Monotone_setParamsEx.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Monotone_load = soloud_dll.Monotone_load
Monotone_load.restype = ctypes.c_int
Monotone_load.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

Monotone_loadMem = soloud_dll.Monotone_loadMem
Monotone_loadMem.restype = ctypes.c_int
Monotone_loadMem.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

Monotone_loadMemEx = soloud_dll.Monotone_loadMemEx
Monotone_loadMemEx.restype = ctypes.c_int
Monotone_loadMemEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_int, ctypes.c_int]

Monotone_loadFile = soloud_dll.Monotone_loadFile
Monotone_loadFile.restype = ctypes.c_int
Monotone_loadFile.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Monotone_setVolume = soloud_dll.Monotone_setVolume
Monotone_setVolume.restype = None
Monotone_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Monotone_setLooping = soloud_dll.Monotone_setLooping
Monotone_setLooping.restype = None
Monotone_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Monotone_set3dMinMaxDistance = soloud_dll.Monotone_set3dMinMaxDistance
Monotone_set3dMinMaxDistance.restype = None
Monotone_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Monotone_set3dAttenuation = soloud_dll.Monotone_set3dAttenuation
Monotone_set3dAttenuation.restype = None
Monotone_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Monotone_set3dDopplerFactor = soloud_dll.Monotone_set3dDopplerFactor
Monotone_set3dDopplerFactor.restype = None
Monotone_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Monotone_set3dListenerRelative = soloud_dll.Monotone_set3dListenerRelative
Monotone_set3dListenerRelative.restype = None
Monotone_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Monotone_set3dDistanceDelay = soloud_dll.Monotone_set3dDistanceDelay
Monotone_set3dDistanceDelay.restype = None
Monotone_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Monotone_set3dCollider = soloud_dll.Monotone_set3dCollider
Monotone_set3dCollider.restype = None
Monotone_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Monotone_set3dColliderEx = soloud_dll.Monotone_set3dColliderEx
Monotone_set3dColliderEx.restype = None
Monotone_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Monotone_set3dAttenuator = soloud_dll.Monotone_set3dAttenuator
Monotone_set3dAttenuator.restype = None
Monotone_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Monotone_setInaudibleBehavior = soloud_dll.Monotone_setInaudibleBehavior
Monotone_setInaudibleBehavior.restype = None
Monotone_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Monotone_setLoopPoint = soloud_dll.Monotone_setLoopPoint
Monotone_setLoopPoint.restype = None
Monotone_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Monotone_getLoopPoint = soloud_dll.Monotone_getLoopPoint
Monotone_getLoopPoint.restype = ctypes.c_double
Monotone_getLoopPoint.argtypes = [ctypes.c_void_p]

Monotone_setFilter = soloud_dll.Monotone_setFilter
Monotone_setFilter.restype = None
Monotone_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Monotone_stop = soloud_dll.Monotone_stop
Monotone_stop.restype = None
Monotone_stop.argtypes = [ctypes.c_void_p]

Noise_destroy = soloud_dll.Noise_destroy
Noise_destroy.restype = None
Noise_destroy.argtypes = [ctypes.c_void_p]

Noise_create = soloud_dll.Noise_create
Noise_create.restype = ctypes.c_void_p
Noise_create.argtypes = []

Noise_setOctaveScale = soloud_dll.Noise_setOctaveScale
Noise_setOctaveScale.restype = None
Noise_setOctaveScale.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float]

Noise_setType = soloud_dll.Noise_setType
Noise_setType.restype = None
Noise_setType.argtypes = [ctypes.c_void_p, ctypes.c_int]

Noise_setVolume = soloud_dll.Noise_setVolume
Noise_setVolume.restype = None
Noise_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Noise_setLooping = soloud_dll.Noise_setLooping
Noise_setLooping.restype = None
Noise_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Noise_set3dMinMaxDistance = soloud_dll.Noise_set3dMinMaxDistance
Noise_set3dMinMaxDistance.restype = None
Noise_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Noise_set3dAttenuation = soloud_dll.Noise_set3dAttenuation
Noise_set3dAttenuation.restype = None
Noise_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Noise_set3dDopplerFactor = soloud_dll.Noise_set3dDopplerFactor
Noise_set3dDopplerFactor.restype = None
Noise_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Noise_set3dListenerRelative = soloud_dll.Noise_set3dListenerRelative
Noise_set3dListenerRelative.restype = None
Noise_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Noise_set3dDistanceDelay = soloud_dll.Noise_set3dDistanceDelay
Noise_set3dDistanceDelay.restype = None
Noise_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Noise_set3dCollider = soloud_dll.Noise_set3dCollider
Noise_set3dCollider.restype = None
Noise_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Noise_set3dColliderEx = soloud_dll.Noise_set3dColliderEx
Noise_set3dColliderEx.restype = None
Noise_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Noise_set3dAttenuator = soloud_dll.Noise_set3dAttenuator
Noise_set3dAttenuator.restype = None
Noise_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Noise_setInaudibleBehavior = soloud_dll.Noise_setInaudibleBehavior
Noise_setInaudibleBehavior.restype = None
Noise_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Noise_setLoopPoint = soloud_dll.Noise_setLoopPoint
Noise_setLoopPoint.restype = None
Noise_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Noise_getLoopPoint = soloud_dll.Noise_getLoopPoint
Noise_getLoopPoint.restype = ctypes.c_double
Noise_getLoopPoint.argtypes = [ctypes.c_void_p]

Noise_setFilter = soloud_dll.Noise_setFilter
Noise_setFilter.restype = None
Noise_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Noise_stop = soloud_dll.Noise_stop
Noise_stop.restype = None
Noise_stop.argtypes = [ctypes.c_void_p]

Openmpt_destroy = soloud_dll.Openmpt_destroy
Openmpt_destroy.restype = None
Openmpt_destroy.argtypes = [ctypes.c_void_p]

Openmpt_create = soloud_dll.Openmpt_create
Openmpt_create.restype = ctypes.c_void_p
Openmpt_create.argtypes = []

Openmpt_load = soloud_dll.Openmpt_load
Openmpt_load.restype = ctypes.c_int
Openmpt_load.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

Openmpt_loadMem = soloud_dll.Openmpt_loadMem
Openmpt_loadMem.restype = ctypes.c_int
Openmpt_loadMem.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

Openmpt_loadMemEx = soloud_dll.Openmpt_loadMemEx
Openmpt_loadMemEx.restype = ctypes.c_int
Openmpt_loadMemEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_int, ctypes.c_int]

Openmpt_loadFile = soloud_dll.Openmpt_loadFile
Openmpt_loadFile.restype = ctypes.c_int
Openmpt_loadFile.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Openmpt_setVolume = soloud_dll.Openmpt_setVolume
Openmpt_setVolume.restype = None
Openmpt_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Openmpt_setLooping = soloud_dll.Openmpt_setLooping
Openmpt_setLooping.restype = None
Openmpt_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Openmpt_set3dMinMaxDistance = soloud_dll.Openmpt_set3dMinMaxDistance
Openmpt_set3dMinMaxDistance.restype = None
Openmpt_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Openmpt_set3dAttenuation = soloud_dll.Openmpt_set3dAttenuation
Openmpt_set3dAttenuation.restype = None
Openmpt_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Openmpt_set3dDopplerFactor = soloud_dll.Openmpt_set3dDopplerFactor
Openmpt_set3dDopplerFactor.restype = None
Openmpt_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Openmpt_set3dListenerRelative = soloud_dll.Openmpt_set3dListenerRelative
Openmpt_set3dListenerRelative.restype = None
Openmpt_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Openmpt_set3dDistanceDelay = soloud_dll.Openmpt_set3dDistanceDelay
Openmpt_set3dDistanceDelay.restype = None
Openmpt_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Openmpt_set3dCollider = soloud_dll.Openmpt_set3dCollider
Openmpt_set3dCollider.restype = None
Openmpt_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Openmpt_set3dColliderEx = soloud_dll.Openmpt_set3dColliderEx
Openmpt_set3dColliderEx.restype = None
Openmpt_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Openmpt_set3dAttenuator = soloud_dll.Openmpt_set3dAttenuator
Openmpt_set3dAttenuator.restype = None
Openmpt_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Openmpt_setInaudibleBehavior = soloud_dll.Openmpt_setInaudibleBehavior
Openmpt_setInaudibleBehavior.restype = None
Openmpt_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Openmpt_setLoopPoint = soloud_dll.Openmpt_setLoopPoint
Openmpt_setLoopPoint.restype = None
Openmpt_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Openmpt_getLoopPoint = soloud_dll.Openmpt_getLoopPoint
Openmpt_getLoopPoint.restype = ctypes.c_double
Openmpt_getLoopPoint.argtypes = [ctypes.c_void_p]

Openmpt_setFilter = soloud_dll.Openmpt_setFilter
Openmpt_setFilter.restype = None
Openmpt_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Openmpt_stop = soloud_dll.Openmpt_stop
Openmpt_stop.restype = None
Openmpt_stop.argtypes = [ctypes.c_void_p]

Queue_destroy = soloud_dll.Queue_destroy
Queue_destroy.restype = None
Queue_destroy.argtypes = [ctypes.c_void_p]

Queue_create = soloud_dll.Queue_create
Queue_create.restype = ctypes.c_void_p
Queue_create.argtypes = []

Queue_play = soloud_dll.Queue_play
Queue_play.restype = ctypes.c_int
Queue_play.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Queue_getQueueCount = soloud_dll.Queue_getQueueCount
Queue_getQueueCount.restype = ctypes.c_uint
Queue_getQueueCount.argtypes = [ctypes.c_void_p]

Queue_isCurrentlyPlaying = soloud_dll.Queue_isCurrentlyPlaying
Queue_isCurrentlyPlaying.restype = ctypes.c_int
Queue_isCurrentlyPlaying.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Queue_setParamsFromAudioSource = soloud_dll.Queue_setParamsFromAudioSource
Queue_setParamsFromAudioSource.restype = ctypes.c_int
Queue_setParamsFromAudioSource.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Queue_setParams = soloud_dll.Queue_setParams
Queue_setParams.restype = ctypes.c_int
Queue_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float]

Queue_setParamsEx = soloud_dll.Queue_setParamsEx
Queue_setParamsEx.restype = ctypes.c_int
Queue_setParamsEx.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_uint]

Queue_setVolume = soloud_dll.Queue_setVolume
Queue_setVolume.restype = None
Queue_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Queue_setLooping = soloud_dll.Queue_setLooping
Queue_setLooping.restype = None
Queue_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Queue_set3dMinMaxDistance = soloud_dll.Queue_set3dMinMaxDistance
Queue_set3dMinMaxDistance.restype = None
Queue_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Queue_set3dAttenuation = soloud_dll.Queue_set3dAttenuation
Queue_set3dAttenuation.restype = None
Queue_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Queue_set3dDopplerFactor = soloud_dll.Queue_set3dDopplerFactor
Queue_set3dDopplerFactor.restype = None
Queue_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Queue_set3dListenerRelative = soloud_dll.Queue_set3dListenerRelative
Queue_set3dListenerRelative.restype = None
Queue_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Queue_set3dDistanceDelay = soloud_dll.Queue_set3dDistanceDelay
Queue_set3dDistanceDelay.restype = None
Queue_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Queue_set3dCollider = soloud_dll.Queue_set3dCollider
Queue_set3dCollider.restype = None
Queue_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Queue_set3dColliderEx = soloud_dll.Queue_set3dColliderEx
Queue_set3dColliderEx.restype = None
Queue_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Queue_set3dAttenuator = soloud_dll.Queue_set3dAttenuator
Queue_set3dAttenuator.restype = None
Queue_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Queue_setInaudibleBehavior = soloud_dll.Queue_setInaudibleBehavior
Queue_setInaudibleBehavior.restype = None
Queue_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Queue_setLoopPoint = soloud_dll.Queue_setLoopPoint
Queue_setLoopPoint.restype = None
Queue_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Queue_getLoopPoint = soloud_dll.Queue_getLoopPoint
Queue_getLoopPoint.restype = ctypes.c_double
Queue_getLoopPoint.argtypes = [ctypes.c_void_p]

Queue_setFilter = soloud_dll.Queue_setFilter
Queue_setFilter.restype = None
Queue_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Queue_stop = soloud_dll.Queue_stop
Queue_stop.restype = None
Queue_stop.argtypes = [ctypes.c_void_p]

RobotizeFilter_destroy = soloud_dll.RobotizeFilter_destroy
RobotizeFilter_destroy.restype = None
RobotizeFilter_destroy.argtypes = [ctypes.c_void_p]

RobotizeFilter_getParamCount = soloud_dll.RobotizeFilter_getParamCount
RobotizeFilter_getParamCount.restype = ctypes.c_int
RobotizeFilter_getParamCount.argtypes = [ctypes.c_void_p]

RobotizeFilter_getParamName = soloud_dll.RobotizeFilter_getParamName
RobotizeFilter_getParamName.restype = ctypes.c_char_p
RobotizeFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

RobotizeFilter_getParamType = soloud_dll.RobotizeFilter_getParamType
RobotizeFilter_getParamType.restype = ctypes.c_uint
RobotizeFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

RobotizeFilter_getParamMax = soloud_dll.RobotizeFilter_getParamMax
RobotizeFilter_getParamMax.restype = ctypes.c_float
RobotizeFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

RobotizeFilter_getParamMin = soloud_dll.RobotizeFilter_getParamMin
RobotizeFilter_getParamMin.restype = ctypes.c_float
RobotizeFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

RobotizeFilter_setParams = soloud_dll.RobotizeFilter_setParams
RobotizeFilter_setParams.restype = None
RobotizeFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_int]

RobotizeFilter_create = soloud_dll.RobotizeFilter_create
RobotizeFilter_create.restype = ctypes.c_void_p
RobotizeFilter_create.argtypes = []

Sfxr_destroy = soloud_dll.Sfxr_destroy
Sfxr_destroy.restype = None
Sfxr_destroy.argtypes = [ctypes.c_void_p]

Sfxr_create = soloud_dll.Sfxr_create
Sfxr_create.restype = ctypes.c_void_p
Sfxr_create.argtypes = []

Sfxr_resetParams = soloud_dll.Sfxr_resetParams
Sfxr_resetParams.restype = None
Sfxr_resetParams.argtypes = [ctypes.c_void_p]

Sfxr_loadParams = soloud_dll.Sfxr_loadParams
Sfxr_loadParams.restype = ctypes.c_int
Sfxr_loadParams.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

Sfxr_loadParamsMem = soloud_dll.Sfxr_loadParamsMem
Sfxr_loadParamsMem.restype = ctypes.c_int
Sfxr_loadParamsMem.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

Sfxr_loadParamsMemEx = soloud_dll.Sfxr_loadParamsMemEx
Sfxr_loadParamsMemEx.restype = ctypes.c_int
Sfxr_loadParamsMemEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_int, ctypes.c_int]

Sfxr_loadParamsFile = soloud_dll.Sfxr_loadParamsFile
Sfxr_loadParamsFile.restype = ctypes.c_int
Sfxr_loadParamsFile.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Sfxr_loadPreset = soloud_dll.Sfxr_loadPreset
Sfxr_loadPreset.restype = ctypes.c_int
Sfxr_loadPreset.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Sfxr_setVolume = soloud_dll.Sfxr_setVolume
Sfxr_setVolume.restype = None
Sfxr_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Sfxr_setLooping = soloud_dll.Sfxr_setLooping
Sfxr_setLooping.restype = None
Sfxr_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Sfxr_set3dMinMaxDistance = soloud_dll.Sfxr_set3dMinMaxDistance
Sfxr_set3dMinMaxDistance.restype = None
Sfxr_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Sfxr_set3dAttenuation = soloud_dll.Sfxr_set3dAttenuation
Sfxr_set3dAttenuation.restype = None
Sfxr_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Sfxr_set3dDopplerFactor = soloud_dll.Sfxr_set3dDopplerFactor
Sfxr_set3dDopplerFactor.restype = None
Sfxr_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Sfxr_set3dListenerRelative = soloud_dll.Sfxr_set3dListenerRelative
Sfxr_set3dListenerRelative.restype = None
Sfxr_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Sfxr_set3dDistanceDelay = soloud_dll.Sfxr_set3dDistanceDelay
Sfxr_set3dDistanceDelay.restype = None
Sfxr_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Sfxr_set3dCollider = soloud_dll.Sfxr_set3dCollider
Sfxr_set3dCollider.restype = None
Sfxr_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Sfxr_set3dColliderEx = soloud_dll.Sfxr_set3dColliderEx
Sfxr_set3dColliderEx.restype = None
Sfxr_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Sfxr_set3dAttenuator = soloud_dll.Sfxr_set3dAttenuator
Sfxr_set3dAttenuator.restype = None
Sfxr_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Sfxr_setInaudibleBehavior = soloud_dll.Sfxr_setInaudibleBehavior
Sfxr_setInaudibleBehavior.restype = None
Sfxr_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Sfxr_setLoopPoint = soloud_dll.Sfxr_setLoopPoint
Sfxr_setLoopPoint.restype = None
Sfxr_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Sfxr_getLoopPoint = soloud_dll.Sfxr_getLoopPoint
Sfxr_getLoopPoint.restype = ctypes.c_double
Sfxr_getLoopPoint.argtypes = [ctypes.c_void_p]

Sfxr_setFilter = soloud_dll.Sfxr_setFilter
Sfxr_setFilter.restype = None
Sfxr_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Sfxr_stop = soloud_dll.Sfxr_stop
Sfxr_stop.restype = None
Sfxr_stop.argtypes = [ctypes.c_void_p]

Speech_destroy = soloud_dll.Speech_destroy
Speech_destroy.restype = None
Speech_destroy.argtypes = [ctypes.c_void_p]

Speech_create = soloud_dll.Speech_create
Speech_create.restype = ctypes.c_void_p
Speech_create.argtypes = []

Speech_setText = soloud_dll.Speech_setText
Speech_setText.restype = ctypes.c_int
Speech_setText.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

Speech_setParams = soloud_dll.Speech_setParams
Speech_setParams.restype = ctypes.c_int
Speech_setParams.argtypes = [ctypes.c_void_p]

Speech_setParamsEx = soloud_dll.Speech_setParamsEx
Speech_setParamsEx.restype = ctypes.c_int
Speech_setParamsEx.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float, ctypes.c_float, ctypes.c_int]

Speech_setVolume = soloud_dll.Speech_setVolume
Speech_setVolume.restype = None
Speech_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Speech_setLooping = soloud_dll.Speech_setLooping
Speech_setLooping.restype = None
Speech_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Speech_set3dMinMaxDistance = soloud_dll.Speech_set3dMinMaxDistance
Speech_set3dMinMaxDistance.restype = None
Speech_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Speech_set3dAttenuation = soloud_dll.Speech_set3dAttenuation
Speech_set3dAttenuation.restype = None
Speech_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Speech_set3dDopplerFactor = soloud_dll.Speech_set3dDopplerFactor
Speech_set3dDopplerFactor.restype = None
Speech_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Speech_set3dListenerRelative = soloud_dll.Speech_set3dListenerRelative
Speech_set3dListenerRelative.restype = None
Speech_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Speech_set3dDistanceDelay = soloud_dll.Speech_set3dDistanceDelay
Speech_set3dDistanceDelay.restype = None
Speech_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Speech_set3dCollider = soloud_dll.Speech_set3dCollider
Speech_set3dCollider.restype = None
Speech_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Speech_set3dColliderEx = soloud_dll.Speech_set3dColliderEx
Speech_set3dColliderEx.restype = None
Speech_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Speech_set3dAttenuator = soloud_dll.Speech_set3dAttenuator
Speech_set3dAttenuator.restype = None
Speech_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Speech_setInaudibleBehavior = soloud_dll.Speech_setInaudibleBehavior
Speech_setInaudibleBehavior.restype = None
Speech_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Speech_setLoopPoint = soloud_dll.Speech_setLoopPoint
Speech_setLoopPoint.restype = None
Speech_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Speech_getLoopPoint = soloud_dll.Speech_getLoopPoint
Speech_getLoopPoint.restype = ctypes.c_double
Speech_getLoopPoint.argtypes = [ctypes.c_void_p]

Speech_setFilter = soloud_dll.Speech_setFilter
Speech_setFilter.restype = None
Speech_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Speech_stop = soloud_dll.Speech_stop
Speech_stop.restype = None
Speech_stop.argtypes = [ctypes.c_void_p]

TedSid_destroy = soloud_dll.TedSid_destroy
TedSid_destroy.restype = None
TedSid_destroy.argtypes = [ctypes.c_void_p]

TedSid_create = soloud_dll.TedSid_create
TedSid_create.restype = ctypes.c_void_p
TedSid_create.argtypes = []

TedSid_load = soloud_dll.TedSid_load
TedSid_load.restype = ctypes.c_int
TedSid_load.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

TedSid_loadToMem = soloud_dll.TedSid_loadToMem
TedSid_loadToMem.restype = ctypes.c_int
TedSid_loadToMem.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

TedSid_loadMem = soloud_dll.TedSid_loadMem
TedSid_loadMem.restype = ctypes.c_int
TedSid_loadMem.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

TedSid_loadMemEx = soloud_dll.TedSid_loadMemEx
TedSid_loadMemEx.restype = ctypes.c_int
TedSid_loadMemEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_int, ctypes.c_int]

TedSid_loadFileToMem = soloud_dll.TedSid_loadFileToMem
TedSid_loadFileToMem.restype = ctypes.c_int
TedSid_loadFileToMem.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

TedSid_loadFile = soloud_dll.TedSid_loadFile
TedSid_loadFile.restype = ctypes.c_int
TedSid_loadFile.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

TedSid_setVolume = soloud_dll.TedSid_setVolume
TedSid_setVolume.restype = None
TedSid_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

TedSid_setLooping = soloud_dll.TedSid_setLooping
TedSid_setLooping.restype = None
TedSid_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

TedSid_set3dMinMaxDistance = soloud_dll.TedSid_set3dMinMaxDistance
TedSid_set3dMinMaxDistance.restype = None
TedSid_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

TedSid_set3dAttenuation = soloud_dll.TedSid_set3dAttenuation
TedSid_set3dAttenuation.restype = None
TedSid_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

TedSid_set3dDopplerFactor = soloud_dll.TedSid_set3dDopplerFactor
TedSid_set3dDopplerFactor.restype = None
TedSid_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

TedSid_set3dListenerRelative = soloud_dll.TedSid_set3dListenerRelative
TedSid_set3dListenerRelative.restype = None
TedSid_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

TedSid_set3dDistanceDelay = soloud_dll.TedSid_set3dDistanceDelay
TedSid_set3dDistanceDelay.restype = None
TedSid_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

TedSid_set3dCollider = soloud_dll.TedSid_set3dCollider
TedSid_set3dCollider.restype = None
TedSid_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

TedSid_set3dColliderEx = soloud_dll.TedSid_set3dColliderEx
TedSid_set3dColliderEx.restype = None
TedSid_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

TedSid_set3dAttenuator = soloud_dll.TedSid_set3dAttenuator
TedSid_set3dAttenuator.restype = None
TedSid_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

TedSid_setInaudibleBehavior = soloud_dll.TedSid_setInaudibleBehavior
TedSid_setInaudibleBehavior.restype = None
TedSid_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

TedSid_setLoopPoint = soloud_dll.TedSid_setLoopPoint
TedSid_setLoopPoint.restype = None
TedSid_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

TedSid_getLoopPoint = soloud_dll.TedSid_getLoopPoint
TedSid_getLoopPoint.restype = ctypes.c_double
TedSid_getLoopPoint.argtypes = [ctypes.c_void_p]

TedSid_setFilter = soloud_dll.TedSid_setFilter
TedSid_setFilter.restype = None
TedSid_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

TedSid_stop = soloud_dll.TedSid_stop
TedSid_stop.restype = None
TedSid_stop.argtypes = [ctypes.c_void_p]

Vic_destroy = soloud_dll.Vic_destroy
Vic_destroy.restype = None
Vic_destroy.argtypes = [ctypes.c_void_p]

Vic_create = soloud_dll.Vic_create
Vic_create.restype = ctypes.c_void_p
Vic_create.argtypes = []

Vic_setModel = soloud_dll.Vic_setModel
Vic_setModel.restype = None
Vic_setModel.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vic_getModel = soloud_dll.Vic_getModel
Vic_getModel.restype = ctypes.c_int
Vic_getModel.argtypes = [ctypes.c_void_p]

Vic_setRegister = soloud_dll.Vic_setRegister
Vic_setRegister.restype = None
Vic_setRegister.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_ubyte]

Vic_getRegister = soloud_dll.Vic_getRegister
Vic_getRegister.restype = ctypes.c_ubyte
Vic_getRegister.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vic_setVolume = soloud_dll.Vic_setVolume
Vic_setVolume.restype = None
Vic_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Vic_setLooping = soloud_dll.Vic_setLooping
Vic_setLooping.restype = None
Vic_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vic_set3dMinMaxDistance = soloud_dll.Vic_set3dMinMaxDistance
Vic_set3dMinMaxDistance.restype = None
Vic_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Vic_set3dAttenuation = soloud_dll.Vic_set3dAttenuation
Vic_set3dAttenuation.restype = None
Vic_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Vic_set3dDopplerFactor = soloud_dll.Vic_set3dDopplerFactor
Vic_set3dDopplerFactor.restype = None
Vic_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Vic_set3dListenerRelative = soloud_dll.Vic_set3dListenerRelative
Vic_set3dListenerRelative.restype = None
Vic_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vic_set3dDistanceDelay = soloud_dll.Vic_set3dDistanceDelay
Vic_set3dDistanceDelay.restype = None
Vic_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vic_set3dCollider = soloud_dll.Vic_set3dCollider
Vic_set3dCollider.restype = None
Vic_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Vic_set3dColliderEx = soloud_dll.Vic_set3dColliderEx
Vic_set3dColliderEx.restype = None
Vic_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Vic_set3dAttenuator = soloud_dll.Vic_set3dAttenuator
Vic_set3dAttenuator.restype = None
Vic_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Vic_setInaudibleBehavior = soloud_dll.Vic_setInaudibleBehavior
Vic_setInaudibleBehavior.restype = None
Vic_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Vic_setLoopPoint = soloud_dll.Vic_setLoopPoint
Vic_setLoopPoint.restype = None
Vic_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Vic_getLoopPoint = soloud_dll.Vic_getLoopPoint
Vic_getLoopPoint.restype = ctypes.c_double
Vic_getLoopPoint.argtypes = [ctypes.c_void_p]

Vic_setFilter = soloud_dll.Vic_setFilter
Vic_setFilter.restype = None
Vic_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Vic_stop = soloud_dll.Vic_stop
Vic_stop.restype = None
Vic_stop.argtypes = [ctypes.c_void_p]

Vizsn_destroy = soloud_dll.Vizsn_destroy
Vizsn_destroy.restype = None
Vizsn_destroy.argtypes = [ctypes.c_void_p]

Vizsn_create = soloud_dll.Vizsn_create
Vizsn_create.restype = ctypes.c_void_p
Vizsn_create.argtypes = []

Vizsn_setText = soloud_dll.Vizsn_setText
Vizsn_setText.restype = None
Vizsn_setText.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

Vizsn_setVolume = soloud_dll.Vizsn_setVolume
Vizsn_setVolume.restype = None
Vizsn_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Vizsn_setLooping = soloud_dll.Vizsn_setLooping
Vizsn_setLooping.restype = None
Vizsn_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vizsn_set3dMinMaxDistance = soloud_dll.Vizsn_set3dMinMaxDistance
Vizsn_set3dMinMaxDistance.restype = None
Vizsn_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Vizsn_set3dAttenuation = soloud_dll.Vizsn_set3dAttenuation
Vizsn_set3dAttenuation.restype = None
Vizsn_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Vizsn_set3dDopplerFactor = soloud_dll.Vizsn_set3dDopplerFactor
Vizsn_set3dDopplerFactor.restype = None
Vizsn_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Vizsn_set3dListenerRelative = soloud_dll.Vizsn_set3dListenerRelative
Vizsn_set3dListenerRelative.restype = None
Vizsn_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vizsn_set3dDistanceDelay = soloud_dll.Vizsn_set3dDistanceDelay
Vizsn_set3dDistanceDelay.restype = None
Vizsn_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Vizsn_set3dCollider = soloud_dll.Vizsn_set3dCollider
Vizsn_set3dCollider.restype = None
Vizsn_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Vizsn_set3dColliderEx = soloud_dll.Vizsn_set3dColliderEx
Vizsn_set3dColliderEx.restype = None
Vizsn_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Vizsn_set3dAttenuator = soloud_dll.Vizsn_set3dAttenuator
Vizsn_set3dAttenuator.restype = None
Vizsn_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Vizsn_setInaudibleBehavior = soloud_dll.Vizsn_setInaudibleBehavior
Vizsn_setInaudibleBehavior.restype = None
Vizsn_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Vizsn_setLoopPoint = soloud_dll.Vizsn_setLoopPoint
Vizsn_setLoopPoint.restype = None
Vizsn_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Vizsn_getLoopPoint = soloud_dll.Vizsn_getLoopPoint
Vizsn_getLoopPoint.restype = ctypes.c_double
Vizsn_getLoopPoint.argtypes = [ctypes.c_void_p]

Vizsn_setFilter = soloud_dll.Vizsn_setFilter
Vizsn_setFilter.restype = None
Vizsn_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Vizsn_stop = soloud_dll.Vizsn_stop
Vizsn_stop.restype = None
Vizsn_stop.argtypes = [ctypes.c_void_p]

Wav_destroy = soloud_dll.Wav_destroy
Wav_destroy.restype = None
Wav_destroy.argtypes = [ctypes.c_void_p]

Wav_create = soloud_dll.Wav_create
Wav_create.restype = ctypes.c_void_p
Wav_create.argtypes = []

Wav_load = soloud_dll.Wav_load
Wav_load.restype = ctypes.c_int
Wav_load.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

Wav_loadMem = soloud_dll.Wav_loadMem
Wav_loadMem.restype = ctypes.c_int
Wav_loadMem.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

Wav_loadMemEx = soloud_dll.Wav_loadMemEx
Wav_loadMemEx.restype = ctypes.c_int
Wav_loadMemEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_int, ctypes.c_int]

Wav_loadFile = soloud_dll.Wav_loadFile
Wav_loadFile.restype = ctypes.c_int
Wav_loadFile.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Wav_loadRawWave8 = soloud_dll.Wav_loadRawWave8
Wav_loadRawWave8.restype = ctypes.c_int
Wav_loadRawWave8.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

Wav_loadRawWave8Ex = soloud_dll.Wav_loadRawWave8Ex
Wav_loadRawWave8Ex.restype = ctypes.c_int
Wav_loadRawWave8Ex.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_float, ctypes.c_uint]

Wav_loadRawWave16 = soloud_dll.Wav_loadRawWave16
Wav_loadRawWave16.restype = ctypes.c_int
Wav_loadRawWave16.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_short), ctypes.c_uint]

Wav_loadRawWave16Ex = soloud_dll.Wav_loadRawWave16Ex
Wav_loadRawWave16Ex.restype = ctypes.c_int
Wav_loadRawWave16Ex.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_short), ctypes.c_uint, ctypes.c_float, ctypes.c_uint]

Wav_loadRawWave = soloud_dll.Wav_loadRawWave
Wav_loadRawWave.restype = ctypes.c_int
Wav_loadRawWave.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_float * 256), ctypes.c_uint]

Wav_loadRawWaveEx = soloud_dll.Wav_loadRawWaveEx
Wav_loadRawWaveEx.restype = ctypes.c_int
Wav_loadRawWaveEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_float * 256), ctypes.c_uint, ctypes.c_float, ctypes.c_uint, ctypes.c_int, ctypes.c_int]

Wav_getLength = soloud_dll.Wav_getLength
Wav_getLength.restype = ctypes.c_double
Wav_getLength.argtypes = [ctypes.c_void_p]

Wav_setVolume = soloud_dll.Wav_setVolume
Wav_setVolume.restype = None
Wav_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

Wav_setLooping = soloud_dll.Wav_setLooping
Wav_setLooping.restype = None
Wav_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

Wav_set3dMinMaxDistance = soloud_dll.Wav_set3dMinMaxDistance
Wav_set3dMinMaxDistance.restype = None
Wav_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

Wav_set3dAttenuation = soloud_dll.Wav_set3dAttenuation
Wav_set3dAttenuation.restype = None
Wav_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

Wav_set3dDopplerFactor = soloud_dll.Wav_set3dDopplerFactor
Wav_set3dDopplerFactor.restype = None
Wav_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

Wav_set3dListenerRelative = soloud_dll.Wav_set3dListenerRelative
Wav_set3dListenerRelative.restype = None
Wav_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

Wav_set3dDistanceDelay = soloud_dll.Wav_set3dDistanceDelay
Wav_set3dDistanceDelay.restype = None
Wav_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

Wav_set3dCollider = soloud_dll.Wav_set3dCollider
Wav_set3dCollider.restype = None
Wav_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Wav_set3dColliderEx = soloud_dll.Wav_set3dColliderEx
Wav_set3dColliderEx.restype = None
Wav_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

Wav_set3dAttenuator = soloud_dll.Wav_set3dAttenuator
Wav_set3dAttenuator.restype = None
Wav_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

Wav_setInaudibleBehavior = soloud_dll.Wav_setInaudibleBehavior
Wav_setInaudibleBehavior.restype = None
Wav_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

Wav_setLoopPoint = soloud_dll.Wav_setLoopPoint
Wav_setLoopPoint.restype = None
Wav_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

Wav_getLoopPoint = soloud_dll.Wav_getLoopPoint
Wav_getLoopPoint.restype = ctypes.c_double
Wav_getLoopPoint.argtypes = [ctypes.c_void_p]

Wav_setFilter = soloud_dll.Wav_setFilter
Wav_setFilter.restype = None
Wav_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

Wav_stop = soloud_dll.Wav_stop
Wav_stop.restype = None
Wav_stop.argtypes = [ctypes.c_void_p]

WaveShaperFilter_destroy = soloud_dll.WaveShaperFilter_destroy
WaveShaperFilter_destroy.restype = None
WaveShaperFilter_destroy.argtypes = [ctypes.c_void_p]

WaveShaperFilter_setParams = soloud_dll.WaveShaperFilter_setParams
WaveShaperFilter_setParams.restype = ctypes.c_int
WaveShaperFilter_setParams.argtypes = [ctypes.c_void_p, ctypes.c_float]

WaveShaperFilter_create = soloud_dll.WaveShaperFilter_create
WaveShaperFilter_create.restype = ctypes.c_void_p
WaveShaperFilter_create.argtypes = []

WaveShaperFilter_getParamCount = soloud_dll.WaveShaperFilter_getParamCount
WaveShaperFilter_getParamCount.restype = ctypes.c_int
WaveShaperFilter_getParamCount.argtypes = [ctypes.c_void_p]

WaveShaperFilter_getParamName = soloud_dll.WaveShaperFilter_getParamName
WaveShaperFilter_getParamName.restype = ctypes.c_char_p
WaveShaperFilter_getParamName.argtypes = [ctypes.c_void_p, ctypes.c_uint]

WaveShaperFilter_getParamType = soloud_dll.WaveShaperFilter_getParamType
WaveShaperFilter_getParamType.restype = ctypes.c_uint
WaveShaperFilter_getParamType.argtypes = [ctypes.c_void_p, ctypes.c_uint]

WaveShaperFilter_getParamMax = soloud_dll.WaveShaperFilter_getParamMax
WaveShaperFilter_getParamMax.restype = ctypes.c_float
WaveShaperFilter_getParamMax.argtypes = [ctypes.c_void_p, ctypes.c_uint]

WaveShaperFilter_getParamMin = soloud_dll.WaveShaperFilter_getParamMin
WaveShaperFilter_getParamMin.restype = ctypes.c_float
WaveShaperFilter_getParamMin.argtypes = [ctypes.c_void_p, ctypes.c_uint]

WavStream_destroy = soloud_dll.WavStream_destroy
WavStream_destroy.restype = None
WavStream_destroy.argtypes = [ctypes.c_void_p]

WavStream_create = soloud_dll.WavStream_create
WavStream_create.restype = ctypes.c_void_p
WavStream_create.argtypes = []

WavStream_load = soloud_dll.WavStream_load
WavStream_load.restype = ctypes.c_int
WavStream_load.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

WavStream_loadMem = soloud_dll.WavStream_loadMem
WavStream_loadMem.restype = ctypes.c_int
WavStream_loadMem.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint]

WavStream_loadMemEx = soloud_dll.WavStream_loadMemEx
WavStream_loadMemEx.restype = ctypes.c_int
WavStream_loadMemEx.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_int, ctypes.c_int]

WavStream_loadToMem = soloud_dll.WavStream_loadToMem
WavStream_loadToMem.restype = ctypes.c_int
WavStream_loadToMem.argtypes = [ctypes.c_void_p, ctypes.c_char_p]

WavStream_loadFile = soloud_dll.WavStream_loadFile
WavStream_loadFile.restype = ctypes.c_int
WavStream_loadFile.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

WavStream_loadFileToMem = soloud_dll.WavStream_loadFileToMem
WavStream_loadFileToMem.restype = ctypes.c_int
WavStream_loadFileToMem.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

WavStream_getLength = soloud_dll.WavStream_getLength
WavStream_getLength.restype = ctypes.c_double
WavStream_getLength.argtypes = [ctypes.c_void_p]

WavStream_setVolume = soloud_dll.WavStream_setVolume
WavStream_setVolume.restype = None
WavStream_setVolume.argtypes = [ctypes.c_void_p, ctypes.c_float]

WavStream_setLooping = soloud_dll.WavStream_setLooping
WavStream_setLooping.restype = None
WavStream_setLooping.argtypes = [ctypes.c_void_p, ctypes.c_int]

WavStream_set3dMinMaxDistance = soloud_dll.WavStream_set3dMinMaxDistance
WavStream_set3dMinMaxDistance.restype = None
WavStream_set3dMinMaxDistance.argtypes = [ctypes.c_void_p, ctypes.c_float, ctypes.c_float]

WavStream_set3dAttenuation = soloud_dll.WavStream_set3dAttenuation
WavStream_set3dAttenuation.restype = None
WavStream_set3dAttenuation.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_float]

WavStream_set3dDopplerFactor = soloud_dll.WavStream_set3dDopplerFactor
WavStream_set3dDopplerFactor.restype = None
WavStream_set3dDopplerFactor.argtypes = [ctypes.c_void_p, ctypes.c_float]

WavStream_set3dListenerRelative = soloud_dll.WavStream_set3dListenerRelative
WavStream_set3dListenerRelative.restype = None
WavStream_set3dListenerRelative.argtypes = [ctypes.c_void_p, ctypes.c_int]

WavStream_set3dDistanceDelay = soloud_dll.WavStream_set3dDistanceDelay
WavStream_set3dDistanceDelay.restype = None
WavStream_set3dDistanceDelay.argtypes = [ctypes.c_void_p, ctypes.c_int]

WavStream_set3dCollider = soloud_dll.WavStream_set3dCollider
WavStream_set3dCollider.restype = None
WavStream_set3dCollider.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

WavStream_set3dColliderEx = soloud_dll.WavStream_set3dColliderEx
WavStream_set3dColliderEx.restype = None
WavStream_set3dColliderEx.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int]

WavStream_set3dAttenuator = soloud_dll.WavStream_set3dAttenuator
WavStream_set3dAttenuator.restype = None
WavStream_set3dAttenuator.argtypes = [ctypes.c_void_p, ctypes.c_void_p]

WavStream_setInaudibleBehavior = soloud_dll.WavStream_setInaudibleBehavior
WavStream_setInaudibleBehavior.restype = None
WavStream_setInaudibleBehavior.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]

WavStream_setLoopPoint = soloud_dll.WavStream_setLoopPoint
WavStream_setLoopPoint.restype = None
WavStream_setLoopPoint.argtypes = [ctypes.c_void_p, ctypes.c_double]

WavStream_getLoopPoint = soloud_dll.WavStream_getLoopPoint
WavStream_getLoopPoint.restype = ctypes.c_double
WavStream_getLoopPoint.argtypes = [ctypes.c_void_p]

WavStream_setFilter = soloud_dll.WavStream_setFilter
WavStream_setFilter.restype = None
WavStream_setFilter.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]

WavStream_stop = soloud_dll.WavStream_stop
WavStream_stop.restype = None
WavStream_stop.argtypes = [ctypes.c_void_p]

# OOP wrappers

class Soloud(object):
	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 __init__(self):
		self.objhandle = Soloud_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Soloud_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Soloud_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Soloud_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Soloud_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def init(self, aFlags = CLIP_ROUNDOFF, aBackend = AUTO, aSamplerate = AUTO, aBufferSize = AUTO, aChannels = 2):
		return Soloud_initEx(self.objhandle, ctypes.c_uint(aFlags), ctypes.c_uint(aBackend), ctypes.c_uint(aSamplerate), ctypes.c_uint(aBufferSize), ctypes.c_uint(aChannels))
	def deinit(self):
		Soloud_deinit(self.objhandle)
	def get_version(self):
		return Soloud_getVersion(self.objhandle)
	def get_error_string(self, aErrorCode):
		return Soloud_getErrorString(self.objhandle, ctypes.c_int(aErrorCode))
	def get_backend_id(self):
		return Soloud_getBackendId(self.objhandle)
	def get_backend_string(self):
		return Soloud_getBackendString(self.objhandle)
	def get_backend_channels(self):
		return Soloud_getBackendChannels(self.objhandle)
	def get_backend_samplerate(self):
		return Soloud_getBackendSamplerate(self.objhandle)
	def get_backend_buffer_size(self):
		return Soloud_getBackendBufferSize(self.objhandle)
	def set_speaker_position(self, aChannel, aX, aY, aZ):
		return Soloud_setSpeakerPosition(self.objhandle, ctypes.c_uint(aChannel), ctypes.c_float(aX), ctypes.c_float(aY), ctypes.c_float(aZ))
	def get_speaker_position(self, aChannel, aX, aY, aZ):
		return Soloud_getSpeakerPosition(self.objhandle, ctypes.c_uint(aChannel), ctypes.POINTER(ctypes.c_float * 256)(aX), ctypes.POINTER(ctypes.c_float * 256)(aY), ctypes.POINTER(ctypes.c_float * 256)(aZ))
	def play(self, aSound, aVolume = -1.0, aPan = 0.0, aPaused = 0, aBus = 0):
		return Soloud_playEx(self.objhandle, aSound.objhandle, ctypes.c_float(aVolume), ctypes.c_float(aPan), ctypes.c_int(aPaused), ctypes.c_uint(aBus))
	def play_clocked(self, aSoundTime, aSound, aVolume = -1.0, aPan = 0.0, aBus = 0):
		return Soloud_playClockedEx(self.objhandle, ctypes.c_double(aSoundTime), aSound.objhandle, ctypes.c_float(aVolume), ctypes.c_float(aPan), ctypes.c_uint(aBus))
	def play_3d(self, aSound, aPosX, aPosY, aPosZ, aVelX = 0.0, aVelY = 0.0, aVelZ = 0.0, aVolume = 1.0, aPaused = 0, aBus = 0):
		return Soloud_play3dEx(self.objhandle, aSound.objhandle, ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ), ctypes.c_float(aVelX), ctypes.c_float(aVelY), ctypes.c_float(aVelZ), ctypes.c_float(aVolume), ctypes.c_int(aPaused), ctypes.c_uint(aBus))
	def play_3d_clocked(self, aSoundTime, aSound, aPosX, aPosY, aPosZ, aVelX = 0.0, aVelY = 0.0, aVelZ = 0.0, aVolume = 1.0, aBus = 0):
		return Soloud_play3dClockedEx(self.objhandle, ctypes.c_double(aSoundTime), aSound.objhandle, ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ), ctypes.c_float(aVelX), ctypes.c_float(aVelY), ctypes.c_float(aVelZ), ctypes.c_float(aVolume), ctypes.c_uint(aBus))
	def play_background(self, aSound, aVolume = -1.0, aPaused = 0, aBus = 0):
		return Soloud_playBackgroundEx(self.objhandle, aSound.objhandle, ctypes.c_float(aVolume), ctypes.c_int(aPaused), ctypes.c_uint(aBus))
	def seek(self, aVoiceHandle, aSeconds):
		return Soloud_seek(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_double(aSeconds))
	def stop(self, aVoiceHandle):
		Soloud_stop(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def stop_all(self):
		Soloud_stopAll(self.objhandle)
	def stop_audio_source(self, aSound):
		Soloud_stopAudioSource(self.objhandle, aSound.objhandle)
	def count_audio_source(self, aSound):
		return Soloud_countAudioSource(self.objhandle, aSound.objhandle)
	def set_filter_parameter(self, aVoiceHandle, aFilterId, aAttributeId, aValue):
		Soloud_setFilterParameter(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aFilterId), ctypes.c_uint(aAttributeId), ctypes.c_float(aValue))
	def get_filter_parameter(self, aVoiceHandle, aFilterId, aAttributeId):
		return Soloud_getFilterParameter(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aFilterId), ctypes.c_uint(aAttributeId))
	def fade_filter_parameter(self, aVoiceHandle, aFilterId, aAttributeId, aTo, aTime):
		Soloud_fadeFilterParameter(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aFilterId), ctypes.c_uint(aAttributeId), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def oscillate_filter_parameter(self, aVoiceHandle, aFilterId, aAttributeId, aFrom, aTo, aTime):
		Soloud_oscillateFilterParameter(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aFilterId), ctypes.c_uint(aAttributeId), ctypes.c_float(aFrom), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def get_stream_time(self, aVoiceHandle):
		return Soloud_getStreamTime(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_stream_position(self, aVoiceHandle):
		return Soloud_getStreamPosition(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_pause(self, aVoiceHandle):
		return Soloud_getPause(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_volume(self, aVoiceHandle):
		return Soloud_getVolume(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_overall_volume(self, aVoiceHandle):
		return Soloud_getOverallVolume(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_pan(self, aVoiceHandle):
		return Soloud_getPan(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_samplerate(self, aVoiceHandle):
		return Soloud_getSamplerate(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_protect_voice(self, aVoiceHandle):
		return Soloud_getProtectVoice(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_active_voice_count(self):
		return Soloud_getActiveVoiceCount(self.objhandle)
	def get_voice_count(self):
		return Soloud_getVoiceCount(self.objhandle)
	def is_valid_voice_handle(self, aVoiceHandle):
		return Soloud_isValidVoiceHandle(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_relative_play_speed(self, aVoiceHandle):
		return Soloud_getRelativePlaySpeed(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_post_clip_scaler(self):
		return Soloud_getPostClipScaler(self.objhandle)
	def get_global_volume(self):
		return Soloud_getGlobalVolume(self.objhandle)
	def get_max_active_voice_count(self):
		return Soloud_getMaxActiveVoiceCount(self.objhandle)
	def get_looping(self, aVoiceHandle):
		return Soloud_getLooping(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_loop_point(self, aVoiceHandle):
		return Soloud_getLoopPoint(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def set_loop_point(self, aVoiceHandle, aLoopPoint):
		Soloud_setLoopPoint(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_double(aLoopPoint))
	def set_looping(self, aVoiceHandle, aLooping):
		Soloud_setLooping(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_int(aLooping))
	def set_max_active_voice_count(self, aVoiceCount):
		return Soloud_setMaxActiveVoiceCount(self.objhandle, ctypes.c_uint(aVoiceCount))
	def set_inaudible_behavior(self, aVoiceHandle, aMustTick, aKill):
		Soloud_setInaudibleBehavior(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_global_volume(self, aVolume):
		Soloud_setGlobalVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_post_clip_scaler(self, aScaler):
		Soloud_setPostClipScaler(self.objhandle, ctypes.c_float(aScaler))
	def set_pause(self, aVoiceHandle, aPause):
		Soloud_setPause(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_int(aPause))
	def set_pause_all(self, aPause):
		Soloud_setPauseAll(self.objhandle, ctypes.c_int(aPause))
	def set_relative_play_speed(self, aVoiceHandle, aSpeed):
		return Soloud_setRelativePlaySpeed(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aSpeed))
	def set_protect_voice(self, aVoiceHandle, aProtect):
		Soloud_setProtectVoice(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_int(aProtect))
	def set_samplerate(self, aVoiceHandle, aSamplerate):
		Soloud_setSamplerate(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aSamplerate))
	def set_pan(self, aVoiceHandle, aPan):
		Soloud_setPan(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aPan))
	def set_pan_absolute(self, aVoiceHandle, aLVolume, aRVolume, aLBVolume = 0, aRBVolume = 0, aCVolume = 0, aSVolume = 0):
		Soloud_setPanAbsoluteEx(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aLVolume), ctypes.c_float(aRVolume), ctypes.c_float(aLBVolume), ctypes.c_float(aRBVolume), ctypes.c_float(aCVolume), ctypes.c_float(aSVolume))
	def set_volume(self, aVoiceHandle, aVolume):
		Soloud_setVolume(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aVolume))
	def set_delay_samples(self, aVoiceHandle, aSamples):
		Soloud_setDelaySamples(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aSamples))
	def fade_volume(self, aVoiceHandle, aTo, aTime):
		Soloud_fadeVolume(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def fade_pan(self, aVoiceHandle, aTo, aTime):
		Soloud_fadePan(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def fade_relative_play_speed(self, aVoiceHandle, aTo, aTime):
		Soloud_fadeRelativePlaySpeed(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def fade_global_volume(self, aTo, aTime):
		Soloud_fadeGlobalVolume(self.objhandle, ctypes.c_float(aTo), ctypes.c_double(aTime))
	def schedule_pause(self, aVoiceHandle, aTime):
		Soloud_schedulePause(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_double(aTime))
	def schedule_stop(self, aVoiceHandle, aTime):
		Soloud_scheduleStop(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_double(aTime))
	def oscillate_volume(self, aVoiceHandle, aFrom, aTo, aTime):
		Soloud_oscillateVolume(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aFrom), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def oscillate_pan(self, aVoiceHandle, aFrom, aTo, aTime):
		Soloud_oscillatePan(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aFrom), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def oscillate_relative_play_speed(self, aVoiceHandle, aFrom, aTo, aTime):
		Soloud_oscillateRelativePlaySpeed(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aFrom), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def oscillate_global_volume(self, aFrom, aTo, aTime):
		Soloud_oscillateGlobalVolume(self.objhandle, ctypes.c_float(aFrom), ctypes.c_float(aTo), ctypes.c_double(aTime))
	def set_global_filter(self, aFilterId, aFilter):
		Soloud_setGlobalFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def set_visualization_enable(self, aEnable):
		Soloud_setVisualizationEnable(self.objhandle, ctypes.c_int(aEnable))
	def calc_fft(self):
		floatbuf = Soloud_calcFFT(self.objhandle)
		return [f for f in floatbuf.contents]
	def get_wave(self):
		floatbuf = Soloud_getWave(self.objhandle)
		return [f for f in floatbuf.contents]
	def get_approximate_volume(self, aChannel):
		return Soloud_getApproximateVolume(self.objhandle, ctypes.c_uint(aChannel))
	def get_loop_count(self, aVoiceHandle):
		return Soloud_getLoopCount(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def get_info(self, aVoiceHandle, aInfoKey):
		return Soloud_getInfo(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aInfoKey))
	def create_voice_group(self):
		return Soloud_createVoiceGroup(self.objhandle)
	def destroy_voice_group(self, aVoiceGroupHandle):
		return Soloud_destroyVoiceGroup(self.objhandle, ctypes.c_uint(aVoiceGroupHandle))
	def add_voice_to_group(self, aVoiceGroupHandle, aVoiceHandle):
		return Soloud_addVoiceToGroup(self.objhandle, ctypes.c_uint(aVoiceGroupHandle), ctypes.c_uint(aVoiceHandle))
	def is_voice_group(self, aVoiceGroupHandle):
		return Soloud_isVoiceGroup(self.objhandle, ctypes.c_uint(aVoiceGroupHandle))
	def is_voice_group_empty(self, aVoiceGroupHandle):
		return Soloud_isVoiceGroupEmpty(self.objhandle, ctypes.c_uint(aVoiceGroupHandle))
	def update_3d_audio(self):
		Soloud_update3dAudio(self.objhandle)
	def set_3d_sound_speed(self, aSpeed):
		return Soloud_set3dSoundSpeed(self.objhandle, ctypes.c_float(aSpeed))
	def get_3d_sound_speed(self):
		return Soloud_get3dSoundSpeed(self.objhandle)
	def set_3d_listener_parameters(self, aPosX, aPosY, aPosZ, aAtX, aAtY, aAtZ, aUpX, aUpY, aUpZ, aVelocityX = 0.0, aVelocityY = 0.0, aVelocityZ = 0.0):
		Soloud_set3dListenerParametersEx(self.objhandle, ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ), ctypes.c_float(aAtX), ctypes.c_float(aAtY), ctypes.c_float(aAtZ), ctypes.c_float(aUpX), ctypes.c_float(aUpY), ctypes.c_float(aUpZ), ctypes.c_float(aVelocityX), ctypes.c_float(aVelocityY), ctypes.c_float(aVelocityZ))
	def set_3d_listener_position(self, aPosX, aPosY, aPosZ):
		Soloud_set3dListenerPosition(self.objhandle, ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ))
	def set_3d_listener_at(self, aAtX, aAtY, aAtZ):
		Soloud_set3dListenerAt(self.objhandle, ctypes.c_float(aAtX), ctypes.c_float(aAtY), ctypes.c_float(aAtZ))
	def set_3d_listener_up(self, aUpX, aUpY, aUpZ):
		Soloud_set3dListenerUp(self.objhandle, ctypes.c_float(aUpX), ctypes.c_float(aUpY), ctypes.c_float(aUpZ))
	def set_3d_listener_velocity(self, aVelocityX, aVelocityY, aVelocityZ):
		Soloud_set3dListenerVelocity(self.objhandle, ctypes.c_float(aVelocityX), ctypes.c_float(aVelocityY), ctypes.c_float(aVelocityZ))
	def set_3d_source_parameters(self, aVoiceHandle, aPosX, aPosY, aPosZ, aVelocityX = 0.0, aVelocityY = 0.0, aVelocityZ = 0.0):
		Soloud_set3dSourceParametersEx(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ), ctypes.c_float(aVelocityX), ctypes.c_float(aVelocityY), ctypes.c_float(aVelocityZ))
	def set_3d_source_position(self, aVoiceHandle, aPosX, aPosY, aPosZ):
		Soloud_set3dSourcePosition(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ))
	def set_3d_source_velocity(self, aVoiceHandle, aVelocityX, aVelocityY, aVelocityZ):
		Soloud_set3dSourceVelocity(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aVelocityX), ctypes.c_float(aVelocityY), ctypes.c_float(aVelocityZ))
	def set_3d_source_min_max_distance(self, aVoiceHandle, aMinDistance, aMaxDistance):
		Soloud_set3dSourceMinMaxDistance(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_source_attenuation(self, aVoiceHandle, aAttenuationModel, aAttenuationRolloffFactor):
		Soloud_set3dSourceAttenuation(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_source_doppler_factor(self, aVoiceHandle, aDopplerFactor):
		Soloud_set3dSourceDopplerFactor(self.objhandle, ctypes.c_uint(aVoiceHandle), ctypes.c_float(aDopplerFactor))
	def mix(self, aBuffer, aSamples):
		Soloud_mix(self.objhandle, ctypes.POINTER(ctypes.c_float * 256)(aBuffer), ctypes.c_uint(aSamples))
	def mix_signed16(self, aBuffer, aSamples):
		Soloud_mixSigned16(self.objhandle, ctypes.POINTER(ctypes.c_short)(aBuffer), ctypes.c_uint(aSamples))

class BassboostFilter(object):
	WET = 0
	BOOST = 1
	def __init__(self):
		self.objhandle = BassboostFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		BassboostFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		BassboostFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		BassboostFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		BassboostFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return BassboostFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return BassboostFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return BassboostFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return BassboostFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return BassboostFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aBoost):
		return BassboostFilter_setParams(self.objhandle, ctypes.c_float(aBoost))

class BiquadResonantFilter(object):
	LOWPASS = 0
	HIGHPASS = 1
	BANDPASS = 2
	WET = 0
	TYPE = 1
	FREQUENCY = 2
	RESONANCE = 3
	def __init__(self):
		self.objhandle = BiquadResonantFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		BiquadResonantFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		BiquadResonantFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		BiquadResonantFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		BiquadResonantFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return BiquadResonantFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return BiquadResonantFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return BiquadResonantFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return BiquadResonantFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return BiquadResonantFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aType, aFrequency, aResonance):
		return BiquadResonantFilter_setParams(self.objhandle, ctypes.c_int(aType), ctypes.c_float(aFrequency), ctypes.c_float(aResonance))

class Bus(object):
	def __init__(self):
		self.objhandle = Bus_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Bus_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Bus_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Bus_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Bus_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_filter(self, aFilterId, aFilter):
		Bus_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def play(self, aSound, aVolume = 1.0, aPan = 0.0, aPaused = 0):
		return Bus_playEx(self.objhandle, aSound.objhandle, ctypes.c_float(aVolume), ctypes.c_float(aPan), ctypes.c_int(aPaused))
	def play_clocked(self, aSoundTime, aSound, aVolume = 1.0, aPan = 0.0):
		return Bus_playClockedEx(self.objhandle, ctypes.c_double(aSoundTime), aSound.objhandle, ctypes.c_float(aVolume), ctypes.c_float(aPan))
	def play_3d(self, aSound, aPosX, aPosY, aPosZ, aVelX = 0.0, aVelY = 0.0, aVelZ = 0.0, aVolume = 1.0, aPaused = 0):
		return Bus_play3dEx(self.objhandle, aSound.objhandle, ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ), ctypes.c_float(aVelX), ctypes.c_float(aVelY), ctypes.c_float(aVelZ), ctypes.c_float(aVolume), ctypes.c_int(aPaused))
	def play_3d_clocked(self, aSoundTime, aSound, aPosX, aPosY, aPosZ, aVelX = 0.0, aVelY = 0.0, aVelZ = 0.0, aVolume = 1.0):
		return Bus_play3dClockedEx(self.objhandle, ctypes.c_double(aSoundTime), aSound.objhandle, ctypes.c_float(aPosX), ctypes.c_float(aPosY), ctypes.c_float(aPosZ), ctypes.c_float(aVelX), ctypes.c_float(aVelY), ctypes.c_float(aVelZ), ctypes.c_float(aVolume))
	def set_channels(self, aChannels):
		return Bus_setChannels(self.objhandle, ctypes.c_uint(aChannels))
	def set_visualization_enable(self, aEnable):
		Bus_setVisualizationEnable(self.objhandle, ctypes.c_int(aEnable))
	def annex_sound(self, aVoiceHandle):
		Bus_annexSound(self.objhandle, ctypes.c_uint(aVoiceHandle))
	def calc_fft(self):
		floatbuf = Bus_calcFFT(self.objhandle)
		return [f for f in floatbuf.contents]
	def get_wave(self):
		floatbuf = Bus_getWave(self.objhandle)
		return [f for f in floatbuf.contents]
	def get_approximate_volume(self, aChannel):
		return Bus_getApproximateVolume(self.objhandle, ctypes.c_uint(aChannel))
	def get_active_voice_count(self):
		return Bus_getActiveVoiceCount(self.objhandle)
	def set_volume(self, aVolume):
		Bus_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Bus_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Bus_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Bus_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Bus_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Bus_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Bus_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Bus_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Bus_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Bus_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Bus_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Bus_getLoopPoint(self.objhandle)
	def stop(self):
		Bus_stop(self.objhandle)

class DCRemovalFilter(object):
	def __init__(self):
		self.objhandle = DCRemovalFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		DCRemovalFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		DCRemovalFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		DCRemovalFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		DCRemovalFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_params(self, aLength = 0.1):
		return DCRemovalFilter_setParamsEx(self.objhandle, ctypes.c_float(aLength))
	def get_param_count(self):
		return DCRemovalFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return DCRemovalFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return DCRemovalFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return DCRemovalFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return DCRemovalFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))

class EchoFilter(object):
	WET = 0
	DELAY = 1
	DECAY = 2
	FILTER = 3
	def __init__(self):
		self.objhandle = EchoFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		EchoFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		EchoFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		EchoFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		EchoFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return EchoFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return EchoFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return EchoFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return EchoFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return EchoFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aDelay, aDecay = 0.7, aFilter = 0.0):
		return EchoFilter_setParamsEx(self.objhandle, ctypes.c_float(aDelay), ctypes.c_float(aDecay), ctypes.c_float(aFilter))

class FFTFilter(object):
	def __init__(self):
		self.objhandle = FFTFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		FFTFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		FFTFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		FFTFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		FFTFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return FFTFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return FFTFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return FFTFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return FFTFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return FFTFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))

class FlangerFilter(object):
	WET = 0
	DELAY = 1
	FREQ = 2
	def __init__(self):
		self.objhandle = FlangerFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		FlangerFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		FlangerFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		FlangerFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		FlangerFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return FlangerFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return FlangerFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return FlangerFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return FlangerFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return FlangerFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aDelay, aFreq):
		return FlangerFilter_setParams(self.objhandle, ctypes.c_float(aDelay), ctypes.c_float(aFreq))

class FreeverbFilter(object):
	WET = 0
	FREEZE = 1
	ROOMSIZE = 2
	DAMP = 3
	WIDTH = 4
	def __init__(self):
		self.objhandle = FreeverbFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		FreeverbFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		FreeverbFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		FreeverbFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		FreeverbFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return FreeverbFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return FreeverbFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return FreeverbFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return FreeverbFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return FreeverbFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aMode, aRoomSize, aDamp, aWidth):
		return FreeverbFilter_setParams(self.objhandle, ctypes.c_float(aMode), ctypes.c_float(aRoomSize), ctypes.c_float(aDamp), ctypes.c_float(aWidth))

class LofiFilter(object):
	WET = 0
	SAMPLERATE = 1
	BITDEPTH = 2
	def __init__(self):
		self.objhandle = LofiFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		LofiFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		LofiFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		LofiFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		LofiFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return LofiFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return LofiFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return LofiFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return LofiFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return LofiFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aSampleRate, aBitdepth):
		return LofiFilter_setParams(self.objhandle, ctypes.c_float(aSampleRate), ctypes.c_float(aBitdepth))

class Monotone(object):
	def __init__(self):
		self.objhandle = Monotone_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Monotone_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Monotone_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Monotone_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Monotone_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_params(self, aHardwareChannels, aWaveform = SoLoud::Misc::WAVE_SQUARE):
		return Monotone_setParamsEx(self.objhandle, ctypes.c_int(aHardwareChannels), ctypes.c_int(aWaveform))
	def load(self, aFilename):
		return Monotone_load(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_mem(self, aMem, aLength, aCopy = False, aTakeOwnership = True):
		return Monotone_loadMemEx(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aMem), ctypes.c_uint(aLength), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def load_file(self, aFile):
		return Monotone_loadFile(self.objhandle, aFile.objhandle)
	def set_volume(self, aVolume):
		Monotone_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Monotone_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Monotone_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Monotone_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Monotone_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Monotone_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Monotone_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Monotone_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Monotone_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Monotone_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Monotone_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Monotone_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Monotone_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Monotone_stop(self.objhandle)

class Noise(object):
	WHITE = 0
	PINK = 1
	BROWNISH = 2
	BLUEISH = 3
	def __init__(self):
		self.objhandle = Noise_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Noise_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Noise_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Noise_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Noise_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_octave_scale(self, aOct0, aOct1, aOct2, aOct3, aOct4, aOct5, aOct6, aOct7, aOct8, aOct9):
		Noise_setOctaveScale(self.objhandle, ctypes.c_float(aOct0), ctypes.c_float(aOct1), ctypes.c_float(aOct2), ctypes.c_float(aOct3), ctypes.c_float(aOct4), ctypes.c_float(aOct5), ctypes.c_float(aOct6), ctypes.c_float(aOct7), ctypes.c_float(aOct8), ctypes.c_float(aOct9))
	def set_type(self, aType):
		Noise_setType(self.objhandle, ctypes.c_int(aType))
	def set_volume(self, aVolume):
		Noise_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Noise_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Noise_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Noise_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Noise_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Noise_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Noise_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Noise_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Noise_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Noise_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Noise_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Noise_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Noise_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Noise_stop(self.objhandle)

class Openmpt(object):
	def __init__(self):
		self.objhandle = Openmpt_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Openmpt_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Openmpt_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Openmpt_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Openmpt_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def load(self, aFilename):
		return Openmpt_load(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_mem(self, aMem, aLength, aCopy = False, aTakeOwnership = True):
		return Openmpt_loadMemEx(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aMem), ctypes.c_uint(aLength), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def load_file(self, aFile):
		return Openmpt_loadFile(self.objhandle, aFile.objhandle)
	def set_volume(self, aVolume):
		Openmpt_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Openmpt_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Openmpt_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Openmpt_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Openmpt_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Openmpt_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Openmpt_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Openmpt_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Openmpt_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Openmpt_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Openmpt_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Openmpt_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Openmpt_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Openmpt_stop(self.objhandle)

class Queue(object):
	def __init__(self):
		self.objhandle = Queue_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Queue_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Queue_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Queue_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Queue_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def play(self, aSound):
		return Queue_play(self.objhandle, aSound.objhandle)
	def get_queue_count(self):
		return Queue_getQueueCount(self.objhandle)
	def is_currently_playing(self, aSound):
		return Queue_isCurrentlyPlaying(self.objhandle, aSound.objhandle)
	def set_params_from_audio_source(self, aSound):
		return Queue_setParamsFromAudioSource(self.objhandle, aSound.objhandle)
	def set_params(self, aSamplerate, aChannels = 2):
		return Queue_setParamsEx(self.objhandle, ctypes.c_float(aSamplerate), ctypes.c_uint(aChannels))
	def set_volume(self, aVolume):
		Queue_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Queue_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Queue_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Queue_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Queue_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Queue_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Queue_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Queue_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Queue_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Queue_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Queue_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Queue_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Queue_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Queue_stop(self.objhandle)

class RobotizeFilter(object):
	WET = 0
	FREQ = 1
	WAVE = 2
	def __init__(self):
		self.objhandle = RobotizeFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		RobotizeFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		RobotizeFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		RobotizeFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		RobotizeFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def get_param_count(self):
		return RobotizeFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return RobotizeFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return RobotizeFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return RobotizeFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return RobotizeFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))
	def set_params(self, aFreq, aWaveform):
		RobotizeFilter_setParams(self.objhandle, ctypes.c_float(aFreq), ctypes.c_int(aWaveform))

class Sfxr(object):
	COIN = 0
	LASER = 1
	EXPLOSION = 2
	POWERUP = 3
	HURT = 4
	JUMP = 5
	BLIP = 6
	def __init__(self):
		self.objhandle = Sfxr_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Sfxr_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Sfxr_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Sfxr_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Sfxr_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def reset_params(self):
		Sfxr_resetParams(self.objhandle)
	def load_params(self, aFilename):
		return Sfxr_loadParams(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_params_mem(self, aMem, aLength, aCopy = False, aTakeOwnership = True):
		return Sfxr_loadParamsMemEx(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aMem), ctypes.c_uint(aLength), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def load_params_file(self, aFile):
		return Sfxr_loadParamsFile(self.objhandle, aFile.objhandle)
	def load_preset(self, aPresetNo, aRandSeed):
		return Sfxr_loadPreset(self.objhandle, ctypes.c_int(aPresetNo), ctypes.c_int(aRandSeed))
	def set_volume(self, aVolume):
		Sfxr_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Sfxr_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Sfxr_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Sfxr_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Sfxr_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Sfxr_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Sfxr_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Sfxr_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Sfxr_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Sfxr_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Sfxr_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Sfxr_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Sfxr_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Sfxr_stop(self.objhandle)

class Speech(object):
	KW_SAW = 0
	KW_TRIANGLE = 1
	KW_SIN = 2
	KW_SQUARE = 3
	KW_PULSE = 4
	KW_NOISE = 5
	KW_WARBLE = 6
	def __init__(self):
		self.objhandle = Speech_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Speech_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Speech_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Speech_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Speech_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_text(self, aText):
		return Speech_setText(self.objhandle, ctypes.c_char_p(aText.encode('utf-8')))
	def set_params(self, aBaseFrequency = 1330, aBaseSpeed = 10.0, aBaseDeclination = 0.5, aBaseWaveform = KW_TRIANGLE):
		return Speech_setParamsEx(self.objhandle, ctypes.c_uint(aBaseFrequency), ctypes.c_float(aBaseSpeed), ctypes.c_float(aBaseDeclination), ctypes.c_int(aBaseWaveform))
	def set_volume(self, aVolume):
		Speech_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Speech_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Speech_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Speech_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Speech_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Speech_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Speech_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Speech_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Speech_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Speech_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Speech_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Speech_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Speech_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Speech_stop(self.objhandle)

class TedSid(object):
	def __init__(self):
		self.objhandle = TedSid_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		TedSid_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		TedSid_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		TedSid_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		TedSid_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def load(self, aFilename):
		return TedSid_load(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_to_mem(self, aFilename):
		return TedSid_loadToMem(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_mem(self, aMem, aLength, aCopy = False, aTakeOwnership = True):
		return TedSid_loadMemEx(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aMem), ctypes.c_uint(aLength), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def load_file_to_mem(self, aFile):
		return TedSid_loadFileToMem(self.objhandle, aFile.objhandle)
	def load_file(self, aFile):
		return TedSid_loadFile(self.objhandle, aFile.objhandle)
	def set_volume(self, aVolume):
		TedSid_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		TedSid_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		TedSid_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		TedSid_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		TedSid_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		TedSid_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		TedSid_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		TedSid_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		TedSid_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		TedSid_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		TedSid_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return TedSid_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		TedSid_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		TedSid_stop(self.objhandle)

class Vic(object):
	PAL = 0
	NTSC = 1
	BASS = 0
	ALTO = 1
	SOPRANO = 2
	NOISE = 3
	MAX_REGS = 4
	def __init__(self):
		self.objhandle = Vic_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Vic_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Vic_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Vic_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Vic_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_model(self, model):
		Vic_setModel(self.objhandle, ctypes.c_int(model))
	def get_model(self):
		return Vic_getModel(self.objhandle)
	def set_register(self, reg, value):
		Vic_setRegister(self.objhandle, ctypes.c_int(reg), ctypes.c_ubyte(value))
	def get_register(self, reg):
		return Vic_getRegister(self.objhandle, ctypes.c_int(reg))
	def set_volume(self, aVolume):
		Vic_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Vic_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Vic_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Vic_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Vic_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Vic_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Vic_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Vic_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Vic_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Vic_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Vic_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Vic_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Vic_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Vic_stop(self.objhandle)

class Vizsn(object):
	def __init__(self):
		self.objhandle = Vizsn_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Vizsn_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Vizsn_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Vizsn_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Vizsn_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_text(self, aText):
		Vizsn_setText(self.objhandle, ctypes.c_char_p(aText.encode('utf-8')))
	def set_volume(self, aVolume):
		Vizsn_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Vizsn_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Vizsn_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Vizsn_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Vizsn_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Vizsn_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Vizsn_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Vizsn_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Vizsn_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Vizsn_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Vizsn_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Vizsn_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Vizsn_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Vizsn_stop(self.objhandle)

class Wav(object):
	def __init__(self):
		self.objhandle = Wav_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		Wav_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		Wav_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		Wav_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		Wav_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def load(self, aFilename):
		return Wav_load(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_mem(self, aMem, aLength, aCopy = False, aTakeOwnership = True):
		return Wav_loadMemEx(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aMem), ctypes.c_uint(aLength), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def load_file(self, aFile):
		return Wav_loadFile(self.objhandle, aFile.objhandle)
	def load_raw_wave8(self, aMem, aLength, aSamplerate = 44100.0, aChannels = 1):
		return Wav_loadRawWave8Ex(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aMem), ctypes.c_uint(aLength), ctypes.c_float(aSamplerate), ctypes.c_uint(aChannels))
	def load_raw_wave16(self, aMem, aLength, aSamplerate = 44100.0, aChannels = 1):
		return Wav_loadRawWave16Ex(self.objhandle, ctypes.POINTER(ctypes.c_short)(aMem), ctypes.c_uint(aLength), ctypes.c_float(aSamplerate), ctypes.c_uint(aChannels))
	def load_raw_wave(self, aMem, aLength, aSamplerate = 44100.0, aChannels = 1, aCopy = False, aTakeOwnership = True):
		return Wav_loadRawWaveEx(self.objhandle, ctypes.POINTER(ctypes.c_float * 256)(aMem), ctypes.c_uint(aLength), ctypes.c_float(aSamplerate), ctypes.c_uint(aChannels), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def get_length(self):
		return Wav_getLength(self.objhandle)
	def set_volume(self, aVolume):
		Wav_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		Wav_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		Wav_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		Wav_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		Wav_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		Wav_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		Wav_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		Wav_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		Wav_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		Wav_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		Wav_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return Wav_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		Wav_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		Wav_stop(self.objhandle)

class WaveShaperFilter(object):
	WET = 0
	AMOUNT = 1
	def __init__(self):
		self.objhandle = WaveShaperFilter_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		WaveShaperFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		WaveShaperFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		WaveShaperFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		WaveShaperFilter_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def set_params(self, aAmount):
		return WaveShaperFilter_setParams(self.objhandle, ctypes.c_float(aAmount))
	def get_param_count(self):
		return WaveShaperFilter_getParamCount(self.objhandle)
	def get_param_name(self, aParamIndex):
		return WaveShaperFilter_getParamName(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_type(self, aParamIndex):
		return WaveShaperFilter_getParamType(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_max(self, aParamIndex):
		return WaveShaperFilter_getParamMax(self.objhandle, ctypes.c_uint(aParamIndex))
	def get_param_min(self, aParamIndex):
		return WaveShaperFilter_getParamMin(self.objhandle, ctypes.c_uint(aParamIndex))

class WavStream(object):
	def __init__(self):
		self.objhandle = WavStream_create()
	def __enter__(self):
		return self
	def __exit__(self, eType, eValue, eTrace):
		WavStream_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
		return False
	def close(self):
		WavStream_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def destroy(self):
		WavStream_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def quit(self):
		WavStream_destroy(self.objhandle)
		self.objhandle = ctypes.c_void_p(0)
	def load(self, aFilename):
		return WavStream_load(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_mem(self, aData, aDataLen, aCopy = False, aTakeOwnership = True):
		return WavStream_loadMemEx(self.objhandle, ctypes.POINTER(ctypes.c_ubyte)(aData), ctypes.c_uint(aDataLen), ctypes.c_int(aCopy), ctypes.c_int(aTakeOwnership))
	def load_to_mem(self, aFilename):
		return WavStream_loadToMem(self.objhandle, ctypes.c_char_p(aFilename.encode('utf-8')))
	def load_file(self, aFile):
		return WavStream_loadFile(self.objhandle, aFile.objhandle)
	def load_file_to_mem(self, aFile):
		return WavStream_loadFileToMem(self.objhandle, aFile.objhandle)
	def get_length(self):
		return WavStream_getLength(self.objhandle)
	def set_volume(self, aVolume):
		WavStream_setVolume(self.objhandle, ctypes.c_float(aVolume))
	def set_looping(self, aLoop):
		WavStream_setLooping(self.objhandle, ctypes.c_int(aLoop))
	def set_3d_min_max_distance(self, aMinDistance, aMaxDistance):
		WavStream_set3dMinMaxDistance(self.objhandle, ctypes.c_float(aMinDistance), ctypes.c_float(aMaxDistance))
	def set_3d_attenuation(self, aAttenuationModel, aAttenuationRolloffFactor):
		WavStream_set3dAttenuation(self.objhandle, ctypes.c_uint(aAttenuationModel), ctypes.c_float(aAttenuationRolloffFactor))
	def set_3d_doppler_factor(self, aDopplerFactor):
		WavStream_set3dDopplerFactor(self.objhandle, ctypes.c_float(aDopplerFactor))
	def set_3d_listener_relative(self, aListenerRelative):
		WavStream_set3dListenerRelative(self.objhandle, ctypes.c_int(aListenerRelative))
	def set_3d_distance_delay(self, aDistanceDelay):
		WavStream_set3dDistanceDelay(self.objhandle, ctypes.c_int(aDistanceDelay))
	def set_3d_collider(self, aCollider, aUserData = 0):
		WavStream_set3dColliderEx(self.objhandle, aCollider.objhandle, ctypes.c_int(aUserData))
	def set_3d_attenuator(self, aAttenuator):
		WavStream_set3dAttenuator(self.objhandle, aAttenuator.objhandle)
	def set_inaudible_behavior(self, aMustTick, aKill):
		WavStream_setInaudibleBehavior(self.objhandle, ctypes.c_int(aMustTick), ctypes.c_int(aKill))
	def set_loop_point(self, aLoopPoint):
		WavStream_setLoopPoint(self.objhandle, ctypes.c_double(aLoopPoint))
	def get_loop_point(self):
		return WavStream_getLoopPoint(self.objhandle)
	def set_filter(self, aFilterId, aFilter):
		WavStream_setFilter(self.objhandle, ctypes.c_uint(aFilterId), aFilter.objhandle)
	def stop(self):
		WavStream_stop(self.objhandle)
