From 74c64270c34b268c6f9cab37b7132e60d1303325 Mon Sep 17 00:00:00 2001 From: MBMS <31241793+MyBlackMIDIScore@users.noreply.github.com> Date: Fri, 16 Aug 2024 10:50:36 +0300 Subject: [PATCH] Optimize program switching (#89) --- core/src/channel/mod.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/core/src/channel/mod.rs b/core/src/channel/mod.rs index 1a8bb26..67fa4b9 100644 --- a/core/src/channel/mod.rs +++ b/core/src/channel/mod.rs @@ -288,6 +288,10 @@ impl VoiceChannel { key.data.render_to(&mut key.audio_cache); } + self.params + .channel_sf + .change_program(self.control_event_data.bank, self.control_event_data.preset); + out.fill(0.0); match self.threadpool.as_ref() { Some(pool) => { @@ -336,10 +340,6 @@ impl VoiceChannel { // Bank select if !self.options.drums_only { self.control_event_data.bank = value; - self.params.channel_sf.change_program( - self.control_event_data.bank, - self.control_event_data.preset, - ); } } 0x64 => { @@ -570,10 +570,6 @@ impl VoiceChannel { } ChannelAudioEvent::ProgramChange(preset) => { self.control_event_data.preset = preset; - self.params.channel_sf.change_program( - self.control_event_data.bank, - self.control_event_data.preset, - ); } }, ChannelEvent::Config(config) => self.params.process_config_event(config),