Soundfonts, new instruments, channels and Synthesiser and Mixer configuration

• Feb 6, 2016 - 02:26

Well, for test I created new instrument, namely I
1. Opened FluidR3Mono_GM.sf3 in Polyphonу and saved it as FluidR3Mono_TEST.sf2
2. Created in FluidR3Mono_TEST.sf2 new instrument with "T-E-S-T" name and preset with "T-E-S-T" name (ID 001:000)
3. Binded few existing samples to new instrument at different key ranges and instrument to preset
4. Created new_instruments.xml with only instrument "T-E-S-T" in keyboard group - in fact the copy of "grand piano" but with different names
5. Set MS preferences
- "Instrument list 2" in Score tab - as new_instunments.xml
- added folder where FluidR3Mono_TEST.sf2 is placed to "soundfont folders" of General tab

Now I can create score with new instrument but after creating the score I need
6. add to Synthesiser new FluidR3Mono_TEST.sf2 and "save to score" this configuration

Also ... to play the sound I wish
7. I should set manually "T-E-S-T" preset (as I understand this is "channel's program value") for each "T-E-S-T" staff in Mixer, because I don't know right way to set "001:000" program value in new_instruments.xml

May be I don't understand instruments.xml structure, but
Q1. is there a way to get to play scores with new instruments without "Mixer manipulation" (7)?
and
Q2. Why should we "load from score" Synthesiser configuration each time we load MuseScore and score with new instrument? This means that we can't play scores right without some "special knowledge" - to load or not to load! Isn't it?
And why not to load configuration automatically from score as for Mixer conf.? (feature request)

Q3. And the last - is my workflow for working with new instrument good enough ? It doesn't look optimal.

Attachment Size
Poly_preset.JPG 16.33 KB
MS_Synth1.JPG 40.67 KB

Comments

I'm not sure I understand what you are asking here. What is your point in modifying the soundfont, and what modifications are you making? Same questionn for the instrument list? And same question regarding the "mixer manipulation"?

Regarding your second question, though, that's easy. The reason custom soundfont configurations aren't loaded each time you load a score is that these changes are global - they affect all scores. So if loading a score automatically changed the soundfonts, this would affect playback of other currently-open scores, which msot people would find surprising. The possibility of having MuseScore automatically switch between soundfonts each time you switched scores - so each score would play with its own soundfont - was considere,d but since loading a soundfont is potentially a slow operation, this also would not be nice in msot cases.

In reply to by Marc Sabatella

Thank you, Marc!
With Q2 your answer is clear: "changes are global - they affect all scores. So if loading a score automatically changed the soundfonts, this would affect playback of other currently-open scores, which msot people would find surprising"
And this is bad, of course, for multiuser system. But in case of single user configuration - will You be surprised if for Your scores Your soundfonts will be loaded? (as if at next MS start the last session will be continued)
So as I mentioned before it was just "feature request" - may be it will be useful to add one more preference such as "auto load synthesiser configuration" - as it done automatically for Mixer configuration.

Now with Q1. Let's leave aside new soundfonts and use only standard one. Why not to add possibility to set for Instrument not just "program value" but also "preset Id" - to avoid p.7 in the workflow? In my opinion it will be small, simple but logical complement.

And now the answer to your question: "What is your point in modifying the soundfont, and what modifications are you making?" - Simple, I just want to create new instrument and use it in right and easy way.

In reply to by straannick

I think you've misunderstood how the instruments.xml file works.

The &ltprogram&gt tag is the preset id.

All the sound selection info is placed between &ltChannel&gt tags....

&ltChannel&gt
&ltcontroller ctrl="0" value="1"/&bt
&ltprogram value="0"/&gt
&lt/Channel&gt

This Channel section is from the Drumset definition. It is using the Bank Select MSB (#0) with a value of 1 (=128) to set the Bank as percussion with a program change of #0 (Standard Drumkit) in the next line.

So you can use this to set sounds directly for the instrument from any bank or program in the soundfont at the top of the list in your synthesiser page.

IMO it less faff to just change it in the mixer :)

HTH

In reply to by ChurchOrganist

Thank you, ChurchOrganist, yes I was unaware about controller parameter, because I'm not specialist in MIDI and used https://musescore.org/en/node/15803 as user guide. I also know that "A preset is identified by a preset number and bank number, this combination being unique and adjustable above the table. Each bank comprises 127 presets." (Polyphone help)
But now another surprise for me - I see recommended <Instrument id="drumset"> in instruments.xml but doesn't see "drumset" neither in the instrument list nor in the preset list of FluidR3Mono_GM.sf3! And I see now many such cases.
Q4.So which parameters connect "drumset" with presets of soundfont?
Is it "stafftype" and where can I find description of this parameter?
And which parameter connects "grand-piano" to Yamaha preset (no stafftype in grand-piano)?

Another example: <Instrument id="cymbal"> with two ctrl value
<Channel>
<controller ctrl="0" value="1"/>
<program value="0"/>
<controller ctrl="10" value="60"/>
</Channel>
I can't understand for now what do two controllers mean.
Q5.Can you give me a link for more information about Channel settings? (I suppose "How to edit or create a new instrumen" article is too old and incomplete)

And now let's see at the picture, please.
Q6.Can you tell me what channel configuration should I set for T-E-S-T instrument to play
a) as T-E-S-T preset (001:000)
б) as Church Bell preset (008:014)

Attachment Size
Poly_instr_pres.JPG 88.43 KB

In reply to by straannick

It seems to me that you should start at the beginning and learn about the MIDI protocol then look at General MIDI and it's patch changes and controllers.

This Wikipedia article should start you off, and gives links to the articles on General MIDI and its offshoots.....
https://en.wikipedia.org/wiki/MIDI

This should help you to understand what is going on.

In answer to your first question , that block of xml first of all sets the Bank to 128 (controller #0 is Bank MSB) which means that the instrument is a drumkit (or drumset in MuseScore terminology).
It then sets the patch to #0 (Standard). Strictly speaking there should also be a controller 32 value to set the Bank LSB to #0 in case it is not non zero.

The last line in the block before the closing tag is to set the pan position to #60 (which is just left of centre).

So to set your T-E-S-T sound you would use the following block

<Channel>
   <controller ctrl="0" value="0"/>
   <controller ctrl="32" value="1"/>
   <program value="0"/>
</Channel>

and for Church Bell........

<Channel>
   <controller ctrl="0" value="0"/>
   <controller ctrl="32" value="8"/>
   <program value="14"/>
</Channel>

HTH

In reply to by straannick

I think also you misunderstood my answer to #2. It's not a multi-user environment I was talking about. It is a single user enviroment, but in which you have several scores open at once in different tabs. The way MuseScore works now, if you change soundfont, it affects *all* scores. So if we automatically changed soundfonts where you loaded a new score, then you would find that loading a new score changed the sound of the scores you already had open in other tabs. Most people would not like that, I think. But if we changed MuseScore so that each score used its own soundfonts, that would mean every time you switched tabs, MuseScore would need to load the appropriate soundfonts, so simply switching tabs could suddenly become a very slow operation. Most people wouldn't like that either. So while it isn't ideal, that is why things are the way they are.

In reply to by Marc Sabatella

I understand you right, Mark, and multiuser was just for example. And then I thought about only one SF with some new instruments :-) But if people usually use many different soundfons for different scores - you are definitely right. And at this point knowledge about standard workflow is important.

Do you still have an unanswered question? Please log in first to post your question.