#[derive(Clone, Copy, Hash, Debug, Eq, PartialEq, Ord, PartialOrd)]
#[repr(u8)]
pub enum OscillatorType {
Sine = 0,
Square,
Sawtooth,
Triangle,
}
#[link(wasm_import_module = "qwac_audio")]
extern "C" {
pub fn create_oscillator_node(oscillator_type: OscillatorType) -> i32;
pub fn create_gain_node(gain: f32) -> i32;
pub fn create_delay_node(delay_time: f32, max_delay_time: f32) -> i32;
pub fn detune_param(audio_node: i32) -> i32;
pub fn frequency_param(audio_node: i32) -> i32;
pub fn gain_param(audio_node: i32) -> i32;
pub fn delay_time_param(audio_node: i32) -> i32;
pub fn param_cancel_and_hold_at_time(audio_param: i32, time: f32);
pub fn param_cancel_scheduled_values(audio_param: i32, time: f32);
pub fn param_set_value(audio_param: i32, value: f32);
pub fn param_set_value_at_time(audio_param: i32, value: f32, time: f32);
pub fn param_set_target_at_time(
audio_param: i32,
target: f32,
start_time: f32,
time_constant: f32,
);
pub fn param_linear_ramp_to_value_at_time(audio_param: i32, value: f32, end_time: f32);
pub fn param_exponential_ramp_to_value_at_time(audio_param: i32, value: f32, end_time: f32);
pub fn connect(source: i32, target: i32);
pub fn disconnect(source: i32, target: i32);
pub fn start(audio_node: i32, time: f32);
pub fn stop(audio_node: i32, time: f32);
pub fn drop(audio_slot: i32);
}