#![allow(dead_code)]
use std::os::raw::{c_char, c_int};
#[repr(C)]
pub struct RackVST3Scanner {
_private: [u8; 0],
}
#[repr(C)]
pub struct RackVST3Plugin {
_private: [u8; 0],
}
#[repr(C)]
pub struct RackVST3Gui {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RackVST3PluginType {
Effect = 0,
Instrument = 1,
Analyzer = 2,
Spatial = 3,
Other = 4,
}
#[repr(C)]
#[derive(Clone)]
pub struct RackVST3PluginInfo {
pub name: [c_char; 256],
pub manufacturer: [c_char; 256],
pub path: [c_char; 1024],
pub unique_id: [c_char; 64],
pub version: u32,
pub plugin_type: RackVST3PluginType,
pub category: [c_char; 128],
}
#[repr(C)]
#[derive(Clone)]
pub struct RackVST3PresetInfo {
pub name: [c_char; 256],
pub preset_number: i32,
}
pub const RACK_VST3_OK: c_int = 0;
pub const RACK_VST3_ERROR_GENERIC: c_int = -1;
pub const RACK_VST3_ERROR_NOT_FOUND: c_int = -2;
pub const RACK_VST3_ERROR_INVALID_PARAM: c_int = -3;
pub const RACK_VST3_ERROR_NOT_INITIALIZED: c_int = -4;
pub const RACK_VST3_ERROR_LOAD_FAILED: c_int = -5;
pub const RACK_VST3_ERROR_NOT_SUPPORTED: c_int = -6;
extern "C" {
pub fn rack_vst3_scanner_new() -> *mut RackVST3Scanner;
pub fn rack_vst3_scanner_free(scanner: *mut RackVST3Scanner);
pub fn rack_vst3_scanner_add_path(scanner: *mut RackVST3Scanner, path: *const c_char) -> c_int;
pub fn rack_vst3_scanner_add_default_paths(scanner: *mut RackVST3Scanner) -> c_int;
pub fn rack_vst3_scanner_scan(
scanner: *mut RackVST3Scanner,
plugins: *mut RackVST3PluginInfo,
max_plugins: usize,
) -> c_int;
pub fn rack_vst3_plugin_new(path: *const c_char, uid: *const c_char) -> *mut RackVST3Plugin;
pub fn rack_vst3_plugin_free(plugin: *mut RackVST3Plugin);
pub fn rack_vst3_plugin_initialize(
plugin: *mut RackVST3Plugin,
sample_rate: f64,
max_block_size: u32,
) -> c_int;
pub fn rack_vst3_plugin_is_initialized(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_reset(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_get_input_channels(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_get_output_channels(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_process(
plugin: *mut RackVST3Plugin,
inputs: *const *const f32,
num_input_channels: u32,
outputs: *const *mut f32,
num_output_channels: u32,
frames: u32,
) -> c_int;
pub fn rack_vst3_plugin_parameter_count(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_get_parameter(
plugin: *mut RackVST3Plugin,
index: u32,
value: *mut f32,
) -> c_int;
pub fn rack_vst3_plugin_set_parameter(
plugin: *mut RackVST3Plugin,
index: u32,
value: f32,
) -> c_int;
pub fn rack_vst3_plugin_parameter_info(
plugin: *mut RackVST3Plugin,
index: u32,
name: *mut c_char,
name_size: usize,
min: *mut f32,
max: *mut f32,
default_value: *mut f32,
unit: *mut c_char,
unit_size: usize,
) -> c_int;
pub fn rack_vst3_plugin_get_preset_count(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_get_preset_info(
plugin: *mut RackVST3Plugin,
index: u32,
name: *mut c_char,
name_size: usize,
preset_number: *mut i32,
) -> c_int;
pub fn rack_vst3_plugin_load_preset(plugin: *mut RackVST3Plugin, preset_number: i32) -> c_int;
pub fn rack_vst3_plugin_get_state_size(plugin: *mut RackVST3Plugin) -> c_int;
pub fn rack_vst3_plugin_get_state(
plugin: *mut RackVST3Plugin,
data: *mut u8,
size: *mut usize,
) -> c_int;
pub fn rack_vst3_plugin_set_state(
plugin: *mut RackVST3Plugin,
data: *const u8,
size: usize,
) -> c_int;
pub fn rack_vst3_plugin_send_midi(
plugin: *mut RackVST3Plugin,
events: *const RackVST3MidiEvent,
event_count: u32,
) -> c_int;
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct RackVST3MidiEvent {
pub sample_offset: u32,
pub status: u8,
pub data1: u8,
pub data2: u8,
pub channel: u8,
}