Sending Packed/bundled NPRN Messages

Can BMT translate MIDI CC’s to bundled NPRN messages?

I’d like to control the Arpegiator On and Arp Latch controls etc on my Novation KS-5 but they’re documented as ‘packed’ or ‘bundled’ NPRN messages on CC89

ARPEGGIATOR CONTROL
bits 0-1 2-bit number of octaves 1,2,3,4
bit 2 arpeggiator off/on 1=on
bit 3 arpeggiator keysync control 1=on
bit 4 arpeggiator latch control 1=on

I’d like independant control of each parameter. I want a MIDI CC translated for the Octave control and independant toggle MIDI Notes for the arp on/off and Latch controls.

Can MIDI Translator help me achieve this?

The documentationfor this feature can be found on page 64 of the KS5 manual here: https://fael-downloads-prod.focusrite.com/customer/prod/s3fs-public/novation/downloads/10719/english101.pdf

Hi and welcome to the Bome community!

The attached should get you started. I use the global variable ‘ga’ for the bitmap.

Translator 0.0 will use CC8 to control the value of bits 0 and 1. I scale it from 0-127 down to 0-3 using rules. Then I populate the result into the first 2 bits of ga. I don’t send anything at this point.

// scale it from range of 128 to range of 4
// output range
qq=qq*4
// input range
qq=qq/128
Log "Octave Value=%qq%"
// clear existing bits
pp=3
//toggle
pp=pp^-1
// AND with existing value to clear
ga=ga&pp
// OR with value of qq
ga=ga|qq

Log "Log ga value is 0x%02x ga%"

Translator 0.1 handles bit 2

// which bit
pp=3
qq=1<<pp
ga=ga^qq

Log "Log ga value is 0x%02x ga%"

Translators 0.2 and 0.3 handle bits 3 and 4 respectively. All I change is the bit number. Again I don’t send an NRPN

Translator 0.4 sends the NRPN based on the value of ga.

I set the preset 0 input to the alias ‘My Controller’ and and output to the alias ‘Novation KS-5’.

Here are how my aliases are set up on my machine. You will need to set your up for your physical device.

image

You can learn more about aliases from this tutorial.

As far as device routing, I do it all by preset.

For more information about device selection, see this tutorial.

I set up Preset 1 for LED feedback.

Translator 0.0 will trigger a repeating feedback timer ‘LED-Refresh’. I set the iterations in global variable ‘gb’. Any note off will trigger the feedback.
All translators in preset 1 will send back to the controller only.

I send feedback on Note off of any note on MIDI CH 1

You may need to adjust the rules for the note numbers for triggering and for translation.

Here are the rules of the repeating timer.

// get iteration number into pp
pp=gb
// decrement iteration
gb=gb-1
// add two bits because bits 0 and 1 are not for feedback
rr=pp+2
// Shift the bits into place
qq=ga>>rr
// Look at 1 bit only
qq=qq&1
// determine value to send
if qq!=0 then qq=127
// and caculate note number to send to
tt=pp+63


Here is an example log when pressing the send NRPN button.

1: MIDI IN [UC4-V1]: 90 43 7F
2: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 63 00 B0 62 59 B0 06 3B
3: MIDI IN [UC4-V1]: 80 43 00
4: MIDI OUT [UC4-V1]: 90 42 7F
5: MIDI OUT [UC4-V1]: 90 41 7F
6: MIDI OUT [UC4-V1]: 90 40 7F

Here is the project file:
Packed-NRPN.bmtp (3.8 KB)

Have fun!

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz