1#![allow(non_upper_case_globals)]
4#![allow(non_camel_case_types)]
5#![allow(unsafe_op_in_unsafe_fn)]
6#![allow(deref_nullptr)]
7#![allow(clippy::missing_safety_doc)]
8#![allow(non_snake_case)]
9
10pub const VBVMR_RESULT_OK: u32 = 0;
11pub const expected_size_T_VBAN_VMRT_PACKET: u32 = 1384;
12impl VBVMR_DEVTYPE {
13 pub const MME: VBVMR_DEVTYPE = VBVMR_DEVTYPE(1);
14 pub const WDM: VBVMR_DEVTYPE = VBVMR_DEVTYPE(3);
15 pub const KS: VBVMR_DEVTYPE = VBVMR_DEVTYPE(4);
16 pub const ASIO: VBVMR_DEVTYPE = VBVMR_DEVTYPE(5);
17}
18#[repr(transparent)]
19#[doc = " @name Device Enumeration Functions\n @{"]
20#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
21pub struct VBVMR_DEVTYPE(pub ::std::os::raw::c_int);
22#[doc = " @name VB-Audio Callback Functions\n @{"]
23#[repr(C)]
24#[derive(Debug, Copy, Clone)]
25pub struct tagVBVMR_AUDIOINFO {
26 pub samplerate: ::std::os::raw::c_long,
27 pub nbSamplePerFrame: ::std::os::raw::c_long,
28}
29#[allow(clippy::unnecessary_operation, clippy::identity_op)]
30const _: () = {
31 ["Size of tagVBVMR_AUDIOINFO"][::std::mem::size_of::<tagVBVMR_AUDIOINFO>() - 8usize];
32 ["Alignment of tagVBVMR_AUDIOINFO"][::std::mem::align_of::<tagVBVMR_AUDIOINFO>() - 4usize];
33 ["Offset of field: tagVBVMR_AUDIOINFO::samplerate"]
34 [::std::mem::offset_of!(tagVBVMR_AUDIOINFO, samplerate) - 0usize];
35 ["Offset of field: tagVBVMR_AUDIOINFO::nbSamplePerFrame"]
36 [::std::mem::offset_of!(tagVBVMR_AUDIOINFO, nbSamplePerFrame) - 4usize];
37};
38#[doc = " @name VB-Audio Callback Functions\n @{"]
39pub type VBVMR_T_AUDIOINFO = tagVBVMR_AUDIOINFO;
40#[doc = " @name VB-Audio Callback Functions\n @{"]
41pub type VBVMR_PT_AUDIOINFO = *mut tagVBVMR_AUDIOINFO;
42#[doc = " @name VB-Audio Callback Functions\n @{"]
43pub type VBVMR_LPT_AUDIOINFO = *mut tagVBVMR_AUDIOINFO;
44#[repr(C)]
45#[derive(Debug, Copy, Clone)]
46pub struct tagVBVMR_AUDIOBUFFER {
47 pub audiobuffer_sr: ::std::os::raw::c_long,
48 pub audiobuffer_nbs: ::std::os::raw::c_long,
49 pub audiobuffer_nbi: ::std::os::raw::c_long,
50 pub audiobuffer_nbo: ::std::os::raw::c_long,
51 pub audiobuffer_r: [*mut f32; 128usize],
52 pub audiobuffer_w: [*mut f32; 128usize],
53}
54#[allow(clippy::unnecessary_operation, clippy::identity_op)]
55const _: () = {
56 ["Size of tagVBVMR_AUDIOBUFFER"][::std::mem::size_of::<tagVBVMR_AUDIOBUFFER>() - 2064usize];
57 ["Alignment of tagVBVMR_AUDIOBUFFER"][::std::mem::align_of::<tagVBVMR_AUDIOBUFFER>() - 8usize];
58 ["Offset of field: tagVBVMR_AUDIOBUFFER::audiobuffer_sr"]
59 [::std::mem::offset_of!(tagVBVMR_AUDIOBUFFER, audiobuffer_sr) - 0usize];
60 ["Offset of field: tagVBVMR_AUDIOBUFFER::audiobuffer_nbs"]
61 [::std::mem::offset_of!(tagVBVMR_AUDIOBUFFER, audiobuffer_nbs) - 4usize];
62 ["Offset of field: tagVBVMR_AUDIOBUFFER::audiobuffer_nbi"]
63 [::std::mem::offset_of!(tagVBVMR_AUDIOBUFFER, audiobuffer_nbi) - 8usize];
64 ["Offset of field: tagVBVMR_AUDIOBUFFER::audiobuffer_nbo"]
65 [::std::mem::offset_of!(tagVBVMR_AUDIOBUFFER, audiobuffer_nbo) - 12usize];
66 ["Offset of field: tagVBVMR_AUDIOBUFFER::audiobuffer_r"]
67 [::std::mem::offset_of!(tagVBVMR_AUDIOBUFFER, audiobuffer_r) - 16usize];
68 ["Offset of field: tagVBVMR_AUDIOBUFFER::audiobuffer_w"]
69 [::std::mem::offset_of!(tagVBVMR_AUDIOBUFFER, audiobuffer_w) - 1040usize];
70};
71pub type VBVMR_T_AUDIOBUFFER = tagVBVMR_AUDIOBUFFER;
72pub type VBVMR_PT_AUDIOBUFFER = *mut tagVBVMR_AUDIOBUFFER;
73pub type VBVMR_LPT_AUDIOBUFFER = *mut tagVBVMR_AUDIOBUFFER;
74#[doc = "@brief VB-AUDIO Callback is called for different task to Initialize, perform and end your process.\nVB-AUDIO Callback is part of single TIME CRITICAL Thread.\nVB-AUDIO Callback is non re-entrant (cannot be called while in process)\nVB-AUDIO Callback is supposed to be REAL TIME when called to process buffer.\n(it means that the process has to be performed as fast as possible, waiting cycles are forbidden.\ndo not use O/S synchronization object, even Critical_Section can generate waiting cycle. Do not use\nsystem functions that can generate waiting cycle like display, disk or communication functions for example).\n\n@param lpUser: User pointer given on callback registration.\n@param ncommand: reason why the callback is called.\n@param lpData: pointer on structure, pending on nCommand.\n@param nnn: additional data, unused\n\n@return :\t 0: always 0 (unused)."]
75pub type T_VBVMR_VBAUDIOCALLBACK = ::std::option::Option<
76 unsafe extern "C" fn(
77 lpUser: *mut ::std::os::raw::c_void,
78 nCommand: ::std::os::raw::c_long,
79 lpData: *mut ::std::os::raw::c_void,
80 nnn: ::std::os::raw::c_long,
81 ) -> ::std::os::raw::c_long,
82>;
83impl VBVMR_CBCOMMAND {
84 pub const STARTING: VBVMR_CBCOMMAND = VBVMR_CBCOMMAND(1);
85 pub const ENDING: VBVMR_CBCOMMAND = VBVMR_CBCOMMAND(2);
86 pub const CHANGE: VBVMR_CBCOMMAND = VBVMR_CBCOMMAND(3);
87 pub const BUFFER_IN: VBVMR_CBCOMMAND = VBVMR_CBCOMMAND(10);
88 pub const BUFFER_OUT: VBVMR_CBCOMMAND = VBVMR_CBCOMMAND(11);
89 pub const BUFFER_MAIN: VBVMR_CBCOMMAND = VBVMR_CBCOMMAND(20);
90}
91#[repr(transparent)]
92#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
93pub struct VBVMR_CBCOMMAND(pub ::std::os::raw::c_int);
94impl VBVMR_AUDIOCALLBACK {
95 pub const INPUT: VBVMR_AUDIOCALLBACK = VBVMR_AUDIOCALLBACK(1);
96 pub const OUTPUT: VBVMR_AUDIOCALLBACK = VBVMR_AUDIOCALLBACK(2);
97 pub const MAIN: VBVMR_AUDIOCALLBACK = VBVMR_AUDIOCALLBACK(4);
98}
99impl ::std::ops::BitOr<VBVMR_AUDIOCALLBACK> for VBVMR_AUDIOCALLBACK {
100 type Output = Self;
101 #[inline]
102 fn bitor(self, other: Self) -> Self {
103 VBVMR_AUDIOCALLBACK(self.0 | other.0)
104 }
105}
106impl ::std::ops::BitOrAssign for VBVMR_AUDIOCALLBACK {
107 #[inline]
108 fn bitor_assign(&mut self, rhs: VBVMR_AUDIOCALLBACK) {
109 self.0 |= rhs.0;
110 }
111}
112impl ::std::ops::BitAnd<VBVMR_AUDIOCALLBACK> for VBVMR_AUDIOCALLBACK {
113 type Output = Self;
114 #[inline]
115 fn bitand(self, other: Self) -> Self {
116 VBVMR_AUDIOCALLBACK(self.0 & other.0)
117 }
118}
119impl ::std::ops::BitAndAssign for VBVMR_AUDIOCALLBACK {
120 #[inline]
121 fn bitand_assign(&mut self, rhs: VBVMR_AUDIOCALLBACK) {
122 self.0 &= rhs.0;
123 }
124}
125#[repr(transparent)]
126#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
127pub struct VBVMR_AUDIOCALLBACK(pub ::std::os::raw::c_int);
128impl VBVMR_MACROBUTTON_MODE {
129 pub const DEFAULT: VBVMR_MACROBUTTON_MODE = VBVMR_MACROBUTTON_MODE(0);
130 pub const STATEONLY: VBVMR_MACROBUTTON_MODE = VBVMR_MACROBUTTON_MODE(2);
131 pub const TRIGGER: VBVMR_MACROBUTTON_MODE = VBVMR_MACROBUTTON_MODE(3);
132}
133#[repr(transparent)]
134#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
135pub struct VBVMR_MACROBUTTON_MODE(pub ::std::os::raw::c_int);
136pub type T_VBVMR_Login = ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
137pub type T_VBVMR_Logout = ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
138pub type T_VBVMR_RunVoicemeeter = ::std::option::Option<
139 unsafe extern "C" fn(vType: ::std::os::raw::c_long) -> ::std::os::raw::c_long,
140>;
141pub type T_VBVMR_GetVoicemeeterType = ::std::option::Option<
142 unsafe extern "C" fn(pType: *mut ::std::os::raw::c_long) -> ::std::os::raw::c_long,
143>;
144pub type T_VBVMR_GetVoicemeeterVersion = ::std::option::Option<
145 unsafe extern "C" fn(pVersion: *mut ::std::os::raw::c_long) -> ::std::os::raw::c_long,
146>;
147pub type T_VBVMR_IsParametersDirty =
148 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
149pub type T_VBVMR_GetParameterFloat = ::std::option::Option<
150 unsafe extern "C" fn(
151 szParamName: *mut ::std::os::raw::c_char,
152 pValue: *mut f32,
153 ) -> ::std::os::raw::c_long,
154>;
155pub type T_VBVMR_GetParameterStringA = ::std::option::Option<
156 unsafe extern "C" fn(
157 szParamName: *mut ::std::os::raw::c_char,
158 szString: *mut ::std::os::raw::c_char,
159 ) -> ::std::os::raw::c_long,
160>;
161pub type T_VBVMR_GetParameterStringW = ::std::option::Option<
162 unsafe extern "C" fn(
163 szParamName: *mut ::std::os::raw::c_char,
164 wszString: *mut ::std::os::raw::c_ushort,
165 ) -> ::std::os::raw::c_long,
166>;
167pub type T_VBVMR_GetLevel = ::std::option::Option<
168 unsafe extern "C" fn(
169 nType: ::std::os::raw::c_long,
170 nuChannel: ::std::os::raw::c_long,
171 pValue: *mut f32,
172 ) -> ::std::os::raw::c_long,
173>;
174pub type T_VBVMR_GetMidiMessage = ::std::option::Option<
175 unsafe extern "C" fn(
176 pMIDIBuffer: *mut ::std::os::raw::c_uchar,
177 nbByteMax: ::std::os::raw::c_long,
178 ) -> ::std::os::raw::c_long,
179>;
180pub type T_VBVMR_SetParameterFloat = ::std::option::Option<
181 unsafe extern "C" fn(
182 szParamName: *mut ::std::os::raw::c_char,
183 Value: f32,
184 ) -> ::std::os::raw::c_long,
185>;
186pub type T_VBVMR_SetParameters = ::std::option::Option<
187 unsafe extern "C" fn(szParamScript: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_long,
188>;
189pub type T_VBVMR_SetParametersW = ::std::option::Option<
190 unsafe extern "C" fn(szParamScript: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long,
191>;
192pub type T_VBVMR_SetParameterStringA = ::std::option::Option<
193 unsafe extern "C" fn(
194 szParamName: *mut ::std::os::raw::c_char,
195 szString: *mut ::std::os::raw::c_char,
196 ) -> ::std::os::raw::c_long,
197>;
198pub type T_VBVMR_SetParameterStringW = ::std::option::Option<
199 unsafe extern "C" fn(
200 szParamName: *mut ::std::os::raw::c_char,
201 wszString: *mut ::std::os::raw::c_ushort,
202 ) -> ::std::os::raw::c_long,
203>;
204pub type T_VBVMR_Output_GetDeviceNumber =
205 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
206pub type T_VBVMR_Output_GetDeviceDescA = ::std::option::Option<
207 unsafe extern "C" fn(
208 zindex: ::std::os::raw::c_long,
209 nType: *mut ::std::os::raw::c_long,
210 szDeviceName: *mut ::std::os::raw::c_char,
211 szHardwareId: *mut ::std::os::raw::c_char,
212 ) -> ::std::os::raw::c_long,
213>;
214pub type T_VBVMR_Output_GetDeviceDescW = ::std::option::Option<
215 unsafe extern "C" fn(
216 zindex: ::std::os::raw::c_long,
217 nType: *mut ::std::os::raw::c_long,
218 wszDeviceName: *mut ::std::os::raw::c_ushort,
219 wszHardwareId: *mut ::std::os::raw::c_ushort,
220 ) -> ::std::os::raw::c_long,
221>;
222pub type T_VBVMR_Input_GetDeviceNumber =
223 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
224pub type T_VBVMR_Input_GetDeviceDescA = ::std::option::Option<
225 unsafe extern "C" fn(
226 zindex: ::std::os::raw::c_long,
227 nType: *mut ::std::os::raw::c_long,
228 szDeviceName: *mut ::std::os::raw::c_char,
229 szHardwareId: *mut ::std::os::raw::c_char,
230 ) -> ::std::os::raw::c_long,
231>;
232pub type T_VBVMR_Input_GetDeviceDescW = ::std::option::Option<
233 unsafe extern "C" fn(
234 zindex: ::std::os::raw::c_long,
235 nType: *mut ::std::os::raw::c_long,
236 wszDeviceName: *mut ::std::os::raw::c_ushort,
237 wszHardwareId: *mut ::std::os::raw::c_ushort,
238 ) -> ::std::os::raw::c_long,
239>;
240pub type T_VBVMR_AudioCallbackRegister = ::std::option::Option<
241 unsafe extern "C" fn(
242 mode: ::std::os::raw::c_long,
243 pCallback: T_VBVMR_VBAUDIOCALLBACK,
244 lpUser: *mut ::std::os::raw::c_void,
245 szClientName: *mut ::std::os::raw::c_char,
246 ) -> ::std::os::raw::c_long,
247>;
248pub type T_VBVMR_AudioCallbackStart =
249 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
250pub type T_VBVMR_AudioCallbackStop =
251 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
252pub type T_VBVMR_AudioCallbackUnregister =
253 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
254pub type T_VBVMR_MacroButton_IsDirty =
255 ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_long>;
256pub type T_VBVMR_MacroButton_GetStatus = ::std::option::Option<
257 unsafe extern "C" fn(
258 nuLogicalButton: ::std::os::raw::c_long,
259 pValue: *mut f32,
260 bitmode: ::std::os::raw::c_long,
261 ) -> ::std::os::raw::c_long,
262>;
263pub type T_VBVMR_MacroButton_SetStatus = ::std::option::Option<
264 unsafe extern "C" fn(
265 nuLogicalButton: ::std::os::raw::c_long,
266 fValue: f32,
267 bitmode: ::std::os::raw::c_long,
268 ) -> ::std::os::raw::c_long,
269>;
270#[repr(C)]
271#[derive(Debug, Copy, Clone)]
272pub struct tagVBVMR_INTERFACE {
273 pub VBVMR_Login: T_VBVMR_Login,
274 pub VBVMR_Logout: T_VBVMR_Logout,
275 pub VBVMR_RunVoicemeeter: T_VBVMR_RunVoicemeeter,
276 pub VBVMR_GetVoicemeeterType: T_VBVMR_GetVoicemeeterType,
277 pub VBVMR_GetVoicemeeterVersion: T_VBVMR_GetVoicemeeterVersion,
278 pub VBVMR_IsParametersDirty: T_VBVMR_IsParametersDirty,
279 pub VBVMR_GetParameterFloat: T_VBVMR_GetParameterFloat,
280 pub VBVMR_GetParameterStringA: T_VBVMR_GetParameterStringA,
281 pub VBVMR_GetParameterStringW: T_VBVMR_GetParameterStringW,
282 pub VBVMR_GetLevel: T_VBVMR_GetLevel,
283 pub VBVMR_GetMidiMessage: T_VBVMR_GetMidiMessage,
284 pub VBVMR_SetParameterFloat: T_VBVMR_SetParameterFloat,
285 pub VBVMR_SetParameters: T_VBVMR_SetParameters,
286 pub VBVMR_SetParametersW: T_VBVMR_SetParametersW,
287 pub VBVMR_SetParameterStringA: T_VBVMR_SetParameterStringA,
288 pub VBVMR_SetParameterStringW: T_VBVMR_SetParameterStringW,
289 pub VBVMR_Output_GetDeviceNumber: T_VBVMR_Output_GetDeviceNumber,
290 pub VBVMR_Output_GetDeviceDescA: T_VBVMR_Output_GetDeviceDescA,
291 pub VBVMR_Output_GetDeviceDescW: T_VBVMR_Output_GetDeviceDescW,
292 pub VBVMR_Input_GetDeviceNumber: T_VBVMR_Input_GetDeviceNumber,
293 pub VBVMR_Input_GetDeviceDescA: T_VBVMR_Input_GetDeviceDescA,
294 pub VBVMR_Input_GetDeviceDescW: T_VBVMR_Input_GetDeviceDescW,
295 pub VBVMR_AudioCallbackRegister: T_VBVMR_AudioCallbackRegister,
296 pub VBVMR_AudioCallbackStart: T_VBVMR_AudioCallbackStart,
297 pub VBVMR_AudioCallbackStop: T_VBVMR_AudioCallbackStop,
298 pub VBVMR_AudioCallbackUnregister: T_VBVMR_AudioCallbackUnregister,
299 pub VBVMR_MacroButton_IsDirty: T_VBVMR_MacroButton_IsDirty,
300 pub VBVMR_MacroButton_GetStatus: T_VBVMR_MacroButton_GetStatus,
301 pub VBVMR_MacroButton_SetStatus: T_VBVMR_MacroButton_SetStatus,
302}
303#[allow(clippy::unnecessary_operation, clippy::identity_op)]
304const _: () = {
305 ["Size of tagVBVMR_INTERFACE"][::std::mem::size_of::<tagVBVMR_INTERFACE>() - 232usize];
306 ["Alignment of tagVBVMR_INTERFACE"][::std::mem::align_of::<tagVBVMR_INTERFACE>() - 8usize];
307 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Login"]
308 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Login) - 0usize];
309 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Logout"]
310 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Logout) - 8usize];
311 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_RunVoicemeeter"]
312 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_RunVoicemeeter) - 16usize];
313 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetVoicemeeterType"]
314 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetVoicemeeterType) - 24usize];
315 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetVoicemeeterVersion"]
316 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetVoicemeeterVersion) - 32usize];
317 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_IsParametersDirty"]
318 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_IsParametersDirty) - 40usize];
319 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetParameterFloat"]
320 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetParameterFloat) - 48usize];
321 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetParameterStringA"]
322 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetParameterStringA) - 56usize];
323 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetParameterStringW"]
324 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetParameterStringW) - 64usize];
325 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetLevel"]
326 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetLevel) - 72usize];
327 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_GetMidiMessage"]
328 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_GetMidiMessage) - 80usize];
329 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_SetParameterFloat"]
330 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_SetParameterFloat) - 88usize];
331 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_SetParameters"]
332 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_SetParameters) - 96usize];
333 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_SetParametersW"]
334 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_SetParametersW) - 104usize];
335 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_SetParameterStringA"]
336 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_SetParameterStringA) - 112usize];
337 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_SetParameterStringW"]
338 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_SetParameterStringW) - 120usize];
339 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Output_GetDeviceNumber"]
340 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Output_GetDeviceNumber) - 128usize];
341 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Output_GetDeviceDescA"]
342 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Output_GetDeviceDescA) - 136usize];
343 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Output_GetDeviceDescW"]
344 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Output_GetDeviceDescW) - 144usize];
345 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Input_GetDeviceNumber"]
346 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Input_GetDeviceNumber) - 152usize];
347 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Input_GetDeviceDescA"]
348 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Input_GetDeviceDescA) - 160usize];
349 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_Input_GetDeviceDescW"]
350 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_Input_GetDeviceDescW) - 168usize];
351 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_AudioCallbackRegister"]
352 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_AudioCallbackRegister) - 176usize];
353 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_AudioCallbackStart"]
354 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_AudioCallbackStart) - 184usize];
355 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_AudioCallbackStop"]
356 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_AudioCallbackStop) - 192usize];
357 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_AudioCallbackUnregister"]
358 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_AudioCallbackUnregister) - 200usize];
359 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_MacroButton_IsDirty"]
360 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_MacroButton_IsDirty) - 208usize];
361 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_MacroButton_GetStatus"]
362 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_MacroButton_GetStatus) - 216usize];
363 ["Offset of field: tagVBVMR_INTERFACE::VBVMR_MacroButton_SetStatus"]
364 [::std::mem::offset_of!(tagVBVMR_INTERFACE, VBVMR_MacroButton_SetStatus) - 224usize];
365};
366pub type T_VBVMR_INTERFACE = tagVBVMR_INTERFACE;
367pub type PT_VBVMR_INTERFACE = *mut tagVBVMR_INTERFACE;
368pub type LPT_VBVMR_INTERFACE = *mut tagVBVMR_INTERFACE;
369#[repr(C, packed)]
370#[derive(Debug, Copy, Clone)]
371pub struct tagVBAN_VMRT_PACKET {
372 pub voicemeeterType: ::std::os::raw::c_uchar,
373 pub reserved: ::std::os::raw::c_uchar,
374 pub buffersize: ::std::os::raw::c_ushort,
375 pub voicemeeterVersion: ::std::os::raw::c_ulong,
376 pub optionBits: ::std::os::raw::c_ulong,
377 pub samplerate: ::std::os::raw::c_ulong,
378 pub inputLeveldB100: [::std::os::raw::c_short; 34usize],
379 pub outputLeveldB100: [::std::os::raw::c_short; 64usize],
380 pub TransportBit: ::std::os::raw::c_ulong,
381 pub stripState: [::std::os::raw::c_ulong; 8usize],
382 pub busState: [::std::os::raw::c_ulong; 8usize],
383 pub stripGaindB100Layer1: [::std::os::raw::c_short; 8usize],
384 pub stripGaindB100Layer2: [::std::os::raw::c_short; 8usize],
385 pub stripGaindB100Layer3: [::std::os::raw::c_short; 8usize],
386 pub stripGaindB100Layer4: [::std::os::raw::c_short; 8usize],
387 pub stripGaindB100Layer5: [::std::os::raw::c_short; 8usize],
388 pub stripGaindB100Layer6: [::std::os::raw::c_short; 8usize],
389 pub stripGaindB100Layer7: [::std::os::raw::c_short; 8usize],
390 pub stripGaindB100Layer8: [::std::os::raw::c_short; 8usize],
391 pub busGaindB100: [::std::os::raw::c_short; 8usize],
392 pub stripLabelUTF8c60: [[::std::os::raw::c_char; 60usize]; 8usize],
393 pub busLabelUTF8c60: [[::std::os::raw::c_char; 60usize]; 8usize],
394}
395#[allow(clippy::unnecessary_operation, clippy::identity_op)]
396const _: () = {
397 ["Size of tagVBAN_VMRT_PACKET"][::std::mem::size_of::<tagVBAN_VMRT_PACKET>() - 1384usize];
398 ["Alignment of tagVBAN_VMRT_PACKET"][::std::mem::align_of::<tagVBAN_VMRT_PACKET>() - 1usize];
399 ["Offset of field: tagVBAN_VMRT_PACKET::voicemeeterType"]
400 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, voicemeeterType) - 0usize];
401 ["Offset of field: tagVBAN_VMRT_PACKET::reserved"]
402 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, reserved) - 1usize];
403 ["Offset of field: tagVBAN_VMRT_PACKET::buffersize"]
404 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, buffersize) - 2usize];
405 ["Offset of field: tagVBAN_VMRT_PACKET::voicemeeterVersion"]
406 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, voicemeeterVersion) - 4usize];
407 ["Offset of field: tagVBAN_VMRT_PACKET::optionBits"]
408 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, optionBits) - 8usize];
409 ["Offset of field: tagVBAN_VMRT_PACKET::samplerate"]
410 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, samplerate) - 12usize];
411 ["Offset of field: tagVBAN_VMRT_PACKET::inputLeveldB100"]
412 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, inputLeveldB100) - 16usize];
413 ["Offset of field: tagVBAN_VMRT_PACKET::outputLeveldB100"]
414 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, outputLeveldB100) - 84usize];
415 ["Offset of field: tagVBAN_VMRT_PACKET::TransportBit"]
416 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, TransportBit) - 212usize];
417 ["Offset of field: tagVBAN_VMRT_PACKET::stripState"]
418 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripState) - 216usize];
419 ["Offset of field: tagVBAN_VMRT_PACKET::busState"]
420 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, busState) - 248usize];
421 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer1"]
422 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer1) - 280usize];
423 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer2"]
424 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer2) - 296usize];
425 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer3"]
426 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer3) - 312usize];
427 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer4"]
428 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer4) - 328usize];
429 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer5"]
430 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer5) - 344usize];
431 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer6"]
432 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer6) - 360usize];
433 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer7"]
434 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer7) - 376usize];
435 ["Offset of field: tagVBAN_VMRT_PACKET::stripGaindB100Layer8"]
436 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripGaindB100Layer8) - 392usize];
437 ["Offset of field: tagVBAN_VMRT_PACKET::busGaindB100"]
438 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, busGaindB100) - 408usize];
439 ["Offset of field: tagVBAN_VMRT_PACKET::stripLabelUTF8c60"]
440 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, stripLabelUTF8c60) - 424usize];
441 ["Offset of field: tagVBAN_VMRT_PACKET::busLabelUTF8c60"]
442 [::std::mem::offset_of!(tagVBAN_VMRT_PACKET, busLabelUTF8c60) - 904usize];
443};
444pub type T_VBAN_VMRT_PACKET = tagVBAN_VMRT_PACKET;
445pub type PT_VBAN_VMRT_PACKET = *mut tagVBAN_VMRT_PACKET;
446pub type LPT_VBAN_VMRT_PACKET = *mut tagVBAN_VMRT_PACKET;
447impl VMRTSTATE_MODE {
448 pub const MUTE: VMRTSTATE_MODE = VMRTSTATE_MODE(1);
449 pub const SOLO: VMRTSTATE_MODE = VMRTSTATE_MODE(2);
450 pub const MONO: VMRTSTATE_MODE = VMRTSTATE_MODE(4);
451 pub const MUTEC: VMRTSTATE_MODE = VMRTSTATE_MODE(8);
452 pub const MIXDOWN: VMRTSTATE_MODE = VMRTSTATE_MODE(16);
453 pub const REPEAT: VMRTSTATE_MODE = VMRTSTATE_MODE(32);
454 pub const MIXDOWNB: VMRTSTATE_MODE = VMRTSTATE_MODE(48);
455 pub const COMPOSITE: VMRTSTATE_MODE = VMRTSTATE_MODE(64);
456 pub const UPMIXTV: VMRTSTATE_MODE = VMRTSTATE_MODE(80);
457 pub const UPMIX2: VMRTSTATE_MODE = VMRTSTATE_MODE(96);
458 pub const UPMIX4: VMRTSTATE_MODE = VMRTSTATE_MODE(112);
459 pub const UPMIX6: VMRTSTATE_MODE = VMRTSTATE_MODE(128);
460 pub const CENTER: VMRTSTATE_MODE = VMRTSTATE_MODE(144);
461 pub const LFE: VMRTSTATE_MODE = VMRTSTATE_MODE(160);
462 pub const REAR: VMRTSTATE_MODE = VMRTSTATE_MODE(176);
463 pub const MASK: VMRTSTATE_MODE = VMRTSTATE_MODE(240);
464 pub const EQ: VMRTSTATE_MODE = VMRTSTATE_MODE(256);
465 pub const CROSS: VMRTSTATE_MODE = VMRTSTATE_MODE(512);
466 pub const EQB: VMRTSTATE_MODE = VMRTSTATE_MODE(2048);
467 pub const BUSA: VMRTSTATE_MODE = VMRTSTATE_MODE(4096);
468 pub const BUSA1: VMRTSTATE_MODE = VMRTSTATE_MODE(4096);
469 pub const BUSA2: VMRTSTATE_MODE = VMRTSTATE_MODE(8192);
470 pub const BUSA3: VMRTSTATE_MODE = VMRTSTATE_MODE(16384);
471 pub const BUSA4: VMRTSTATE_MODE = VMRTSTATE_MODE(32768);
472 pub const BUSA5: VMRTSTATE_MODE = VMRTSTATE_MODE(524288);
473 pub const BUSB: VMRTSTATE_MODE = VMRTSTATE_MODE(65536);
474 pub const BUSB1: VMRTSTATE_MODE = VMRTSTATE_MODE(65536);
475 pub const BUSB2: VMRTSTATE_MODE = VMRTSTATE_MODE(131072);
476 pub const BUSB3: VMRTSTATE_MODE = VMRTSTATE_MODE(262144);
477 pub const PAN0: VMRTSTATE_MODE = VMRTSTATE_MODE(0);
478 pub const PANCOLOR: VMRTSTATE_MODE = VMRTSTATE_MODE(1048576);
479 pub const PANMOD: VMRTSTATE_MODE = VMRTSTATE_MODE(2097152);
480 pub const PANMASK: VMRTSTATE_MODE = VMRTSTATE_MODE(15728640);
481 pub const POSTFX_R: VMRTSTATE_MODE = VMRTSTATE_MODE(16777216);
482 pub const POSTFX_D: VMRTSTATE_MODE = VMRTSTATE_MODE(33554432);
483 pub const POSTFX1: VMRTSTATE_MODE = VMRTSTATE_MODE(67108864);
484 pub const POSTFX2: VMRTSTATE_MODE = VMRTSTATE_MODE(134217728);
485 pub const SEL: VMRTSTATE_MODE = VMRTSTATE_MODE(268435456);
486 pub const MONITOR: VMRTSTATE_MODE = VMRTSTATE_MODE(536870912);
487}
488#[repr(transparent)]
489#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
490pub struct VMRTSTATE_MODE(pub ::std::os::raw::c_int);
491pub struct VoicemeeterRemoteRaw {
492 __library: ::libloading::Library,
493 pub VBVMR_Login: unsafe extern "system" fn() -> ::std::os::raw::c_long,
494 pub VBVMR_Logout: unsafe extern "system" fn() -> ::std::os::raw::c_long,
495 pub VBVMR_RunVoicemeeter:
496 unsafe extern "system" fn(vType: ::std::os::raw::c_long) -> ::std::os::raw::c_long,
497 pub VBVMR_GetVoicemeeterType:
498 unsafe extern "system" fn(pType: *mut ::std::os::raw::c_long) -> ::std::os::raw::c_long,
499 pub VBVMR_GetVoicemeeterVersion:
500 unsafe extern "system" fn(pVersion: *mut ::std::os::raw::c_long) -> ::std::os::raw::c_long,
501 pub VBVMR_IsParametersDirty: unsafe extern "system" fn() -> ::std::os::raw::c_long,
502 pub VBVMR_GetParameterFloat: unsafe extern "system" fn(
503 szParamName: *mut ::std::os::raw::c_char,
504 pValue: *mut f32,
505 ) -> ::std::os::raw::c_long,
506 pub VBVMR_GetParameterStringA: unsafe extern "system" fn(
507 szParamName: *mut ::std::os::raw::c_char,
508 szString: *mut ::std::os::raw::c_char,
509 ) -> ::std::os::raw::c_long,
510 pub VBVMR_GetParameterStringW: unsafe extern "system" fn(
511 szParamName: *mut ::std::os::raw::c_char,
512 wszString: *mut ::std::os::raw::c_ushort,
513 ) -> ::std::os::raw::c_long,
514 pub VBVMR_GetLevel: unsafe extern "system" fn(
515 nType: ::std::os::raw::c_long,
516 nuChannel: ::std::os::raw::c_long,
517 pValue: *mut f32,
518 ) -> ::std::os::raw::c_long,
519 pub VBVMR_GetMidiMessage: unsafe extern "system" fn(
520 pMIDIBuffer: *mut ::std::os::raw::c_uchar,
521 nbByteMax: ::std::os::raw::c_long,
522 ) -> ::std::os::raw::c_long,
523 pub VBVMR_SetParameterFloat: unsafe extern "system" fn(
524 szParamName: *mut ::std::os::raw::c_char,
525 Value: f32,
526 ) -> ::std::os::raw::c_long,
527 pub VBVMR_SetParameterStringA: unsafe extern "system" fn(
528 szParamName: *mut ::std::os::raw::c_char,
529 szString: *mut ::std::os::raw::c_char,
530 ) -> ::std::os::raw::c_long,
531 pub VBVMR_SetParameterStringW: unsafe extern "system" fn(
532 szParamName: *mut ::std::os::raw::c_char,
533 wszString: *mut ::std::os::raw::c_ushort,
534 ) -> ::std::os::raw::c_long,
535 pub VBVMR_SetParameters: unsafe extern "system" fn(
536 szParamScript: *mut ::std::os::raw::c_char,
537 ) -> ::std::os::raw::c_long,
538 pub VBVMR_SetParametersW: unsafe extern "system" fn(
539 szParamScript: *mut ::std::os::raw::c_ushort,
540 ) -> ::std::os::raw::c_long,
541 pub VBVMR_Output_GetDeviceNumber: unsafe extern "system" fn() -> ::std::os::raw::c_long,
542 pub VBVMR_Output_GetDeviceDescA: unsafe extern "system" fn(
543 zindex: ::std::os::raw::c_long,
544 nType: *mut ::std::os::raw::c_long,
545 szDeviceName: *mut ::std::os::raw::c_char,
546 szHardwareId: *mut ::std::os::raw::c_char,
547 ) -> ::std::os::raw::c_long,
548 pub VBVMR_Output_GetDeviceDescW: unsafe extern "system" fn(
549 zindex: ::std::os::raw::c_long,
550 nType: *mut ::std::os::raw::c_long,
551 wszDeviceName: *mut ::std::os::raw::c_ushort,
552 wszHardwareId: *mut ::std::os::raw::c_ushort,
553 ) -> ::std::os::raw::c_long,
554 pub VBVMR_Input_GetDeviceNumber: unsafe extern "system" fn() -> ::std::os::raw::c_long,
555 pub VBVMR_Input_GetDeviceDescA: unsafe extern "system" fn(
556 zindex: ::std::os::raw::c_long,
557 nType: *mut ::std::os::raw::c_long,
558 szDeviceName: *mut ::std::os::raw::c_char,
559 szHardwareId: *mut ::std::os::raw::c_char,
560 ) -> ::std::os::raw::c_long,
561 pub VBVMR_Input_GetDeviceDescW: unsafe extern "system" fn(
562 zindex: ::std::os::raw::c_long,
563 nType: *mut ::std::os::raw::c_long,
564 wszDeviceName: *mut ::std::os::raw::c_ushort,
565 wszHardwareId: *mut ::std::os::raw::c_ushort,
566 ) -> ::std::os::raw::c_long,
567 pub VBVMR_AudioCallbackRegister: unsafe extern "system" fn(
568 mode: ::std::os::raw::c_long,
569 pCallback: T_VBVMR_VBAUDIOCALLBACK,
570 lpUser: *mut ::std::os::raw::c_void,
571 szClientName: *mut ::std::os::raw::c_char,
572 ) -> ::std::os::raw::c_long,
573 pub VBVMR_AudioCallbackStart: unsafe extern "system" fn() -> ::std::os::raw::c_long,
574 pub VBVMR_AudioCallbackStop: unsafe extern "system" fn() -> ::std::os::raw::c_long,
575 pub VBVMR_AudioCallbackUnregister: unsafe extern "system" fn() -> ::std::os::raw::c_long,
576 pub VBVMR_MacroButton_IsDirty: unsafe extern "system" fn() -> ::std::os::raw::c_long,
577 pub VBVMR_MacroButton_GetStatus: unsafe extern "system" fn(
578 nuLogicalButton: ::std::os::raw::c_long,
579 pValue: *mut f32,
580 bitmode: ::std::os::raw::c_long,
581 ) -> ::std::os::raw::c_long,
582 pub VBVMR_MacroButton_SetStatus: unsafe extern "system" fn(
583 nuLogicalButton: ::std::os::raw::c_long,
584 fValue: f32,
585 bitmode: ::std::os::raw::c_long,
586 ) -> ::std::os::raw::c_long,
587}
588impl VoicemeeterRemoteRaw {
589 pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>
590 where
591 P: AsRef<::std::ffi::OsStr>,
592 {
593 let library = ::libloading::Library::new(path)?;
594 Self::from_library(library)
595 }
596 pub unsafe fn from_library<L>(library: L) -> Result<Self, ::libloading::Error>
597 where
598 L: Into<::libloading::Library>,
599 {
600 let __library = library.into();
601 let VBVMR_Login = __library.get(b"VBVMR_Login\0").map(|sym| *sym)?;
602 let VBVMR_Logout = __library.get(b"VBVMR_Logout\0").map(|sym| *sym)?;
603 let VBVMR_RunVoicemeeter = __library.get(b"VBVMR_RunVoicemeeter\0").map(|sym| *sym)?;
604 let VBVMR_GetVoicemeeterType = __library
605 .get(b"VBVMR_GetVoicemeeterType\0")
606 .map(|sym| *sym)?;
607 let VBVMR_GetVoicemeeterVersion = __library
608 .get(b"VBVMR_GetVoicemeeterVersion\0")
609 .map(|sym| *sym)?;
610 let VBVMR_IsParametersDirty = __library
611 .get(b"VBVMR_IsParametersDirty\0")
612 .map(|sym| *sym)?;
613 let VBVMR_GetParameterFloat = __library
614 .get(b"VBVMR_GetParameterFloat\0")
615 .map(|sym| *sym)?;
616 let VBVMR_GetParameterStringA = __library
617 .get(b"VBVMR_GetParameterStringA\0")
618 .map(|sym| *sym)?;
619 let VBVMR_GetParameterStringW = __library
620 .get(b"VBVMR_GetParameterStringW\0")
621 .map(|sym| *sym)?;
622 let VBVMR_GetLevel = __library.get(b"VBVMR_GetLevel\0").map(|sym| *sym)?;
623 let VBVMR_GetMidiMessage = __library.get(b"VBVMR_GetMidiMessage\0").map(|sym| *sym)?;
624 let VBVMR_SetParameterFloat = __library
625 .get(b"VBVMR_SetParameterFloat\0")
626 .map(|sym| *sym)?;
627 let VBVMR_SetParameterStringA = __library
628 .get(b"VBVMR_SetParameterStringA\0")
629 .map(|sym| *sym)?;
630 let VBVMR_SetParameterStringW = __library
631 .get(b"VBVMR_SetParameterStringW\0")
632 .map(|sym| *sym)?;
633 let VBVMR_SetParameters = __library.get(b"VBVMR_SetParameters\0").map(|sym| *sym)?;
634 let VBVMR_SetParametersW = __library.get(b"VBVMR_SetParametersW\0").map(|sym| *sym)?;
635 let VBVMR_Output_GetDeviceNumber = __library
636 .get(b"VBVMR_Output_GetDeviceNumber\0")
637 .map(|sym| *sym)?;
638 let VBVMR_Output_GetDeviceDescA = __library
639 .get(b"VBVMR_Output_GetDeviceDescA\0")
640 .map(|sym| *sym)?;
641 let VBVMR_Output_GetDeviceDescW = __library
642 .get(b"VBVMR_Output_GetDeviceDescW\0")
643 .map(|sym| *sym)?;
644 let VBVMR_Input_GetDeviceNumber = __library
645 .get(b"VBVMR_Input_GetDeviceNumber\0")
646 .map(|sym| *sym)?;
647 let VBVMR_Input_GetDeviceDescA = __library
648 .get(b"VBVMR_Input_GetDeviceDescA\0")
649 .map(|sym| *sym)?;
650 let VBVMR_Input_GetDeviceDescW = __library
651 .get(b"VBVMR_Input_GetDeviceDescW\0")
652 .map(|sym| *sym)?;
653 let VBVMR_AudioCallbackRegister = __library
654 .get(b"VBVMR_AudioCallbackRegister\0")
655 .map(|sym| *sym)?;
656 let VBVMR_AudioCallbackStart = __library
657 .get(b"VBVMR_AudioCallbackStart\0")
658 .map(|sym| *sym)?;
659 let VBVMR_AudioCallbackStop = __library
660 .get(b"VBVMR_AudioCallbackStop\0")
661 .map(|sym| *sym)?;
662 let VBVMR_AudioCallbackUnregister = __library
663 .get(b"VBVMR_AudioCallbackUnregister\0")
664 .map(|sym| *sym)?;
665 let VBVMR_MacroButton_IsDirty = __library
666 .get(b"VBVMR_MacroButton_IsDirty\0")
667 .map(|sym| *sym)?;
668 let VBVMR_MacroButton_GetStatus = __library
669 .get(b"VBVMR_MacroButton_GetStatus\0")
670 .map(|sym| *sym)?;
671 let VBVMR_MacroButton_SetStatus = __library
672 .get(b"VBVMR_MacroButton_SetStatus\0")
673 .map(|sym| *sym)?;
674 Ok(VoicemeeterRemoteRaw {
675 __library,
676 VBVMR_Login,
677 VBVMR_Logout,
678 VBVMR_RunVoicemeeter,
679 VBVMR_GetVoicemeeterType,
680 VBVMR_GetVoicemeeterVersion,
681 VBVMR_IsParametersDirty,
682 VBVMR_GetParameterFloat,
683 VBVMR_GetParameterStringA,
684 VBVMR_GetParameterStringW,
685 VBVMR_GetLevel,
686 VBVMR_GetMidiMessage,
687 VBVMR_SetParameterFloat,
688 VBVMR_SetParameterStringA,
689 VBVMR_SetParameterStringW,
690 VBVMR_SetParameters,
691 VBVMR_SetParametersW,
692 VBVMR_Output_GetDeviceNumber,
693 VBVMR_Output_GetDeviceDescA,
694 VBVMR_Output_GetDeviceDescW,
695 VBVMR_Input_GetDeviceNumber,
696 VBVMR_Input_GetDeviceDescA,
697 VBVMR_Input_GetDeviceDescW,
698 VBVMR_AudioCallbackRegister,
699 VBVMR_AudioCallbackStart,
700 VBVMR_AudioCallbackStop,
701 VBVMR_AudioCallbackUnregister,
702 VBVMR_MacroButton_IsDirty,
703 VBVMR_MacroButton_GetStatus,
704 VBVMR_MacroButton_SetStatus,
705 })
706 }
707 #[doc = "@brief Open Communication Pipe With Voicemeeter (typically called on software startup).\n@return :\t 0: OK (no error).\n1: OK but Voicemeeter Application not launched.\n-1: cannot get client (unexpected)\n-2: unexpected login (logout was expected before)."]
708 pub unsafe fn VBVMR_Login(&self) -> ::std::os::raw::c_long {
709 (self.VBVMR_Login)()
710 }
711 #[doc = "@brief Close Communication Pipe With Voicemeeter (typically called on software end).\n@return : 0 if ok."]
712 pub unsafe fn VBVMR_Logout(&self) -> ::std::os::raw::c_long {
713 (self.VBVMR_Logout)()
714 }
715 #[doc = "@brief Run Voicemeeter Application (get installation directory and run Voicemeeter Application).\n@param vType : Voicemeeter type (1 = Voicemeeter, 2= Voicemeeter Banana, 3= Voicemeeter Potato, 6 = Potato x64 bits).\n@return :\t 0: Ok.\n-1: not installed (UninstallString not found in registry).\n-2: unknown vType number"]
716 pub unsafe fn VBVMR_RunVoicemeeter(
717 &self,
718 vType: ::std::os::raw::c_long,
719 ) -> ::std::os::raw::c_long {
720 (self.VBVMR_RunVoicemeeter)(vType)
721 }
722 #[doc = "@brief Get Voicemeeter Type\n@param pType : Pointer on 32bit long receiving the type (1 = Voicemeeter, 2= Voicemeeter Banana, 3 Potato).\n\nVOICEMEETER STRIP/BUS INDEX ASSIGNMENT\n\n| Strip 1 | Strip 2 |Virtual Input| BUS A | BUS B |\n+---------+---------+-------------+---------+---------+\n| 0 | 1 | 2 | 0 | 1 |\n\nVOICEMEETER BANANA STRIP/BUS INDEX ASSIGNMENT\n\n| Strip 1 | Strip 2 | Strip 2 |Virtual Input|Virtual AUX|BUS A1|BUS A2|BUS A3|BUS B1|BUS B2|\n+---------+---------+---------+-------------+-----------+------+------+------+------+------+\n| 0 | 1 | 2 | 3 | 4 | 0 | 1 | 2 | 3 | 4 |\n\nVOICEMEETER POTATO STRIP/BUS INDEX ASSIGNMENT\n\n| Strip 1 | Strip 2 | Strip 2 | Strip 2 | Strip 2 |Virtual Input|Virtual AUX| VAIO3 |BUS A1|BUS A2|BUS A3|BUS A4|BUS A5|BUS B1|BUS B2|BUS B3|\n+---------+---------+---------+---------+---------+-------------+-----------+-----------+------+------+------+------+------+------+------+------+\n| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n\n\n@return :\t 0: OK (no error).\n-1: cannot get client (unexpected)\n-2: no server."]
723 pub unsafe fn VBVMR_GetVoicemeeterType(
724 &self,
725 pType: *mut ::std::os::raw::c_long,
726 ) -> ::std::os::raw::c_long {
727 (self.VBVMR_GetVoicemeeterType)(pType)
728 }
729 #[doc = "@brief Get Voicemeeter Version\n@param pType : Pointer on 32bit integer receiving the version (v1.v2.v3.v4)\nv1 = (version & 0xFF000000)>>24;\nv2 = (version & 0x00FF0000)>>16;\nv3 = (version & 0x0000FF00)>>8;\nv4 = version & 0x000000FF;\n\n@return :\t 0: OK (no error).\n-1: cannot get client (unexpected)\n-2: no server."]
730 pub unsafe fn VBVMR_GetVoicemeeterVersion(
731 &self,
732 pVersion: *mut ::std::os::raw::c_long,
733 ) -> ::std::os::raw::c_long {
734 (self.VBVMR_GetVoicemeeterVersion)(pVersion)
735 }
736 #[doc = "@brief Check if parameters have changed.\nCall this function periodically (typically every 10 or 20ms).\n(this function must be called from one thread only)\n\n@return:\t 0: no new paramters.\n1: New parameters -> update your display.\n-1: error (unexpected)\n-2: no server."]
737 pub unsafe fn VBVMR_IsParametersDirty(&self) -> ::std::os::raw::c_long {
738 (self.VBVMR_IsParametersDirty)()
739 }
740 #[doc = "@brief get parameter value.\n@param szParamName : Null Terminal ASCII String giving the name of the parameter (see parameters name table)\n@param pValue : Pointer on float (32bit float by reference) receiving the wanted value.\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: unknown parameter\n-5: structure mismatch"]
741 pub unsafe fn VBVMR_GetParameterFloat(
742 &self,
743 szParamName: *mut ::std::os::raw::c_char,
744 pValue: *mut f32,
745 ) -> ::std::os::raw::c_long {
746 (self.VBVMR_GetParameterFloat)(szParamName, pValue)
747 }
748 #[doc = "@brief get parameter value.\n@param szParamName : Null Terminal ASCII String giving the name of the parameter (see parameters name table)\n@param pValue : Pointer on String (512 char or wchar) receiving the wanted value.\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: unknown parameter\n-5: structure mismatch"]
749 pub unsafe fn VBVMR_GetParameterStringA(
750 &self,
751 szParamName: *mut ::std::os::raw::c_char,
752 szString: *mut ::std::os::raw::c_char,
753 ) -> ::std::os::raw::c_long {
754 (self.VBVMR_GetParameterStringA)(szParamName, szString)
755 }
756 pub unsafe fn VBVMR_GetParameterStringW(
757 &self,
758 szParamName: *mut ::std::os::raw::c_char,
759 wszString: *mut ::std::os::raw::c_ushort,
760 ) -> ::std::os::raw::c_long {
761 (self.VBVMR_GetParameterStringW)(szParamName, wszString)
762 }
763 #[doc = "@brief Get Current levels.\n(this function must be called from one thread only)\n\n@param nType:\t0= pre fader input levels.\n1= post fader input levels.\n2= post Mute input levels.\n3= output levels.\n\n@param nuChannel: audio channel zero based index\nfor input 0 = in#1 left, 1= in#1 Right, etc...\nfor output 0 = busA ch1, 1 = busA ch2...\n\nVOICEMEETER CHANNEL ASSIGNMENT\n\n| Strip 1 | Strip 2 | Virtual Input |\n+----+----+----+----+----+----+----+----+----+----+----+----+\n| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |\n\n| Output A1 / A2 | Virtual Output |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |\n\nVOICEMEETER BANANA CHANNEL ASSIGNMENT\n\n| Strip 1 | Strip 2 | Strip 3 | Virtual Input | Virtual Input AUX |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |\n\n| Output A1 | Output A2 | Output A3 |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |\n\n| Virtual Output B1 | Virtual Output B2 |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |\n\nVOICEMEETER POTATO CHANNEL ASSIGNMENT\n\n| Strip 1 | Strip 2 | Strip 3 | Strip 4 | Strip 5 | Virtual Input | Virtual Input AUX | VAIO3 |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |\n\n| Output A1 | Output A2 | Output A3 | Output A4 | Output A5 |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |\n\n| Virtual Output B1 | Virtual Output B2 | Virtual Output B3 |\n+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+\n| 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |\n\n\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: no level available\n-4: out of range"]
764 pub unsafe fn VBVMR_GetLevel(
765 &self,
766 nType: ::std::os::raw::c_long,
767 nuChannel: ::std::os::raw::c_long,
768 pValue: *mut f32,
769 ) -> ::std::os::raw::c_long {
770 (self.VBVMR_GetLevel)(nType, nuChannel, pValue)
771 }
772 #[doc = "@brief Get MIDI message from M.I.D.I. input device used by Voicemeeter M.I.D.I. mapping.\n(this function must be called from one thread only)\n\n@param pMIDIBuffer:\tpointer on MIDI Buffer. Expected message size is below 4 bytes,\nbut it's recommended to use 1024 Bytes local buffer to receive\npossible multiple M.I.D.I. event message in optimal way:\nunsigned char pBuffer[1024];\n\n\n@return :\t>0: number of bytes placed in buffer (2 or 3 byte for usual M.I.D.I. message)\n-1: error\n-2: no server.\n-5: no MIDI data\n-6: no MIDI data"]
773 pub unsafe fn VBVMR_GetMidiMessage(
774 &self,
775 pMIDIBuffer: *mut ::std::os::raw::c_uchar,
776 nbByteMax: ::std::os::raw::c_long,
777 ) -> ::std::os::raw::c_long {
778 (self.VBVMR_GetMidiMessage)(pMIDIBuffer, nbByteMax)
779 }
780 #[doc = "@brief Set a single float 32 bits parameters .\n@param szParamName : Null Terminal ASCII String giving the name of the parameter (see parameters name table)\nexample:\nStrip[1].gain\nStrip[0].mute\nBus[0].gain\nBus[0].eq.channel[0].cell[0].gain\n\n@param pValue : float 32bit containing the new value.\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: unknown parameter"]
781 pub unsafe fn VBVMR_SetParameterFloat(
782 &self,
783 szParamName: *mut ::std::os::raw::c_char,
784 Value: f32,
785 ) -> ::std::os::raw::c_long {
786 (self.VBVMR_SetParameterFloat)(szParamName, Value)
787 }
788 #[doc = "@brief Set a single string parameters .\n@param szParamName : Null Terminal ASCII String giving the name of the parameter (see parameters name table)\nexample:\nStrip[1].name\nStrip[0].device.mme\nBus[0].device.asio\n\n@param szString : zero terminal string.\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: unknown parameter\n"]
789 pub unsafe fn VBVMR_SetParameterStringA(
790 &self,
791 szParamName: *mut ::std::os::raw::c_char,
792 szString: *mut ::std::os::raw::c_char,
793 ) -> ::std::os::raw::c_long {
794 (self.VBVMR_SetParameterStringA)(szParamName, szString)
795 }
796 pub unsafe fn VBVMR_SetParameterStringW(
797 &self,
798 szParamName: *mut ::std::os::raw::c_char,
799 wszString: *mut ::std::os::raw::c_ushort,
800 ) -> ::std::os::raw::c_long {
801 (self.VBVMR_SetParameterStringW)(szParamName, wszString)
802 }
803 #[doc = "@brief Set one or several parameters by a script ( < 48 kB ).\n@param szParamName : Null Terminal ASCII String giving the script\n(script allows to change several parameters in the same time - SYNCHRO).\nPossible Instuction separators: ',' ';' or '\\n'(CR)\nEXAMPLE:\n\"Strip[0].gain = -6.0\nStrip[0].A1 = 0\nStrip[0].B1 = 1\nStrip[1].gain = -6.0\nStrip[2].gain = 0.0\nStrip[3].name = \"Skype Caller\" \"\n\n@return :\t 0: OK (no error).\n>0: number of line causing script error.\n-1: error\n-2: no server.\n-3: unexpected error\n-4: unexpected error"]
804 pub unsafe fn VBVMR_SetParameters(
805 &self,
806 szParamScript: *mut ::std::os::raw::c_char,
807 ) -> ::std::os::raw::c_long {
808 (self.VBVMR_SetParameters)(szParamScript)
809 }
810 pub unsafe fn VBVMR_SetParametersW(
811 &self,
812 szParamScript: *mut ::std::os::raw::c_ushort,
813 ) -> ::std::os::raw::c_long {
814 (self.VBVMR_SetParametersW)(szParamScript)
815 }
816 #[doc = "@brief Get number of Audio Output Device available on the system\n@return : return number of device found."]
817 pub unsafe fn VBVMR_Output_GetDeviceNumber(&self) -> ::std::os::raw::c_long {
818 (self.VBVMR_Output_GetDeviceNumber)()
819 }
820 #[doc = "@brief Return pointer on Output Device Descriptor according index\n@param zindex : zero based index\n@param nType : Pointer on 32bit long receiving the type (pointer can be NULL).\n@param szName : Pointer on string (256 char min) receiving the device name (pointer can be NULL).\n@param szHardwareId : Pointer on string (256 char min) receiving the hardware ID (pointer can be NULL).\n@return :\t 0: OK (no error)."]
821 pub unsafe fn VBVMR_Output_GetDeviceDescA(
822 &self,
823 zindex: ::std::os::raw::c_long,
824 nType: *mut ::std::os::raw::c_long,
825 szDeviceName: *mut ::std::os::raw::c_char,
826 szHardwareId: *mut ::std::os::raw::c_char,
827 ) -> ::std::os::raw::c_long {
828 (self.VBVMR_Output_GetDeviceDescA)(zindex, nType, szDeviceName, szHardwareId)
829 }
830 pub unsafe fn VBVMR_Output_GetDeviceDescW(
831 &self,
832 zindex: ::std::os::raw::c_long,
833 nType: *mut ::std::os::raw::c_long,
834 wszDeviceName: *mut ::std::os::raw::c_ushort,
835 wszHardwareId: *mut ::std::os::raw::c_ushort,
836 ) -> ::std::os::raw::c_long {
837 (self.VBVMR_Output_GetDeviceDescW)(zindex, nType, wszDeviceName, wszHardwareId)
838 }
839 #[doc = "@brief Get number of Audio Input Device available on the system\n@return : return number of device found."]
840 pub unsafe fn VBVMR_Input_GetDeviceNumber(&self) -> ::std::os::raw::c_long {
841 (self.VBVMR_Input_GetDeviceNumber)()
842 }
843 #[doc = "@brief Return pointer on Input Device Descriptor according index\n@param zindex : zero based index\n@param nType : Pointer on 32bit long receiving the type (pointer can be NULL).\n@param szName : Pointer on string (256 char min) receiving the device name (pointer can be NULL).\n@param szHardwareId : Pointer on string (256 char min) receiving the hardware ID (pointer can be NULL).\n@return :\t 0: OK (no error)."]
844 pub unsafe fn VBVMR_Input_GetDeviceDescA(
845 &self,
846 zindex: ::std::os::raw::c_long,
847 nType: *mut ::std::os::raw::c_long,
848 szDeviceName: *mut ::std::os::raw::c_char,
849 szHardwareId: *mut ::std::os::raw::c_char,
850 ) -> ::std::os::raw::c_long {
851 (self.VBVMR_Input_GetDeviceDescA)(zindex, nType, szDeviceName, szHardwareId)
852 }
853 pub unsafe fn VBVMR_Input_GetDeviceDescW(
854 &self,
855 zindex: ::std::os::raw::c_long,
856 nType: *mut ::std::os::raw::c_long,
857 wszDeviceName: *mut ::std::os::raw::c_ushort,
858 wszHardwareId: *mut ::std::os::raw::c_ushort,
859 ) -> ::std::os::raw::c_long {
860 (self.VBVMR_Input_GetDeviceDescW)(zindex, nType, wszDeviceName, wszHardwareId)
861 }
862 #[doc = "@brief register your audio callback function to receive real time audio buffer\nit's possible to register up to 3x different Audio Callback in the same application or in\n3x different applications. In the same application, this is possible because Voicemeeter\nprovides 3 kind of audio Streams:\n- AUDIO INPUT INSERT (to process all Voicemeeter inputs as insert)\n- AUDIO OUTPUT INSERT (to process all Voicemeeter BUS outputs as insert)\n- ALL AUDIO I/O (to process all Voicemeeter i/o).\nNote: a single callback can be used to receive the 3 possible audio streams.\n\n@param mode : callback type (main, input or bus output) see define below\n@param pCallback : Pointer on your callback function.\n@param lpUser : user pointer (pointer that will be passed in callback first argument).\n@param szClientName[64]: IN: Name of the application registering the Callback.\nOUT: Name of the application already registered.\n@return :\t 0: OK (no error).\n-1: error\n1: callback already registered (by another application)."]
863 pub unsafe fn VBVMR_AudioCallbackRegister(
864 &self,
865 mode: ::std::os::raw::c_long,
866 pCallback: T_VBVMR_VBAUDIOCALLBACK,
867 lpUser: *mut ::std::os::raw::c_void,
868 szClientName: *mut ::std::os::raw::c_char,
869 ) -> ::std::os::raw::c_long {
870 (self.VBVMR_AudioCallbackRegister)(mode, pCallback, lpUser, szClientName)
871 }
872 #[doc = "@brief\tStart / Stop Audio processing\n\nhe Callback will be called with\n@return :\t 0: OK (no error).\n-1: error\n-2: no callback registred."]
873 pub unsafe fn VBVMR_AudioCallbackStart(&self) -> ::std::os::raw::c_long {
874 (self.VBVMR_AudioCallbackStart)()
875 }
876 pub unsafe fn VBVMR_AudioCallbackStop(&self) -> ::std::os::raw::c_long {
877 (self.VBVMR_AudioCallbackStop)()
878 }
879 #[doc = "@brief unregister your callback to release voicemeeter virtual driver\n(this function will automatically call VBVMR_AudioCallbackStop() function)\n@param pCallback : Pointer on your callback function.\n@return :\t 0: OK (no error).\n-1: error\n1: callback already unregistered."]
880 pub unsafe fn VBVMR_AudioCallbackUnregister(&self) -> ::std::os::raw::c_long {
881 (self.VBVMR_AudioCallbackUnregister)()
882 }
883 #[doc = "@brief Check if Macro Buttons states changed.\nCall this function periodically (typically every 50 or 500ms) to know if something happen on MacroButton states .\n(this function must be called from one thread only)\n\n@return:\t 0: no new status.\n>0: last nu logical button status changed.\n-1: error (unexpected)\n-2: no server."]
884 pub unsafe fn VBVMR_MacroButton_IsDirty(&self) -> ::std::os::raw::c_long {
885 (self.VBVMR_MacroButton_IsDirty)()
886 }
887 #[doc = "@brief get current status of a given button.\n@param nuLogicalButton : button index: 0 to 79)\n@param pValue : Pointer on float (32bit float by reference) receiving the wanted value (0.0 = OFF / 1.0 = ON).\n@param bitmode: define what kind of value you want to read (see MACROBUTTON_MODE below)\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: unknown parameter\n-5: structure mismatch"]
888 pub unsafe fn VBVMR_MacroButton_GetStatus(
889 &self,
890 nuLogicalButton: ::std::os::raw::c_long,
891 pValue: *mut f32,
892 bitmode: ::std::os::raw::c_long,
893 ) -> ::std::os::raw::c_long {
894 (self.VBVMR_MacroButton_GetStatus)(nuLogicalButton, pValue, bitmode)
895 }
896 #[doc = "@brief set current button value.\n@param nuLogicalButton : button index: 0 to 79)\n@param fValue : float 32 bit value giving the status (0.0 = OFF / 1.0 = ON).\n@param bitmode: define what kind of value you want to write/modify (see MACROBUTTON_MODE below)\n@return :\t 0: OK (no error).\n-1: error\n-2: no server.\n-3: unknown parameter\n-5: structure mismatch"]
897 pub unsafe fn VBVMR_MacroButton_SetStatus(
898 &self,
899 nuLogicalButton: ::std::os::raw::c_long,
900 fValue: f32,
901 bitmode: ::std::os::raw::c_long,
902 ) -> ::std::os::raw::c_long {
903 (self.VBVMR_MacroButton_SetStatus)(nuLogicalButton, fValue, bitmode)
904 }
905}