[New] Instrument can now be changed on a Synth Track
Posted: Thu Nov 07, 2019 12:09 am
In github master now.
You know how with a synth track and synth device you cannot change the 'instrument'
because, well, the synth IS the instrument and is supposed to define all instrument parameters itself?
Not any more
For example you can now set 'GM2' or 'My cool instrument' on ANY synth track.
This will certainly help, until midnam support is added.
Might be a few areas to touch up still but so far it works fine. Tested OK saving/loading/changing instruments.
This feature is not as useless or dangerous as it sounds.
As far as I know, until this specific LV2 midnam extension came along, NO synth framework had support
for informing the host exactly which MIDI controllers are recognized, and note names if any.
Most do have program names. But usually they lack program groups.
Thus we could not know what controllers to make available in the midi controller graph view.
Does the plugin recognize pitch bend? Mod wheel? Volume? Pan? It's anybody's guess so we just throw those in by default.
The user must explicitly add the controller from an available list of 'commonly known names'.
Those other available (N)RPN controllers you see for a midi track driving a synth, under 'instrument defined'?
Those are NOT defined by the synth, they are faked by us, and they are simply mirrors of all the audio control porrts,
not actual midi controllers the synth is known to recognize.
DSSI had a feature where it could recommend how to map your midi controllers to audio control ports.
But not the same thing as defining what is actually recognized. Not what we wanted.
What to do until midnam support is done?
Allow our own Instruments to be used instead of the synth's defined instrument.
Thus you can use the Instrument Editor to make an instrument that exactly defines which
midi controllers and note names are to be displayed, and select it on this synth track.
You can even select another synth as the instrument for some synth, as well as our instruments.
It works! Granted, nobody's going to select a Hammond instrument for a DrumGizmo track for example,
but say, selecting a GM2 instrument for an LV2 soundfont loader? Sure.
It's perfectly safe. Consider our 'instruments' as simply 'overlays' which describe how to display and interpret the midi stuff.
Notice that all your graph data remains intact even if you severely mess with the instrument.
All the controller and note names for example simply revert to standard values.
Which brings me to a careful observation:
In the Instrument Editor, you can change an instrument's definitions and parameters, delete them, add them,
even completely obliterate them, and all the midi track data and controllers remain intact, just the names change.
All done live in real time with a press of Apply or OK.
An entire instrument can be swapped out and nothing will suffer, displayed names will simply change and adapt.
Thus, I believe MusE is in a very good position to support dynamic, live midnam instrument changes.
This would be necessary for example with an LV2 soundfont loader. Each different loaded soundfont has different
patches and note names and so on. We would be ready to alter the synth's instrument to redefine everything.
Bear with me, maybe a few more things to do here...
You know how with a synth track and synth device you cannot change the 'instrument'
because, well, the synth IS the instrument and is supposed to define all instrument parameters itself?
Not any more
For example you can now set 'GM2' or 'My cool instrument' on ANY synth track.
This will certainly help, until midnam support is added.
Might be a few areas to touch up still but so far it works fine. Tested OK saving/loading/changing instruments.
This feature is not as useless or dangerous as it sounds.
As far as I know, until this specific LV2 midnam extension came along, NO synth framework had support
for informing the host exactly which MIDI controllers are recognized, and note names if any.
Most do have program names. But usually they lack program groups.
Thus we could not know what controllers to make available in the midi controller graph view.
Does the plugin recognize pitch bend? Mod wheel? Volume? Pan? It's anybody's guess so we just throw those in by default.
The user must explicitly add the controller from an available list of 'commonly known names'.
Those other available (N)RPN controllers you see for a midi track driving a synth, under 'instrument defined'?
Those are NOT defined by the synth, they are faked by us, and they are simply mirrors of all the audio control porrts,
not actual midi controllers the synth is known to recognize.
DSSI had a feature where it could recommend how to map your midi controllers to audio control ports.
But not the same thing as defining what is actually recognized. Not what we wanted.
What to do until midnam support is done?
Allow our own Instruments to be used instead of the synth's defined instrument.
Thus you can use the Instrument Editor to make an instrument that exactly defines which
midi controllers and note names are to be displayed, and select it on this synth track.
You can even select another synth as the instrument for some synth, as well as our instruments.
It works! Granted, nobody's going to select a Hammond instrument for a DrumGizmo track for example,
but say, selecting a GM2 instrument for an LV2 soundfont loader? Sure.
It's perfectly safe. Consider our 'instruments' as simply 'overlays' which describe how to display and interpret the midi stuff.
Notice that all your graph data remains intact even if you severely mess with the instrument.
All the controller and note names for example simply revert to standard values.
Which brings me to a careful observation:
In the Instrument Editor, you can change an instrument's definitions and parameters, delete them, add them,
even completely obliterate them, and all the midi track data and controllers remain intact, just the names change.
All done live in real time with a press of Apply or OK.
An entire instrument can be swapped out and nothing will suffer, displayed names will simply change and adapt.
Thus, I believe MusE is in a very good position to support dynamic, live midnam instrument changes.
This would be necessary for example with an LV2 soundfont loader. Each different loaded soundfont has different
patches and note names and so on. We would be ready to alter the synth's instrument to redefine everything.
Bear with me, maybe a few more things to do here...