Skip to content

Commit d050fb0

Browse files
committed
Fixed an issue with audio export on MS_Basic
1 parent 85598a7 commit d050fb0

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/framework/audio/internal/synthesizers/fluidsynth/fluidsynth.cpp

+10-2
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ void FluidSynth::setupSound(const PlaybackSetupData& setupData)
254254

255255
fluid_synth_activate_key_tuning(m_fluid->synth, 0, 0, "standard", NULL, true);
256256

257-
m_sequencer.channelAdded().onReceive(this, [this](const midi::channel_t channelIdx, const midi::Program& program) {
257+
auto setupChannel = [this](const midi::channel_t channelIdx, const midi::Program& program) {
258258
fluid_synth_set_interp_method(m_fluid->synth, channelIdx, FLUID_INTERP_DEFAULT);
259259
fluid_synth_pitch_wheel_sens(m_fluid->synth, channelIdx, 24);
260260
fluid_synth_bank_select(m_fluid->synth, channelIdx, program.bank);
@@ -264,9 +264,17 @@ void FluidSynth::setupSound(const PlaybackSetupData& setupData)
264264
fluid_synth_set_portamento_mode(m_fluid->synth, channelIdx, FLUID_CHANNEL_PORTAMENTO_MODE_EACH_NOTE);
265265
fluid_synth_set_legato_mode(m_fluid->synth, channelIdx, FLUID_CHANNEL_LEGATO_MODE_RETRIGGER);
266266
fluid_synth_activate_tuning(m_fluid->synth, channelIdx, 0, 0, 0);
267-
});
267+
};
268268

269+
m_sequencer.channelAdded().onReceive(this, setupChannel);
269270
m_sequencer.init(setupData);
271+
272+
for (const auto& voice : m_sequencer.channels().data()) {
273+
for (const auto& pair : voice.second) {
274+
const ChannelMap::ChannelMapping& channelMapping = pair.second;
275+
setupChannel(channelMapping.first, channelMapping.second);
276+
}
277+
}
270278
}
271279

272280
void FluidSynth::setupEvents(const mpe::PlaybackData& playbackData)

src/framework/audio/internal/synthesizers/fluidsynth/soundmapping.h

+5
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,11 @@ struct ChannelMap {
10701070
return mapping.find(key) != mapping.cend();
10711071
}
10721072

1073+
const std::map<mpe::voice_layer_idx_t, VoiceMappings>& data() const
1074+
{
1075+
return m_data;
1076+
}
1077+
10731078
async::Channel<midi::channel_t, midi::Program> channelAdded;
10741079

10751080
private:

0 commit comments

Comments
 (0)