mirror of
https://github.com/onyx-and-iris/voicemeeter-api-python.git
synced 2024-11-22 19:10:47 +00:00
9d446ea17d
midi example added. minor version bump
110 lines
3.4 KiB
Python
110 lines
3.4 KiB
Python
import ctypes as ct
|
|
from abc import ABCMeta
|
|
from ctypes.wintypes import CHAR, FLOAT, LONG, WCHAR
|
|
|
|
from .error import CAPIError
|
|
from .inst import libc
|
|
|
|
|
|
class CBindings(metaclass=ABCMeta):
|
|
"""
|
|
C bindings defined here.
|
|
|
|
Maps expected ctype argument and res types for each binding.
|
|
"""
|
|
|
|
vm_login = libc.VBVMR_Login
|
|
vm_login.restype = LONG
|
|
vm_login.argtypes = None
|
|
|
|
vm_logout = libc.VBVMR_Logout
|
|
vm_logout.restype = LONG
|
|
vm_logout.argtypes = None
|
|
|
|
vm_runvm = libc.VBVMR_RunVoicemeeter
|
|
vm_runvm.restype = LONG
|
|
vm_runvm.argtypes = [LONG]
|
|
|
|
vm_get_type = libc.VBVMR_GetVoicemeeterType
|
|
vm_get_type.restype = LONG
|
|
vm_get_type.argtypes = [ct.POINTER(LONG)]
|
|
|
|
vm_get_version = libc.VBVMR_GetVoicemeeterVersion
|
|
vm_get_version.restype = LONG
|
|
vm_get_version.argtypes = [ct.POINTER(LONG)]
|
|
|
|
vm_mdirty = libc.VBVMR_MacroButton_IsDirty
|
|
vm_mdirty.restype = LONG
|
|
vm_mdirty.argtypes = None
|
|
|
|
vm_get_buttonstatus = libc.VBVMR_MacroButton_GetStatus
|
|
vm_get_buttonstatus.restype = LONG
|
|
vm_get_buttonstatus.argtypes = [LONG, ct.POINTER(FLOAT), LONG]
|
|
|
|
vm_set_buttonstatus = libc.VBVMR_MacroButton_SetStatus
|
|
vm_set_buttonstatus.restype = LONG
|
|
vm_set_buttonstatus.argtypes = [LONG, FLOAT, LONG]
|
|
|
|
vm_pdirty = libc.VBVMR_IsParametersDirty
|
|
vm_pdirty.restype = LONG
|
|
vm_pdirty.argtypes = None
|
|
|
|
vm_get_parameter_float = libc.VBVMR_GetParameterFloat
|
|
vm_get_parameter_float.restype = LONG
|
|
vm_get_parameter_float.argtypes = [ct.POINTER(CHAR), ct.POINTER(FLOAT)]
|
|
|
|
vm_set_parameter_float = libc.VBVMR_SetParameterFloat
|
|
vm_set_parameter_float.restype = LONG
|
|
vm_set_parameter_float.argtypes = [ct.POINTER(CHAR), FLOAT]
|
|
|
|
vm_get_parameter_string = libc.VBVMR_GetParameterStringW
|
|
vm_get_parameter_string.restype = LONG
|
|
vm_get_parameter_string.argtypes = [ct.POINTER(CHAR), ct.POINTER(WCHAR * 512)]
|
|
|
|
vm_set_parameter_string = libc.VBVMR_SetParameterStringW
|
|
vm_set_parameter_string.restype = LONG
|
|
vm_set_parameter_string.argtypes = [ct.POINTER(CHAR), ct.POINTER(WCHAR)]
|
|
|
|
vm_set_parameter_multi = libc.VBVMR_SetParameters
|
|
vm_set_parameter_multi.restype = LONG
|
|
vm_set_parameter_multi.argtypes = [ct.POINTER(CHAR)]
|
|
|
|
vm_get_level = libc.VBVMR_GetLevel
|
|
vm_get_level.restype = LONG
|
|
vm_get_level.argtypes = [LONG, LONG, ct.POINTER(FLOAT)]
|
|
|
|
vm_get_num_indevices = libc.VBVMR_Input_GetDeviceNumber
|
|
vm_get_num_indevices.restype = LONG
|
|
vm_get_num_indevices.argtypes = None
|
|
|
|
vm_get_desc_indevices = libc.VBVMR_Input_GetDeviceDescW
|
|
vm_get_desc_indevices.restype = LONG
|
|
vm_get_desc_indevices.argtypes = [
|
|
LONG,
|
|
ct.POINTER(LONG),
|
|
ct.POINTER(WCHAR * 256),
|
|
ct.POINTER(WCHAR * 256),
|
|
]
|
|
|
|
vm_get_num_outdevices = libc.VBVMR_Output_GetDeviceNumber
|
|
vm_get_num_outdevices.restype = LONG
|
|
vm_get_num_outdevices.argtypes = None
|
|
|
|
vm_get_desc_outdevices = libc.VBVMR_Output_GetDeviceDescW
|
|
vm_get_desc_outdevices.restype = LONG
|
|
vm_get_desc_outdevices.argtypes = [
|
|
LONG,
|
|
ct.POINTER(LONG),
|
|
ct.POINTER(WCHAR * 256),
|
|
ct.POINTER(WCHAR * 256),
|
|
]
|
|
|
|
vm_get_midi_message = libc.VBVMR_GetMidiMessage
|
|
vm_get_midi_message.restype = LONG
|
|
vm_get_midi_message.argtypes = [ct.POINTER(CHAR * 1024), LONG]
|
|
|
|
def call(self, func):
|
|
res = func()
|
|
if res != 0:
|
|
raise CAPIError(f"Function {func.func.__name__} returned {res}")
|