-
I am wondering if anyone knows if it is possible to modify a generator of a specified note of a specified preset using midi NRPN for Sf2.
For example: I want to use midi to change the fine tuning of note C2 on preset 1.
Is this implemented in SF2?
Any help would be appreciated. -
You can change the tuning with controller message "Modulation wheel", midi control change 1. But you will need to experiment to find the correct value to achieve what you want. This will change the tuning of all notes
If you want a permanent change it would be easier and better to modify the .sf2 sound font itself.
csw900 -
Thank you for the reply. I am looking to do individual notes and more less real-time. I have read over the SF2 spec and just cant determine if each generator (preset1, fine tune, C2) has a specific number that can be modified by midi somehow.
-
I wonder if there is a list of generator identification numbers. here is the portion of the SF2 spec that has me thinking that it is possible to modify any generator with NRPN midi messages. Any experts on this?
9.6.2 The NRPN Select Values
The SoundFont 2.01 standard defines the following values that must be recognized and responded to by any synthesizer
that is SoundFont 2.01 compatible. These values should not conflict with values used in standard and/or widely available
MIDI synthesizers today.
The NRPN Select MSB message value is 120. This message indicates that a NRPN Message that follows will be a
SoundFont 2.01 NRPN message.
The NRPN Select LSB message with data less than 100 corresponds to the generator enumeration value, modulo 100, if
and only if the most recently sent NRPN Select MSB message was 120. The NRPN Select LSB message with data greater
than or equal to 100 is used to permit selecting of generator values greater than 100.
0 – 99:
Indicates the generator value
100:
Indicates a
single multiple of 100 for generator value selection
101:
Indicates a single multiple of 1,000 for generator value selection
102:
Indicates a single multiple of 10,000 for generator value selection
103 – 127:
Undefined, unused, should be ignored if enco
untered
Note that NRPN Select LSB greater than 100 are for setup only, and should not be used on their own in order to select a
generator parameter.
So, to have a NRPN message control the Initial Filter Cutoff parameter, the following NRPN Select parameters are sent:
NRPN Select MSB:
120
NRPN Select LSB:
8
And, if a generator value is defined by the SoundFont Specification with a value of 100, the following NRPN Select
parameters are sent:
NRPN Select MSB:
120
NRPN Select LSB:
100
NRPN Select LSB:
0
And, if a generator value is defined by the SoundFont Specification with a value of 250, the following NRPN Select
parameters are sent:
NRPN Select MSB:
120
NRPN Select LSB:
100
(generator 100)
SoundFont 2.01 Technical Specification - Page
76
-
08/05/98 12:43 PM
NRPN Select LSB:
100
(generator 200)
NRPN Select LSB:
50
(generator 250)
Running status does not include multiple sends of values greater than 100. IE you cannot use a single message to select
251 if the most recently sent message selected generator 250:
NRPN Select LSB:
100
NRPN Select LSB:
100
NRPN Select LSB:
50
(Selects generator 250)
NRPN Select LSB:
51
(Selects generator 51, NOT 251)
If a parameter is selected which is unrecognized, or is not designated as a real-time controller or synthesizer parameter
(such as overriding root key, key number, etc), or cannot be controlled in real-time by a synthesizer, either at all or without
causing audio artifacts, the LSB selection should be ignored but the status of the MSB selection, being that of a
SoundFont 2.01 NRPN controller, should remain unchanged -
There is a universal System Exclusive message which will do what you require. It can change the tuning of one note in real time - even if the note is playing.
It is detailed in a document by the Midi Manufacturers Association (you can probably get it via their website).
The message is called "Midi Note Tuning Change (Real Time)"
The code is:
F0 7F
<device ID>
08 midi tuning
02 note change
tt (tuning program number 0-127
ll number of changes (1 = 1 set of kk xx yy zz)
kk midi note number
xx yy zz frequency data for the key
F7
Of course this will work only if your synth supports it.
csw900 -
Thank you CSW900!! That looks to be what I am looking for.
Sign in or register to take part in discussions.
Polyphone needs you!
Polyphone is free but there are costs associated with its website and development. A small donation will help a lot.
Donate
Learn the basics
Try a tutorial
Scroll to
top
top