diff --git a/src/app/qml/midiplayer/MidiPlayer.qml b/src/app/qml/midiplayer/MidiPlayer.qml --- a/src/app/qml/midiplayer/MidiPlayer.qml +++ b/src/app/qml/midiplayer/MidiPlayer.qml @@ -71,7 +71,7 @@ text: i18n("Pitch: %1").arg(Math.round(pitch)) } } - } + } Item { id: item1 @@ -135,7 +135,7 @@ source: "../images/multimedia-volume.png" tooltipText: "Volume (%)" - maximumValue: 200; value: 100 + maximumValue: 200; minimumValue: 50; value: 100 } } } diff --git a/src/plugins/fluidsynthsoundbackend/fluidsynthsoundbackend.cpp b/src/plugins/fluidsynthsoundbackend/fluidsynthsoundbackend.cpp --- a/src/plugins/fluidsynthsoundbackend/fluidsynthsoundbackend.cpp +++ b/src/plugins/fluidsynthsoundbackend/fluidsynthsoundbackend.cpp @@ -45,6 +45,8 @@ m_synth = new_fluid_synth(m_settings); + fluid_synth_cc(m_synth, 1, 100, 0); + int fluid_res = fluid_synth_sfload(m_synth, QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("soundfonts/GeneralUser-v1.47.sf2")).toLatin1(), 1); if (fluid_res == FLUID_FAILED) qDebug() << "Error when loading soundfont!"; @@ -61,17 +63,22 @@ void FluidSynthSoundBackend::setPitch(qint8 pitch) { - Q_UNUSED(pitch); + m_pitch = pitch; + fluid_synth_cc(m_synth, 1, 101, 0); + fluid_synth_cc(m_synth, 1, 6, 12); + float accurate_pitch = (m_pitch + 12) * (2.0 / 3) * 1024; + fluid_synth_pitch_bend(m_synth, 1, qMin(qRound(accurate_pitch), 16 * 1024 - 1)); } void FluidSynthSoundBackend::setVolume(quint8 volume) { - Q_UNUSED(volume); + m_volume = volume; + fluid_synth_cc(m_synth, 1, 7, m_volume * 127 / 200); } void FluidSynthSoundBackend::setTempo (quint8 tempo) { - Q_UNUSED(tempo); + m_tempo = tempo; } void FluidSynthSoundBackend::prepareFromExerciseOptions(QJsonArray selectedExerciseOptions)