MIDI-OX User Forum (http://www.midiox.com/cgi-bin/yabb/YaBB.pl)
MIDI-OX >> Mapping Questions >> NI 4control midi controller
(Message started by: DaF on Sep 9th, 2002, 1:19am)

Title: NI 4control midi controller
Post by DaF on Sep 9th, 2002, 1:19am
Hello,

I own a Native Instruments 4control midi controller...the output of the controller is always 64...when I turn my endless knobs it changes that value to 63 (-1) if clockwise and 64 if CCW (+1)

Is it possible with midi-ox 2 convert these these parameters?
As far as I understand these values are put in nrpn 98 and 99?

anyway, I'm still a newbie :p

Thanks in advance for ne help !

Title: Re: NI 4control midi controller
Post by Jamie OConnell on Sep 9th, 2002, 6:52pm
I am not familiar with the 4Control, but the thing to do is to connect the device to MIDI-OX and then wiggle the knobs, to see what data is sent.  Once you're familiar with what it's putting out, it should be fairly straightforward to map that to something else.



Title: Same Kind of Problem w/ Studiomix
Post by abhunkin on Sep 20th, 2005, 10:53pm
The Studiomix rotary pots work similarly. Take the NRPN pot at 1500; turn it left a notch and it puts out 16383 (another notch, the same again); turn it right and it puts out 1 (again, the same per new notch).

I'd like to map this, say, to CC 40 within a range of 0-127, incrementing/decrementing 1 per notch. Is this possible somehow (with "Map NRPN Data Increments" checked)?

I don't understand the "Map NRPN Data Increments" actually. Is it involved here?

Art Hunkins
abhunkin@uncg.edu

Title: Re: NI 4control midi controller
Post by abhunkin on Nov 15th, 2005, 8:49pm
Here is a VBScript that does just what you want. Incidentally, turning control knobs faster can generate increments and decrements larger than +/-1. Also, an increment is represented by *65* or more, a decrement by 63 or less.

This example illustrates how, via scripting, you can turn relative into absolute values in MIDIOx with VBScript.

---

' 4Control rotary encoder conversion script -
'  endless rotary encoder relative values [incl. multiples] to normal CC's

option explicit

dim mox, num(4), ctrl
const BANK = 8 '# of 1st CC in 4Control rotary encoder bank
const NUMBER = 4 '# of CC's in 4Control encoder bank (max = 4)
const STEPS = 48 '# of steps to comprise 0-127 range
'48 steps = one complete dial rotation

Set mox = WScript.CreateObject("Midiox.MoxScript.1", "Sink_")  

mox.DivertMidiInput = 1
mox.FireMidiInput = 1

Do while mox.ShouldExitScript = 0
Loop

mox.FireMidiInput = 0
mox.DivertMidiInput = 0

' Exit Point
'------------------------------------------

Sub Sink_MidiInput( ts, port, stat, dat1, dat2)

   If stat <> 176 Then
     mox.OutputMidiMsg -1, stat, dat1, dat2
     Exit Sub
   End If

   If (dat1 < BANK) Or (dat1 > (BANK + (NUMBER -1))) Then
     mox.OutputMidiMsg -1, stat, dat1, dat2
     Exit Sub
   End If  

 For ctrl = 0 to NUMBER - 1

   If dat1 = BANK + ctrl Then
     num(ctrl) = num(ctrl) + ((dat2 - 64) * (127 / STEPS))
     If num(ctrl) < 0 Then
       num(ctrl) = 0
     End If
     If num(ctrl) > 127 Then
       num(ctrl) = 127
     End If
     mox.OutputMidiMsg -1, 176, BANK + ctrl, num(ctrl)
     Exit Sub
   End If

 Next

End Sub




MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.