Author |
Message |
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Tue Feb 07, 2006 2:38 pm Post subject:
Any way to send 14-bit MIDI from one slot to another? Subject description: NOTE: Topic includes a NRPN patch... |
|
|
I've maxed out my internal busses, and I'm looking to use slot-to-slot MIDI to pass some control signals around. But I need more than 7-bit resolution.
Does anyone know any way to send 14-bit MIDI from one slot to another? |
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Tue Feb 07, 2006 3:51 pm Post subject:
|
|
|
You'll have to use two MIDI CC's then, the theory :
First you split the signal.
For path one you calculate the signal modulo 128 (the remainder after division by 128)
For path two you calculate the signal divided by 128, and then multiplied again by 128.
Send both paths through separate MIDI CC's to the other side. There you can combine them again using some mixers.
The tricky part is to build the division and modulo stuff. It can be done using a note quantizer ... it might be that you'll end up working with 64 instead of 128, but you'll also have to find a way to compensate for the rounding going on in the quantizer and probaly in the MIDI CC sends as well.
I think some modulo calculation stuff has been posted here on the forum in the past. _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Tue Feb 07, 2006 4:55 pm Post subject:
|
|
|
Confirmed and official, the note scaler drives me nuts.
It should also be possible to use a digtizer (from the FX page), but that works different again from both previous ways. It should all be a matter of adding or subtracting half a Clavia unit somewhere to/from something at some tactical spot ...
BTW, from the patch I posted, the yellow cable connecting the two MIDI CC modules can be deleted. It just wastes bandwidth now. _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
Posted: Tue Feb 07, 2006 5:12 pm Post subject:
|
|
|
Thanks for the head start. That modulo/remainder technique with two CCs sounds like a good path to choose. I'll give it a try. If I get it working, I'll post it.
As an aside, it would be a cool thing if Clavia would put a selector switch on the MIDI CC modules so that we could choose 7 or 14 bits. Ah well, I guess I can't have everything. |
|
Back to top
|
|
|
cappy2112
Joined: Dec 24, 2004 Posts: 2465 Location: San Jose, California
Audio files: 2
G2 patch files: 1
|
Posted: Tue Feb 07, 2006 5:39 pm Post subject:
Re: Any way to send 14-bit MIDI from one slot to another? |
|
|
Chet wrote: | I've maxed out my internal busses, and I'm looking to use slot-to-slot MIDI to pass some control signals around. But I need more than 7-bit resolution.
Does anyone know any way to send 14-bit MIDI from one slot to another? |
Does the G2 support NRPN's?
I think you can get 16-bit resolution with those, but still have to do all the math like Jan mentioned. |
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Tue Feb 07, 2006 5:49 pm Post subject:
|
|
|
nope, no direct support for NRPN or RPN, but you can patch it :-)
It's also 14 bits BTW. _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
Spandex
Joined: Nov 17, 2005 Posts: 24 Location: UK
G2 patch files: 3
|
|
Back to top
|
|
|
Chet
Joined: Nov 19, 2004 Posts: 231 Location: Lititz,PA,USA
Audio files: 7
G2 patch files: 35
|
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Wed Feb 08, 2006 1:55 pm Post subject:
|
|
|
Works great for me as well, good to see the note quantizer didn't drive you nuts :-) _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
mosc
Site Admin
Joined: Jan 31, 2003 Posts: 18197 Location: Durham, NC
Audio files: 212
G2 patch files: 60
|
Posted: Wed Feb 08, 2006 2:10 pm Post subject:
|
|
|
Blue Hell wrote: | nope, no direct support for NRPN or RPN, but you can patch it
It's also 14 bits BTW. |
I'm not sure I understand NRPN well enough to patch it. Is it difficult for someone to provide a building block? Maybe this has already been done and I've missed it. _________________ --Howard
my music and other stuff |
|
Back to top
|
|
|
Ludvig
Joined: Jul 25, 2005 Posts: 26 Location: Stockholm - Sweden
|
Posted: Thu Feb 09, 2006 6:06 am Post subject:
|
|
|
I am also interested in a building block if anyone has got the time to provide it. I use a bcr2000 with my g2, and I think many others here at e-m does as well, and it is capable of sending 14-bit messages so any help would be really useful for me.
Please, enlighten us |
|
Back to top
|
|
|
Fozzie
Joined: Jun 04, 2004 Posts: 875 Location: Near Wageningen, the Netherlands
Audio files: 8
G2 patch files: 49
|
Posted: Thu Feb 09, 2006 7:14 am Post subject:
|
|
|
See the Philip Rees website for a clear explanation http://www.philrees.co.uk/nrpnq.htm. It is basically a sequence of midi messages with 'double precision', in which at first the parameter is identified in 14 bit, followed by the parameter value in 14 bit. This is coded and sent via ordinary CC messages.
Quote: | MIDI Non-Registered (and Registered) Parameters
The MIDI standard includes commands that satisfy nearly all the requirements of generic music control. Even though MIDI is so commendably wide-ranging, it is prudent that the core of the standard be stable. Standards that change too often beget myriad incompatibilities, which end up causing frustration to end-users.
On the other hand, the applications of MIDI are always evolving, and manufacturers of MIDI equipment continually introduce new models. For this reason, it is also desirable that the MIDI standard should include provision for ad hoc extensions.
The MIDI specification has two elements that provide for device-specific or application-specific extensions. One of these elements is the apparatus of Non-Registered Parameters often referred to as NRPNs (some people say "nerpins"); the other is the wonderful world of System Exclusive, often abbreviated to SysEx.
NRPN is an acronym for Non-Registered Parameter Number, while RPN means Registered Parameter Number. They each work in the same way, but RPNs are specified by the MIDI standard, while NRPN’s are specified by particular manufacturers. NRPN assignments vary between different device manufacturers, and should be listed in the appropriate equipment manuals. The MIDI standard says that, for safety's sake, the reception of NRPNs should be disabled at power-up. Devices should let the user disable reception of NRPNs, in case there is a NRPN implementation conflict. RPN response may be enabled at power-up.
NRPN and RPN parameter change commands are constructed from a succession of MIDI Control Change (also referred to as Controller) messages. Controller messages are Channel Voice messages – from this the parameter change commands inherit the property of having a MIDI channel tag.
There are two main parts to each parameter change command. The first is the number, which identifies (or addresses) the specific parameter, and the second is the (data) value or variation to assign to the specific parameter.
A pair of MIDI Controllers are used to select each specific parameter number, and it is advisable that the pair should always be sent together. NRPNs are specified by Controllers 98 and 99, while RPNs are specified by Controllers 100 and 101. The most recently received parameter number becomes the active parameter number for the particular MIDI channel.
The fact that separate Controller pairs are designated for the NRPN number and the RPN number may suggest that a MIDI channel could have simultaneously a current NRPN and a current RPN. However, NRPNs and RPNs share a common mechanism for setting the parameter value. Therefore there is only one active parameter number per channel.
There are four MIDI Controllers involved in assigning a value to the active parameter. Controller 6 (called the Data Entry MSB) sets the parameter value directly, and Controller 38 (called the Data Entry LSB) may optionally be used as a fine adjustment to improve on the precision of the parameter value. Controller 96 is called Data Increment and Controller 97 is called Data Decrement.
Data Increment and Data Decrement controllers are not consistently supported. The value portion of these messages is sometimes given a value or step size, but the transmitted value byte is commonly set to zero. Many slave devices will ignore the value byte, and a default step size (often equal to one) will be employed.
The table below shows how three or four MIDI Controller messages are used to make up a parameter change command; numbers are shown in decimal representation:
1 Control change, channel 101 for RPN, or 99 for NRPN parameter number, high order seven bits (MSB)
2 Control change, channel 100 for RPN, or 98 for NRPN parameter number, low order seven bits (LSB)
3 Control change, channel Controller number 6 parameter value, high order seven bits (MSB)
4 optional Control change, channel Controller number 38 parameter value, low order seven bits (LSB)
Compared to SysEx, RPNs and NRPNs are broadly-speaking more amenable to MIDI devices and software such as sequencers and merge units.
The current MIDI standard only specifies five RPNs (numbers are shown in decimal with the MSB, CC101, first): they are Pitch Bend Sensitivity (0, 0), Fine Tuning (0, 1), Coarse Tuning (0, 2), Tuning Program Select (0, 3), and Tuning Bank Select (0, 4). Another number is in widespread use: Null (127, 127), which, very usefully, cancels the active parameter number. This dummy RPN is occasionally called Reset RPN, and it does not require a Data Entry message for parameter value.
The Pitch Bend Sensitivity RPN (0,0) is also known as Pitch Bend Range. The high order adjustment uses Controller 6 (Data Entry MSB) to set the range in semitones. The low order adjustment uses Controller 38 (Data Entry LSB) to set the range in cents (that is hundredths of a semitone.
Master Fine Tuning (RPN 0,1) uses both Data Entry controllers to provide a fourteen bit value which represents the tuning displacement (up or down) in fractional parts of a semitone (full range equals one semitone, a single step represents 100/8192 cents); the centre value (8192) corresponds to the standard (A440) tuning. Master Coarse Tuning (RPN 0,2) uses just the Data Entry MSB controller to provide a seven bit value which represents the tuning displacement (up or down) in whole semitones; the centre value (64) corresponds to standard tuning.
Tuning Program Select (RPN 0, 3), and Tuning Bank Select (RPN 0, 4), are part of the MIDI Tuning Standard, which is not widely implemented.
It is now widely regarded as best practice to Null (RPN 127, 127) the active parameter number immediately after sending the Data Controller(s) – this is summarised in the table below. If the active parameter number is left open, and the equipment is not turned off, a parameter could remain set for years! A rogue Data Entry message on the corresponding channel could then cause unintended changes.
1 Control change, channel 101 for RPN, or 99 for NRPN parameter number, high order seven bits (MSB)
2 Control change, channel 100 for RPN, or 98 for NRPN parameter number, low order seven bits (LSB)
3 Control change, channel Controller number: 6 parameter value
4 Control change, channel Controller number: 101 parameter number: 127 (Null)
5 Control change, channel Controller number: 100 parameter number: 127 (Null)
Our C16 MIDI Control Unit (now discontinued) follows what I consider to be best practice. It always sends together the controller pairs for parameter number. It always nulls the parameter number after sending the Data value. In this arrangement, and using running status, setting a parameter with a single precision (seven-bit) value takes a total of eleven bytes.The little table, below, illustrates this; it uses decimal numbers.
|
|
|
Back to top
|
|
|
Rob
Joined: Mar 29, 2004 Posts: 580 Location: The Hague/Netherlands/EC
G2 patch files: 109
|
|
Back to top
|
|
|
mosc
Site Admin
Joined: Jan 31, 2003 Posts: 18197 Location: Durham, NC
Audio files: 212
G2 patch files: 60
|
Posted: Tue Feb 14, 2006 7:06 am Post subject:
|
|
|
Thanks, Rob.
I'm moving this entire topic to the Building Blocks section while leaving a link behind in the NM Discussion Forum. _________________ --Howard
my music and other stuff |
|
Back to top
|
|
|
|