Skip to main content
Topic: Elementary question - complicated answer? (Read 2390 times) previous topic - next topic

Elementary question - complicated answer?

Hello all,

Given I have been a moderately frequent user of Noteworthy over the last 20 years at least, you may find this request for information a little surprising...!

I'm embarking on a new transcription (Elgar's Introduction and Allegro for string quartet and string orchestra, since you ask), and setting up the 13 necessary staves for the various instruments.  Yesterday I set one stave to produce the instrument I wanted, using the Predefined Instruments button, and experimented with playing some random notes - not the right sound.  I then ticked the Send Patch button - no change.  When I then changed the instrument (and maybe back again), a patch number appeared and the sound was then correct.  This (puzzlingly) stayed correct even if I subsequently unticked the button...

In the past I don't remember ever finding this a problem: I've always used a 'standard' Play Back Device - for years the Microsoft thing, now, much more satisfactorily, VirtualMIDISynth from Coolsoft. [Is 'Play Back Device' saying exactly the same thing as 'Soundfont', by the way?] What I have never had to do was investigate the correct patch numbers from a 'Play Back Device' and manually choose them - I've always used Predefined Instruments.

What baffles me is that I can find no reference in any Noteworthy documentation to the correct use of the Send Patch button, nor any definitive guidance anywhere in the Forum.  As with other issues, in 'the community' (which I have always found to be very helpful) there seems to be an assumption that everyone (of course) understands everything up to a certain level, beneath which one will never need to sink to pick up the slow learners or those who need to know the very basics.

I downloaded from the Scriptorium the document called cool_instruction.pdf which admirably constitutes a tutorial in setting up a soundfont and gives enough suggestions of playing around to instill a reasonable working knowledge - whilst still stopping short of explaining what happens if you a) do, and b) do not, use the Send Patch button.  When it moves on to the Select Bank stuff, it loses me - but maybe I don't need to know for my purposes...

Apart from my main request above, I could do with understanding the 'line of command' from Instrument Selection all the way to what the MIDI in my laptop actually acts upon - and the various options for settings along the way that should make it happen.

Hoping no-one will spend hours creating a Lesson Plan for this enthusiastic but somewhat foggy Noteworthy user - but may post some quick pointers to help me on my way.

Many thanks in advance!

Jonathan Norris
Jonathan Norris

Re: Elementary question - complicated answer?

Reply #1
A very very very reasonable request - however ... ... (a) it is, again and again, hard work to set up an audio rendering pipeline - then, suddenly, everything works - and one instantly loses every inclination to write down what went wrong and why it works now; and (b), everyone has his or her own pet tool landscape, and many try to describe or, on the other side, want to only understand it for their environment: So, a times b times c ... descriptions (a: number of MIDI connectos; b: number of rendering engines; c: number of sound fonts/instruments etc.etc.) want to be written and read. That, of course, never happens.

Ok, after that general whining, I think I want to try a little what's happening with that patch thingy ... exactly because I do not understand it also (but ... it works ... hm).

H.M.

Re: Elementary question - complicated answer?

Reply #2
Here is high level attempt to start(!) to answer your question(s) - and maybe reveal that I myself do not yet understand many aspects  ::) .

In the attachment, there is a diagram that shows some important objects.

On the left, there are a few NWC staves, with assigned MIDI channels. Multiple staves can send to the same MIDI channel - typically if they "are" the same instrument (e.g. left and right hand of piano). Often, one does that if the channels just sound the same (e.g. soprano and alto of a choir), but this limits more advanced possibilities (like having differing volumes of the sopranos and altos).

On the right, there is a "Playback Device" or "Synthesizer" or "DAW" or "Instrument Container" or ... many other names for this. Such a thing has typically 16 MIDI input channels (but it might be a software that, on the outside "looks like multiple playback devices", each which its own 16 channels ... so if you need more than 16 sounds to be controlled ... ok, later).

Inside, there are multiple "Instruments" or "Players". There are, in a vast generalization, two sorts of them:
  • Some are "specific instruments" - like "a violin", "a piano", "a choir". So, at least in a first setup, they are not controlled from the score, but directly in some GUI (except for the notes and the volume - these will always come from NWC).
  • Some are "general purpose players", like e.g. "soundfont player" (sfz, sfz+) or, in a kind of Russian doll hierarchy, "instrument containers" that are again like a Playback Device (Kontakt Player, for example). If they are loaded with a single sound font (e.g. from the "Sonatina Symphonic Orchestra" collection) or instrument (e.g. a single choir), they are like the "instrument above"; but if they are loaded with a "general soundfont" (most important, a General MIDI Soundfount; like FluidR3 or Chorium), someone must tell it from the outside which sound to play! - and this is where the "Send Patch" comes in (on MIDI level, this is accomplished via  a "Program Change Event" - all this is highly confusing: Why isn't it called "Patch Send Event"??). The grey circle in the middle diverts the incoming MIDI events (for notes) now to the right "patch" - or "program" or "sound" -, and all is fine. Typically, your Digital Instrument remembers the last Program Change, and the Playback Device remembers all its instruments and what they remember - therefore, after you have sent a "Program Change/Send Patch", you will not have to send it again ... ... unless some other score sends another "Program Change" over the same MIDI channel - then the earlier one is forgotten.

    ... and yes, NWC's Send Patch GUI logic seems somewhat too complex. As I understand it (and use it), if the "Send Patch" checkbox is enabled and there is a number in the patch field, a Program Change Event will be sent (either when NWC starts playing, for a staff; or when it encounters an Instrument Change while playing along). Nowadays, I know the numbers I need (Ocarina = 79, for simulating a small barrel organ!), so I ignore the "Predefined instruments". But even if I use them, I look at the checkbox and the patch number to check whether a Program Change will be sent.

    Next complication (there are millions): I made it look like an instrument listens on a single channel (1, or 2, or ...). But almost all instrument can also "listen on all channels", and then inside them do a distribution of channels to patches. This even more blurs the distinction between devices/containers and instruments/players, and sometimes drives one crazy if some program change switches over something in a completely unexpected instrument ... It pays off to have a "simple standard assignment here" - I try to avoid such "omni-channel" settings as much as possible.

    Last thing, re the banks: A "sound", as in "soundfont" or in "(real) instrument", is, of course and unfortunately, too coarse:  At the simplest level, a violin can be played with the bow or pizzicato, a choir can sing with male or female or mixed voices - but one can go much farther here: There are different makes of pianos, and different sharpnesses of voices, and different whatevers of whatever. So, a single "patch" might provide an additional selector for selecting these "sub-sounds" - those would be the banks. I have not yet come around to need that in my layman sound creations attempts, so I always a rigidly leave Send Bank Select disabled - but it's there, for the brave and whoever needs it.

Ok - I stop here, for the moment ... might be too confusing, and even wrong, already. Any help?

(Of course, what's missing is the "sound pipeline" that is coming out of the playback device - don't think that that's easy! And, on the left side, one may use "virtual MIDI cables" to make it easier, or more versatile and more difficult, to assign MIDI outputs (like from NWC) to playback devices. So, there's much more where one can fail ...).

H.M.

Re: Elementary question - complicated answer?

Reply #3
Hi Jonno,
HM's explanation is pretty good, but I suspect it is too general for your particular use case, so lets address NWC - *Coolsoft VirtualMIDISynth specifically.  I apologise in advance as I'm sure I'll touch on things you already know.

*Actually any MIDI synth that responds to General MIDI data.  Think GM synths and/or softsynths with a GM soundfont loaded.  N.B. someone will probably correct me as that statement is deliberately shortened to avoid confusion.

First a couple of assumptions - you have VirtualMIDISynth installed and working and you also have NWC configured to use VirtualMIDISynth - reasonable as you get sounds...

So let's consider the Instrument patch dialogue:
  • The same dialogue appears whether you are configuring the instrument tab of staff properties OR an instrument patch
  • Click the predefined instruments button
  • Select the instrument you want, say "Trombone" and click OK
  • The dialogue will be populated with a check in "Send Patch", 57 in the number box, a check in "Send Bank Select" and "0" in both MSB and LSB.  Transposition will be 0 and set pitch bend range will be unchecked and 0
  • Click OK

Right, what happens?
The really important parts are:
  • Send patch:
    If this is not checked the MIDI channel of the staff or instrument patch will not be updated with the new patch selection and will continue to play with whatever patch was already in operation.  This usually defaults to 0 (Acoustic Grand Piano) BUT may be whatever the last setting sent on that channel to the synth was.  No matter what software sent it.  Thus, you ALWAYS want this checked unless you have a purpose other than instrument assignment (E.G changing transposition, or changing default dynamic velocities which can be done without changing anything else)
  • The patch number:
    This defines the particular instrument patch number - E.G. in General MIDI, 57 is the trombone, 0 is the aforementioned Acoustic Grand Piano, and so on.
  • Send bank select and the MSB and LSB numbers:
    This really isn't very relevant unless you are using a soundfont that uses multiple banks to select specific instrument sounds - E.G. Muted Trumpet, or percussion sounds (not included in the drum patchs).
    This will normally be checked with 0 in both MSB and LSB.  Important as this will reset any left over bank select data from previous MIDI streams (whether from NWC or not.
  • Transposition:
    This needs to be 0 for concert pitch.  If you transpose a staff and check enable playback transposition (which you should if you write in concert, then transpose for a transposing instrument [like a sax] as this will correct the playback to the concert pitch notes, and you will see this change in the opposite direction the same number of semitones you transposed from concert).
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: Elementary question - complicated answer?

Reply #4
I try to avoid such "omni-channel" settings as much as possible.
Omni mode? Vade retro, Satana!   :P

A little bit of data adding to the good explications of Harald and Lawrie.

The MIDI standard does not specify which instrument corresponds to every specific patch number; it was left to the single instrument and you had to check every instrument's MIDI patch table.
NWC can help with this if you create an itree list file (*..nwcitree) for each instrument, so you can use mnemonic names instead of pure numbers.
As you can guess, it was a big mess with almost zero portability.

Some years later there was an agreement and the GM (General MIDI) was born.
This standard specifies the basic correspondence between the patch number and the instrument sound for the bank 0 - 0 (the default) so a violin sounds a violin every time a patch #40 is selected (at least for bank 0 - 0). Good.
It also stated that the channel 10 must correspond to the drum kit. (Some old instruments used channel 16.)
In the early instruments you had to set them in "GM mode"; now, since a long time, this is the default.
So NWC defaults to "General Midi.nwcitree" and this is what you see when you click "predefined instruments", unless, of course you select a different .nwcitree. That possibility is still present.

But, as Harald wrote, sometimes you need a sound not present in the General MIDI, so Roland created the GS "standard" and Yamaha created the XG "standard" exploiting the banks different from 0 - 0.
Usually there is a logic behind that. For example: patch number #49 bank 0: "String Ensemble 1"; bank 3: 'Stereo Slow Strings"; bank 8: "Legato Strings"; bank 40: "Warm Strings"; bank 64: "70's Strings"; bank 65: "String Ensemble 3" etc. I think you got the idea.
"Standards"? Ehm...

Many years later arrived the GM2 that "borrowed" the bank 1 from GS and tried to include also something from XG.
It also clearly states that, if your instrument hasn't any specific patch for that bank, then the bank 0 must be used, instead of being silent as often happened before...  >:(
And this is where we are now.

A last note: the patches of the channel 10 (drum kit) don't change the single "intrument" but change the whole drum kit.
  0:Standard Kit
  1:Standard Kit 2
  4:Hit Kit
  7:Room Kit { SC-88 }
  8:Room Kit { SC-55 }
16:Rock (Power) Kit
24:Electronic Kit
25:Analog Kit { TR-909 }
26:Dance Kit
32:Jazz Kit
40:Brush Kit
48:Symphony (Orchestra) Kit
49:Ethnic Kit
50:Kick & Snare Kit
56:Sound Effects (SFX) Kit
57:Rhythm FX Kit
80:Live! Standard Kit
81:Live! Funk Kit
99:Chaos Standard Drum Kit
127:MT-32 Drum Kit

Re: Elementary question - complicated answer?

Reply #5
Gentlemen!

I have to say that I did have quite high expectations of some useful reponse(s) from the Forum - but this, of course, does not diminish my gratitude to you all for taking time out to address my puzzlement!

I am very happy with Harald's amazingly detailed account of all that goes on inside the MIDI, from the point of view of instructions it receives from Noteworthy.  What is immediately clear from your combined offerings is: the technology is not at all simple; there are terminology issues; there's a history of changes to the MIDI 'standard' over time; and in general a great complexity on offer that might appeal to the sound technician or recording engineer (for example) - but which (thankfully) I don't really need to know about.  I think it extremely unlikely that I shall ever need to know how to address banks of alternatives within a patch.

Incidentally, when recreating Britten's 'Young Person's Guide to the Orchestra' a while ago, I found relatively straightforward the concept of using the VirtualMIDISynth twice as if it were two separate 'instruments' in order to be able to address up to 32 channels and so cover the large number of instruments all playing at once.

Moving on to Lawrie's contribution - there was no need to apologise for the possibility of telling me stuff I already know.  I have said elsewhere that I would never object to what the writer would feel was a condescending approach: (s)he couldn't know me well enough to assess my level of knowledge/ignorance, and having it pitched it low would always be my preference.  I feel Lawrie's instructions will stand me in good stead hereafter - and I'm already happy with Transposition... ;D

My take from all of this is that, on a Need To Know basis, I will probably always have the Send Patch and Send Bank Select buttons checked, keep zeroes in the MSB and LSB fields, and continue to select Predefined Instruments as before.  Although I do compose occasional pieces, I'm never tempted to stray into experimentation with 'unreal' sounds - and my other use of Noteworthy is to recreate live orchestral sounds from conductors' scores.

Finally, thank you, Flurmy, for your additional notes on the history of the MIDI specification - probably happily sailing a little over my head, but still there should I need to refer to it in some unimagined future exercise!

In conclusion, the way is now clear(er) for actual musical (re)creation to proceed.

Thanks, all, once again! :)

Jonathan
Jonathan Norris