I have a question about NRPN (non-registered parameter number) data. Can NRPN contain more than one pair of MSB/LSB of data entry? For example, four bytes of data (MSB LSB MSB LSB).
Given that NRPN is for proprietary use, yes, it's possible to implement a scheme as you suggest if that's what you want to do.
But if the format of NRPN can be totally arbitrary, is it possible to read them? For example, we can easily read custom meta events since meta events have fixed format. But what if we encountered NRPN in a MIDI file? Is there reliable way to read it? Waiting for NRPN NULL (99/127 98/127)? But, for example, for RPN it's possible to omit NULL since data can be read by definition of RPN. So if we don't know NRPN, it's impossible to read it in general case?
You cannot make any assumptions about NRPN. You can read what's there, but you cannot interpret what you read in any general sense.
Yes, of course we can't interpret NRPN data. But if format is arbitrary, we can't even read data. For example, we see following bytes sequence: 99/xx 98/yy 6/zz 6/rr. What is 6/rr? It's a new NRPN with data of rr, or 6/zz 6/rr together create two-byte value? With RPN we can easily understand where each new RPN starts and ends, even without NULL bytes, just by knowing format of each RPN.
Usually when both the Data MSB and the Data LSB are used, they are part of a single value, but again, with NRPN you cannot make that assumption.
Are you trying to decide how to present the data in a user interface? What is your goal?
I'm developing a library to work with MIDI. Now I want to implement parsing RPN/NRPNs. And right now it seems that I have no reliable way to parse NRPN 🙁
You have no choice but to expose the individual Data Entry messages. (It's probably safe to combine MSB and LSB if they are sent at the same time.)
I tried to read out if NRPN messages can occure in a midifile, but can't see the answer?
So can they?
[quotePost id=9726]I tried to read out if NRPN messages can occure in a midifile, but can't see the answer?
So can they?[/quotePost]
Yes, NRPN messages can occur in MIDI files.
My goal is to cc automate the Filter Envelope Depth of my synth (Hypersynth Xenophone) from my sequencer (Squarp Pyramid). The hardware does not really matter here, the question is general, although there are details of the hardware, that make a difference.
From the user manual EnvD is controlled by NRPN 9, with a range of 0-1000. The synth manufacturer tells me on his website that the maximum resolution in NRPN mode is 12 bit.
Turning the EnvD knob on the synth changes the values between -50 and +50. (I want to modulate it between -30 and 0, or thereabouts). I have also used on NRPN 9.
If supported by your synth, NRPN is going beyond conventional MIDI CC modulation, allowing finer resolutions (beyond values in the range of 0-127). To this end more than one item of controller data need to be send.
John,
Not sure what you mean by 'NRPN 9'. You need to use the TWO controllers for NRPN, and these are CC 98 and 99 (decimal). Controller 98 contains the LSB, while 99 contains the MSB. So you are correct, you need to use the two bytes of data, and this will allow you to enter a larger value.
These things have been referred to earlier in this thread.
Another problem may relate to what you're sending data to, and what data you send. Are you wanting to send data to alter the EnvD setting directly, which may require data in one format. Or do you want to alter the parameters/operation of the EnvD knob, which may need something different. You should check the manual to see which should be the best way to do it.
Geoff