From fb3c202c0a9df88bca37415dfb271cfbc378a63c Mon Sep 17 00:00:00 2001 From: Marc Sabatella Date: Mon, 22 Jun 2020 15:00:29 -0600 Subject: [PATCH] fix #307005: chord playback default not consistent Resolves: https://musescore.org/en/node/307005 Currently chord symbols playback is off by default controlled by a global program preference. This means a given user has to learn the feature exists before using it, which is not how we handle playback of dynamics, ornaments, etc. And worse, it means a user might turn it on, hear the chord playback, save and share a score that relies on it, but the people he sahres it with (including musescore.com) will not hear the chords unless they happen to have enabled the option. And musescore.com won't play it no matter what (or else, it will always play chords symbols for everyone, which isn't good either). This commit removes the preference and enables chord sytmbol playback according to the style setting and property on the chord symbol itself, which is exactly how it is done for ornaments etc. The style setting and property already existed, they were just being overridden by the program preference. --- global/settings/types/preferencekeys.h | 1 - libmscore/rendermidi.cpp | 2 +- mscore/musescore.cpp | 1 - mscore/preferences.cpp | 1 - mscore/prefsdialog.cpp | 1 - mscore/prefsdialog.ui | 23 +---------------------- mscore/seq.cpp | 2 +- 7 files changed, 3 insertions(+), 28 deletions(-) diff --git a/global/settings/types/preferencekeys.h b/global/settings/types/preferencekeys.h index b6ceb0a22da4e..b73d8f599dd09 100644 --- a/global/settings/types/preferencekeys.h +++ b/global/settings/types/preferencekeys.h @@ -103,7 +103,6 @@ #define PREF_IO_PORTMIDI_OUTPUTLATENCYMILLISECONDS "io/portMidi/outputLatencyMilliseconds" #define PREF_IO_PULSEAUDIO_USEPULSEAUDIO "io/pulseAudio/usePulseAudio" #define PREF_SCORE_CHORD_PLAYONADDNOTE "score/chord/playOnAddNote" -#define PREF_SCORE_HARMONY_PLAY "score/harmony/play" #define PREF_SCORE_HARMONY_PLAY_ONEDIT "score/harmony/play/onedit" #define PREF_SCORE_NOTE_PLAYONCLICK "score/note/playOnClick" #define PREF_SCORE_NOTE_DEFAULTPLAYDURATION "score/note/defaultPlayDuration" diff --git a/libmscore/rendermidi.cpp b/libmscore/rendermidi.cpp index b544adeceb89e..6eb9a59da2d6a 100644 --- a/libmscore/rendermidi.cpp +++ b/libmscore/rendermidi.cpp @@ -2162,7 +2162,7 @@ void Score::renderMidi(EventMap* events, bool metronome, bool expandRepeats, con masterScore()->setExpandRepeats(expandRepeats); MidiRenderer::Context ctx(synthState); ctx.metronome = metronome; - ctx.renderHarmony = preferences.getBool(PREF_SCORE_HARMONY_PLAY); + ctx.renderHarmony = true; MidiRenderer(this).renderScore(events, ctx); } diff --git a/mscore/musescore.cpp b/mscore/musescore.cpp index 110c808b78e10..3b3632fe6bbd2 100644 --- a/mscore/musescore.cpp +++ b/mscore/musescore.cpp @@ -4761,7 +4761,6 @@ void MuseScore::play(Element* e) const seq->startNoteTimer(MScore::defaultPlayDuration); } else if (e->isHarmony() - && preferences.getBool(PREF_SCORE_HARMONY_PLAY) && preferences.getBool(PREF_SCORE_HARMONY_PLAY_ONEDIT)) { seq->stopNotes(); Harmony* h = toHarmony(e); diff --git a/mscore/preferences.cpp b/mscore/preferences.cpp index 4d97971ec002c..b62f585583617 100644 --- a/mscore/preferences.cpp +++ b/mscore/preferences.cpp @@ -177,7 +177,6 @@ void Preferences::init(bool storeInMemoryOnly) {PREF_IO_PORTMIDI_OUTPUTLATENCYMILLISECONDS, new IntPreference(0)}, {PREF_IO_PULSEAUDIO_USEPULSEAUDIO, new BoolPreference(defaultUsePulseAudio, false)}, {PREF_SCORE_CHORD_PLAYONADDNOTE, new BoolPreference(true, false)}, - {PREF_SCORE_HARMONY_PLAY, new BoolPreference(false, false)}, {PREF_SCORE_HARMONY_PLAY_ONEDIT, new BoolPreference(true, false)}, {PREF_SCORE_NOTE_PLAYONCLICK, new BoolPreference(true, false)}, {PREF_SCORE_NOTE_DEFAULTPLAYDURATION, new IntPreference(300 /* ms */, false)}, diff --git a/mscore/prefsdialog.cpp b/mscore/prefsdialog.cpp index 7c91560ec6b34..d9ad52308e4d4 100644 --- a/mscore/prefsdialog.cpp +++ b/mscore/prefsdialog.cpp @@ -306,7 +306,6 @@ void PreferenceDialog::start() new IntPreferenceItem(PREF_IO_OSC_PORTNUMBER, oscPort), new BoolPreferenceItem(PREF_IO_OSC_USEREMOTECONTROL, oscServer), new BoolPreferenceItem(PREF_SCORE_CHORD_PLAYONADDNOTE, playChordOnAddNote), - new BoolPreferenceItem(PREF_SCORE_HARMONY_PLAY, playHarmony), new BoolPreferenceItem(PREF_SCORE_HARMONY_PLAY_ONEDIT, playHarmonyOnEdit), new IntPreferenceItem(PREF_SCORE_NOTE_DEFAULTPLAYDURATION, defaultPlayDuration), new BoolPreferenceItem(PREF_SCORE_NOTE_PLAYONCLICK, playNotes), diff --git a/mscore/prefsdialog.ui b/mscore/prefsdialog.ui index 0919e90b9dd03..3da4c4e38fbdb 100644 --- a/mscore/prefsdialog.ui +++ b/mscore/prefsdialog.ui @@ -1474,28 +1474,7 @@ - - - - - - - true - - - true - - - Play Chord Symbols - - - true - - - false - - - + Play chord symbol when editing diff --git a/mscore/seq.cpp b/mscore/seq.cpp index c237dd13d37d8..6762ea2d58ed2 100644 --- a/mscore/seq.cpp +++ b/mscore/seq.cpp @@ -1043,7 +1043,7 @@ void Seq::renderChunk(const MidiRenderer::Chunk& ch, EventMap* eventMap) SynthesizerState synState = mscore->synthesizerState(); MidiRenderer::Context ctx(synState); ctx.metronome = true; - ctx.renderHarmony = preferences.getBool(PREF_SCORE_HARMONY_PLAY); + ctx.renderHarmony = true; midi.renderChunk(ch, eventMap, ctx); renderEventsStatus.setOccupied(ch.utick1(), ch.utick2()); }