From 65bfdab956a96e39089301eab5bd8d2e91558abc Mon Sep 17 00:00:00 2001 From: Manolo Carrasco Date: Mon, 10 Nov 2025 12:25:18 +0100 Subject: [PATCH] Fix tremolo articulation mapping for individual string instruments Only the *_SECTION variants had tremolo entries, so violin, viola, violoncello and contrabass fell back to the default arco sound with SF2 soundfonts. Fixes: #21122 --- .../synthesizers/fluidsynth/soundmapping.h | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/framework/audio/engine/internal/synthesizers/fluidsynth/soundmapping.h b/src/framework/audio/engine/internal/synthesizers/fluidsynth/soundmapping.h index c3bd2ee809e6b..a00533dde0669 100644 --- a/src/framework/audio/engine/internal/synthesizers/fluidsynth/soundmapping.h +++ b/src/framework/audio/engine/internal/synthesizers/fluidsynth/soundmapping.h @@ -944,7 +944,11 @@ inline const ArticulationMapping& articulationSounds(const mpe::PlaybackSetupDat { mpe::ArticulationType::SnapPizzicato, midi::Program(20, 45) }, { mpe::ArticulationType::Pizzicato, midi::Program(20, 45) }, { mpe::ArticulationType::PalmMute, midi::Program(20, 45) }, - { mpe::ArticulationType::Mute, midi::Program(20, 40) } + { mpe::ArticulationType::Mute, midi::Program(20, 40) }, + { mpe::ArticulationType::Tremolo8th, midi::Program(20, 44) }, + { mpe::ArticulationType::Tremolo16th, midi::Program(20, 44) }, + { mpe::ArticulationType::Tremolo32nd, midi::Program(20, 44) }, + { mpe::ArticulationType::Tremolo64th, midi::Program(20, 44) }, }; static const ArticulationMapping VIOLA_SECTION = { @@ -962,7 +966,11 @@ inline const ArticulationMapping& articulationSounds(const mpe::PlaybackSetupDat { mpe::ArticulationType::SnapPizzicato, midi::Program(30, 45) }, { mpe::ArticulationType::Pizzicato, midi::Program(30, 45) }, { mpe::ArticulationType::PalmMute, midi::Program(30, 45) }, - { mpe::ArticulationType::Mute, midi::Program(30, 41) } + { mpe::ArticulationType::Mute, midi::Program(30, 41) }, + { mpe::ArticulationType::Tremolo8th, midi::Program(30, 44) }, + { mpe::ArticulationType::Tremolo16th, midi::Program(30, 44) }, + { mpe::ArticulationType::Tremolo32nd, midi::Program(30, 44) }, + { mpe::ArticulationType::Tremolo64th, midi::Program(30, 44) }, }; static const ArticulationMapping VIOLONCELLO_SECTION = { @@ -980,7 +988,11 @@ inline const ArticulationMapping& articulationSounds(const mpe::PlaybackSetupDat { mpe::ArticulationType::SnapPizzicato, midi::Program(40, 45) }, { mpe::ArticulationType::Pizzicato, midi::Program(40, 45) }, { mpe::ArticulationType::PalmMute, midi::Program(40, 45) }, - { mpe::ArticulationType::Mute, midi::Program(40, 49) } + { mpe::ArticulationType::Mute, midi::Program(40, 49) }, + { mpe::ArticulationType::Tremolo8th, midi::Program(40, 44) }, + { mpe::ArticulationType::Tremolo16th, midi::Program(40, 44) }, + { mpe::ArticulationType::Tremolo32nd, midi::Program(40, 44) }, + { mpe::ArticulationType::Tremolo64th, midi::Program(40, 44) }, }; static const ArticulationMapping CONTRABASS_SECTION = { @@ -999,6 +1011,10 @@ inline const ArticulationMapping& articulationSounds(const mpe::PlaybackSetupDat { mpe::ArticulationType::Pizzicato, midi::Program(50, 45) }, { mpe::ArticulationType::PalmMute, midi::Program(50, 45) }, { mpe::ArticulationType::Mute, midi::Program(50, 43) }, + { mpe::ArticulationType::Tremolo8th, midi::Program(50, 44) }, + { mpe::ArticulationType::Tremolo16th, midi::Program(50, 44) }, + { mpe::ArticulationType::Tremolo32nd, midi::Program(50, 44) }, + { mpe::ArticulationType::Tremolo64th, midi::Program(50, 44) }, }; static const ArticulationMapping BRASS = {