diff --git a/examples/common/vst3/plugin.cpp b/examples/common/vst3/plugin.cpp index 2a391a7..18bc203 100644 --- a/examples/common/vst3/plugin.cpp +++ b/examples/common/vst3/plugin.cpp @@ -246,10 +246,10 @@ tresult PLUGIN_API Plugin::process(ProcessData &data) { continue; switch (e.type) { case Event::kNoteOnEvent: - P_NOTE_ON(instance, e.noteOn.pitch, e.noteOn.velocity); + P_NOTE_ON(instance, e.noteOn.pitch, 127.f * e.noteOn.velocity); break; case Event::kNoteOffEvent: - P_NOTE_OFF(instance, e.noteOn.pitch); + P_NOTE_OFF(instance, e.noteOff.pitch); break; } } diff --git a/examples/synth_mono/src/bw_example_synth_mono.c b/examples/synth_mono/src/bw_example_synth_mono.c index 9f66509..da320e5 100644 --- a/examples/synth_mono/src/bw_example_synth_mono.c +++ b/examples/synth_mono/src/bw_example_synth_mono.c @@ -101,7 +101,7 @@ struct _bw_example_synth_mono { bw_osc_pulse_coeffs vco3_pulse_coeffs; bw_osc_tri_coeffs vco3_tri_coeffs; bw_vol_coeffs vco3_vol_coeffs; - bw_osc_filt_state osc_filt_state; + bw_osc_filt_state osc_filt_state; bw_noise_gen_coeffs noise_gen_coeffs; bw_pink_filt_coeffs pink_filt_coeffs; bw_pink_filt_state pink_filt_state; @@ -216,14 +216,17 @@ void bw_example_synth_mono_reset(bw_example_synth_mono instance) { bw_phase_gen_reset_state(&instance->vco1_phase_gen_coeffs, &instance->vco1_phase_gen_state, 0.f); bw_osc_pulse_reset_coeffs(&instance->vco1_pulse_coeffs); bw_osc_tri_reset_coeffs(&instance->vco1_tri_coeffs); + bw_vol_reset_coeffs(&instance->vco1_vol_coeffs); bw_phase_gen_reset_coeffs(&instance->vco2_phase_gen_coeffs); bw_phase_gen_reset_state(&instance->vco2_phase_gen_coeffs, &instance->vco2_phase_gen_state, 0.f); bw_osc_pulse_reset_coeffs(&instance->vco2_pulse_coeffs); bw_osc_tri_reset_coeffs(&instance->vco2_tri_coeffs); + bw_vol_reset_coeffs(&instance->vco2_vol_coeffs); bw_phase_gen_reset_coeffs(&instance->vco3_phase_gen_coeffs); bw_phase_gen_reset_state(&instance->vco3_phase_gen_coeffs, &instance->vco3_phase_gen_state, 0.f); bw_osc_pulse_reset_coeffs(&instance->vco3_pulse_coeffs); bw_osc_tri_reset_coeffs(&instance->vco3_tri_coeffs); + bw_vol_reset_coeffs(&instance->vco3_vol_coeffs); bw_osc_filt_reset_state(&instance->osc_filt_state); bw_pink_filt_reset_state(&instance->pink_filt_coeffs, &instance->pink_filt_state); bw_vol_reset_coeffs(&instance->noise_vol_coeffs); @@ -451,8 +454,12 @@ static void update_note_gate(bw_example_synth_mono instance) { } void bw_example_synth_mono_note_on(bw_example_synth_mono instance, char note, char velocity) { - instance->notes_pressed[note] = 1; - update_note_gate(instance); + if (velocity == 0) + bw_example_synth_mono_note_off(instance, note); + else { + instance->notes_pressed[note] = 1; + update_note_gate(instance); + } } void bw_example_synth_mono_note_off(bw_example_synth_mono instance, char note) { diff --git a/examples/synth_simple/src/bw_example_synth_simple.c b/examples/synth_simple/src/bw_example_synth_simple.c index d3ec91f..4aa1ae2 100644 --- a/examples/synth_simple/src/bw_example_synth_simple.c +++ b/examples/synth_simple/src/bw_example_synth_simple.c @@ -186,7 +186,10 @@ float bw_example_synth_simple_get_parameter(bw_example_synth_simple instance, in } void bw_example_synth_simple_note_on(bw_example_synth_simple instance, char note, char velocity) { - instance->note = note; + if (velocity == 0) + bw_example_synth_mono_note_off(instance, note); + else + instance->note = note; } void bw_example_synth_simple_note_off(bw_example_synth_simple instance, char note) {