Sign in

NRPN

Category: Help
  • MA 4 0
    Message from Mark A on
    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.
  • CS 73 0
    Message from csw900 on
    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
  • MA 4 0
    Message from Mark A on
    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.
  • Message from Mark A on
    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
  • CS 73 0
    Message from csw900 on
    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
  • MA 4 0
    Message from Mark A on
    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