Chord symbol playback: better defaults

• Mar 22, 2020 - 16:20
Reported version
3.x-dev
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
Yes
Workaround
Yes
Project

Chord symbols playing back by default makes existing scores sound different after that feature vs. before it.

Possible workarounds (and solutions):

  • Disable the "Play" property for chord symbols in Inspector (by default, maybe only for old scores, not for ones created with the new MuseScore version)
  • Mute the 'harmony' channel in Mixer (by default)
  • Disable Preferences > Note Input > Play chord symbols (by default)
  • Make the above "Play chord symbols" a per score setting

Comments

Actually, they don't play back "by default", you need to turn on a Edit / Preferences / Note Input / Play Harmony. But I'd personally rather that not be needed - I'm not comfortable with a given score playing back differently on different systems for no good obvious reason. On the other hand, I do agree existing scores should not have their playback affected.

So to me, the solution is to eliminate the preference (or at least have it default to true, maybe hide it in Advanced to make people less likely to mess with it), but have the style setting default to false. At least for existing scores. New scores could arguably get it set to true, although there is no "clean" way to make a style default differ for old vs new scores (without a format version change, anyhow). There are, however, some hacky solutions I would not object to.

Muting the harmony channel is an interesting thought. This channel is managed automatically, created on the fly when chord symbols are present. Right now I can't think of a good way to get the effect of muting for existing scores, not for new scores. Unless, hmm, maybe we modify instruments.xml to add some new global tag to control the muting of the harmony channel? So existing scores would lack that tag, new scores would get it. Yes, maybe that's the best solution.

BTW, the style setting for play harmony is currently not exposed in Format / Style / Chord Symbols, but should be. Right now it's only controlled by "Set as style" in the Inspector.

Title Chord symbol playback: chord symbols play back by default Chord symbol playback: better defaults

Title was misleading, they are actually off by default (and I agree they should stay that way at least for existing scores).

Well, the global setting may be off by default, but there is none for the scores themselves, so no way to leave it off for existing scores, but on for new ones.

Exactly. That’s why I like your channel idea. If you could add a line to instruments.xml. If we can add a global tag muting the channel by default, that would solve the implementation issue. Then it would be a matter of how to make it easy to discover how to enable it. Maybe add new “Piano (with chord symbol playback)” instruments that explicitly enable it? Certainly the jazz templates could enable it by default. Not sure, will be good to get user feedback during a beta.

instruments.xml is only ever used for new scores, so won't help changing the default for old ones

Unless we change the default for old ones at the same time that is, make sure that entry in instruments.xml enables it for new ones and change all the templates we want chord symbol playback for by default.

Sound is another issue, for a vocal staff with chord symbols I certainly don't want 'choir aahs' singing the chord, but either piano or guitar or maybe organ, depending on genre. Piano being the save bet I guess.
Yet another is rhythm, would be nice to have the chords play as per 'rhythmic slash notation'

Right, I think misspoke in my previous response. It's actually that instruments.xml should enable the chord symbol channel, but "default" it would be muted. So only scores created with the new instruments.xml would have it enabled by default. That then solves the problem of how to expose this - we don't need to. Not sure what I was thinking this morning, I knew the idea originally made more sense than what was coming out.

And yes, choosing an appropriate playback sound for this channel came up in chat, and this is actually the perfect way to address that too. What if, the chord symbol channel was muted by default as far as the code is concerned, but there were global tags in the instruments.xml that both unmuted it and set the sound for that channel to a reasonable default (eg, piano or guitar)? Like:

<chordSymbolChannel>
<mute>0</mute>
<program>0</program>
</chordSymbolChannel>

or something like that, where mute defaults to 1, and like articulations, you can override this on an instrument basis, so guitar instruments could be set to default the sound to themselves.

The chords generated for playback are not possible on the guitar at all. So, IMV, the Piano is the obvious default instrument.

As far as I can all but C and D chords are playable on Guitar (at least the pitches are available). But yes, having that octave below root an octave higher might be better for Guitar.
Or having the instrument's range being taken into consideration for the realization.
Still wouldn't be the 'standard' guitar chord fingering though.

The playback makes no assumption about what the instrument is, or indeed that it’s only one instrument. You could think of it as bass + guitar if you like. Or a string section. Or piano, or whatever.

To me, defaulting to same instrument is as good as anything given it’s easier enough to override, but if we have to pick a single other instrument to use, piano makes the most sense I think.

Much more important is to figure out how to avoid needing to is a preference.

Ok, seems there is more to it: chord symbol playback is ok if seen as gultar and bass or as piano, but chord realization is not, as it is isn't realizationable given the instrument.

I don't see the distinction. Whether wer'e talking real-time playback or realizing the chord so you can then edit it, the same principle apply: we aren't trying to second guess what instrument or instruments you might want to play for, we are simply creating good voicings you can do as you want with.

For the record, the preference is gone now, we realized it led to inconsistent results between one user and another for the same score, or between your local system and musescore.com. So it needs to be controlled by score properties only - the style setting and/or harmony channel.

Regarding compatibility, after much discussion, we have tentatively decided to simply use piano as the default playback sound, but keep it enabled for older scores. Too much hackery involved in trying to have different behavior for 3.0-3.4.2 scores versus 3.5 scores, and too much missed opportunity by not allow lead sheets created within the past year and a half to play chords automatically.

Having playback sound as piano should lessen concerns about it being too surprising to suddenly hear chord symbols playback, and in any case, turning off playback is now a matter of unchecking Play in the Inspector and hitting set as style. Or muting the harmony channel if you prefer. But the Inspector is the same as you'd use for ornaments etc, so it feels consistent.

So, here's the PR to set the default sound to piano : https://github.com/musescore/MuseScore/pull/6268

With the previous change to remove the preference (see #307005: Chord symbol playback enabled for one user not enabled by another) and this, I would like to consider this particular closed. It was probably too general to begin with, If there are further changes people would like to request - like making guitar instruments & templates default to guitar for chord symbol playback, which is reasonable if not exactly a no-brainer (I can see arguments against this too) - let's do that in separate issues.

Status PR created fixed

Fixed in branch 3.x, commit 22a4d68bee

_fix #302710: change default for harmony channel to piano

Resolves: https://musescore.org/en/node/302710

Chord symbols current play back using the sound of the staff
to which they are attached.
This makes perfect sense for instruments that normally play chords,
but is not expected when chords are attached to vocal or other staves.
Unfortunately it's not really possible for MuseScore
to know what sounds are actually being used,
and it would be difficult to decide on which instruments
should use their own sound versus a default.
So this change just arbitrarily sets the default harmony channel
to MIDI program 0, which is piano in general midi soundfonts.

It's still possible for individual socres or templates to override this,
and overrides can also be programmers into instruments.xml.
A potential downside of doing so is that the harony channel
would then be created even before chord symbols are present.
That's not necessarily a problem, but to me it's something
to worry about later._

In reply to by Marc Sabatella

Mark
Your first sentence does not match my experience. I did the most recent upgrade, chose nothing and I've got the chord playback. Can you please, in plain English from the beginning - not starting at some midpoint that I can't find - give me a way to turn off playback of chord symbols. Preferably at system level and not for each score. THANKS

1) click any chord symbol
2) uncheck Play in the Inspector
3) click “Set as style” button (“S” icon

That sets it for that score. If you want to reuse those settings for other scores, easiest is to save you score to your Templates folder and then select it when creating new scores.

After several weeks of study of this problem, including making tools that tabulated all my scores that had chord symbols, in MS2 and MS3, and evaluating which I even cared about, it took me maybe a couple of hours to simply load the ones that did into MS3.5, click a chord and style-set, and save back to disk and online. A handful had to be MS2->MS3 upgraded. Before Marc invented Campania, I often used chord symbols for ad-hoc roman analysis, and that made the problem easier (as the chord player-backer doesn't recognize them, and I could put them into Campania trivially once there). Again, what was interesting is the couple of cases where it was a hard decision to disable the piano playing the analysis, because it actually sounded good. I did not have to built tools to effect the changes, or run a .mss.

For the record, I just discovered all my scores on-line have been playing back chords as per my chord symbols. Another user pointed this out. Of course, all my arrangements sounded distorted (one could argue that my notation should have been more precise). I have been using an old version of MuseScore without this function so I was unaware that I was posting a score that would have this chord symbol playback function enabled when the score was played on-line. I'm totally ticked off that people would have played this distorted version. Surely there is some procedure in Musescore release control that can warn people that you are introducing a software change that will affect all scores. Maybe that warning existed and I missed it. I apologize if this is not the proper place to vent.

There are release notes included with each update. If you use the update software option from inside the program you have the opportunity to read them, but finding them in the forum is probably a better place to be able to read them carefully and test the results while using the program. For example, the 3.5 release announcement is found at https://musescore.org/en/3.5 and includes links to more detailed release notes.

In reply to by mike320

I don't think it described that well-functioning scores just sitting there on the site would get wrecked, and what you had to do to fix it. And if the user didn't necessarily upgrade or want to upgrade, why should he or she suspect that that would happen, or that he or she had better read the release notes of a version he or she isnt upgrading to?

Reading the announcement closely I see the wrong info about chord playback. The forums are full of helpful and knowledgeable people willing to help with problems or questions you have.

In reply to by mike320

As I look at the release notes, the default status of chord playback function is suppose to be disabled. I didn't find this to be the case and I had to correct all scores and update on-line versions. I don't recall seeing any notifications for new releases since I joined. What is the mechanism for new release notification? Is there some preference I need to set to get these alerts?

The program will tell you that there is an update if you open the Menu Edit->Preferences under the Update tab there is a checkbox that says Check for new version of MuseScore. In the next release there will be a global preference for playing back chord symbols as explained earlier in this issue.

In reply to by mike320

I have always had the box checked(Check for new version of MuseScore). I don't recall seeing any notifications. Even though I am usually religious about staying on current releases, I guess i missed them. Anyway, I love the software and the support I get from you. Thanks for taking the time to respond.

Can you clarify the approximate date that the playback software for my scores saved on-line changed to play back chords? I'm thinking of contacting the users that have tagged my arrangements as a favourite and alerting them to the issue. It may be that the conflict between chord symbols and actual chord voicing in the arrangement is not detectable to the average listener.

Fix version
3.5.0