Change of soundfont is cumbersome

• Oct 4, 2018 - 16:03
Reported version
P1 - High
Ergonomical (UX)
S5 - Suggestion

In the view->synthesizer->Fluid tab, soundfonts from the defined resource path can be added and removed to a list. The soundfont at the top of the list is used for playback.
Changing the order of the list is currently only possible with 'move up'/'move down' buttons. This is worsened by the reload of soundfont that musescore does every time the order changes.


Would like at the very least some sort of drag-and-drop system and a move-to-bottom button, the latter of which is possibly able to be implemented in Musescore 3 easily (though I don't think MS3 is being worked on anymore).

There is, however, already a move to top button, which there wasn't when this was opened. No move to bottom, true, but that actually seems a lot less important?

In reply to by Marc Sabatella

@Marc Sabatella You underestimate the importance of "move to bottom". When a soundfont gets added, it moves to the top by default. This can already screw up some soundfonts (that are admittedly not properly set up) such as those with percussion in banks that are not 128. Then you add on the fact that it takes processing time (as Musescore presumably reapplies every loaded soundfont) every time you adjust the list. So when you have a large amount of soundfonts, it takes forever for you to move a new one to the bottom (which you'll absolutely want to do if you, say, add a new instrument, or want to test it out without affecting other sounds).
Really, a drag-and-drop system is optimal, but if that is not achievable then a move to bottom button is at least necessary. Thank you for coming to my TED talk

Also, why is Frequency set to Few? This is applicable to everyone who uses soundfonts, which is a lot of users.

Only less than 6 people so far are bothered by it...
The vast majority of users use exactly one soundfont, the default one.
Some use the HQ one, instead.

In reply to by DaforLynx

Each time we try to move the new soundfont to the bottom of the list.
We do not write to the issue-tracker, thinking "There are more important bugs. There will be no one to deal with this".
But since someone made a "move to top" button, why didn't they make one "Move to bottom"?

Frequency Few Many

OK, with you we're now just over the threshold ;-)
Still waiting for a new PR though... i.e. someone to do the actual work

FWIW I agree that adding a soundfont should append it to the list, not move it to the top right away, that's what we have the 'Move to top' button for.

To get this right, what is wanted is:

  1. append an added soundfont to the list rather then putting it to the top right away
  2. have a 'move to bottom' button
  3. avoid the long delays when moving soundfonts

Did I get that right?

  1. and 2. seem the low hanging fruit, but 3. is a tough nut to crack I guess

In reply to by Jojo-Schmitz

For 3: You mean the delay that occurs during the reordering of the soundfont patch list that occurs when the soundfonts change places.
Can this be avoided, I don't know.

Suspicion: Normally patch names should be replaced in the list shown. But if the location of the sound fonts in the memory also changes, the problem may be caused by this. If the compression decompression algorithm is also working at the same time (such as reloading sf3's), delay cannot be avoided. (I'm speaking blindly. I don't know where the code for this is or how it works)

That sounds about right, @Jojo-Schmitz . It's possible the delay might even be caused by the fact that it's moved to the top, since it switches every sound in the mixer to the ones in the new soundfont list. If appended to bottom by default, perhaps any delay associated with this may be alleviated. However, I suspect that it'll still be slow on disk-based systems (like mine) and moving soundfonts will still be slow as well. But I think that's excusable as long as we don't have to maneuver soundfonts slowly down the list.

OK, I'm working on it.
Got the "move to bottom" buttons implemented/added for Fluid and Zerberus (not quite a fruit as low hanging as I thought)
Also, instead of appearing to hang when a soundfont gets moved, I've got a process indicator to show, similar to the one seen when adding a soundfont.

The other seemingly low hanging fruit of appending an added soundfont at the end rather then inserting it at the top doesn't seem low hanging at all...

I think for most people, inserting at top of the list is the expected behavior, certainly this was very deliberately. The most common case use is someone just wanting to install a new GM soundfont to replace the default. If the new one were appended to the end, it would seem nothing happened. Most people probably expect it to just work, no additional fiddling. They could be retrained, sure, but I'm not convinced it's a positive thing overall.

In reply to by Marc Sabatella

Depending on the use case, this may vary:
I have a basic soundfont that I use constantly.
Sometimes I would like to add an instrument that is not in the basic soundfont (or has a different tone). example: bouzouki, nay, breathy-sax, ovation-guitar, etc.
Since the setup of my basic arrangement is ready, I only need to make a change for the instrument I added.
But since the soundfont I just added changed the entire existing setup (making it pointless if it contains only one instrument), I have to put it at the bottom of the list. Thus, all old settings are preserved and only a new instrument is added to the setup.

@Ziya, I've had similar experiences but I think the average user will want to use their new sound font immediately. Those looking to do something more complicated will probably be able to understand how to move them down. The move to bottom will be a nice option. That's where I put my gong sound font so it wouldn't mess up any scores I've previously made.

Adding anything to any list always appends it to the end. Anything else is confusing.
This is a list (or pipe or queue, FIFO), not a stack (LIFO).

Here, with a sane default of MuseScore General, a General MIDI complete one, and the possibility that the added one is not GM, this even becomes vital, to not screw up playback

With my PR in its current state this is a bit easier though, add new soundfont, move to bottom (in one step), better than having to use move down multiple times, and have to wait for them all to get reloaded between every move and without any indication that something is happening.

An easy solution: one option to "replace" the top soundfont, and another option to "append" the soundfont (or "add") in the soundfont selection menu. Options!

"Add" should indeed append rather then insert at top IMHO. But that is not what some others expect it seems.
"Replace" would be another possible addition.

@Jojo-Schmitz I tried out your PR. While I'll admit I'm a bit disappointed that you couldn't get appending to the bottom working, the move to bottom button and progress bar make things a whole lot easier. One request, though: is there a way to let the user know (perhaps in the Status Bar at the bottom) when a soundfont is currently loading at any time? This would take care of the case where the user starts up Musescore and playback isn't working because the default soundfont is still loading, even though there's no indication of it. This would also provide some defense against the case when Load from Score crashes the program if you use it right after starting up.

Fix version