From 2b56f18fd8d224c16a6c7a660e08d623e1a11f06 Mon Sep 17 00:00:00 2001 From: MyBlackMIDIScore Date: Thu, 15 Aug 2024 18:30:37 +0300 Subject: [PATCH] Optimize program switching --- 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),