MIDIPipe/MIDI Translation
Results 1 to 8 of 8
  1. #1
    Tech Convert mathorn's Avatar
    Join Date
    May 2008
    Posts
    12

    Default MIDIPipe/MIDI Translation

    I'm using a MIDI joystick for some functions of Traktor. It's a 4-pole joystick capable of sending values 0-127. Basically what I want to do it translate the signal so that I can send only value 127 at the at the end of each pole, and 0 at the center, like a button. I would also like to be able to translate the signal so that, lets say I want to control the crossfader. Let's say the poles for the joystick are CC1, 2, 3, and 4. I would want to translate CC1 to send 0 where it would normally send 127, and 64 where it would normally send 0 (so 0-64), and translate CC2 to send on CC1 values of 64 where it would normally send 0 and 127 where it would normally send 127 (so 64-127).

    What functions of MIDIpipe can I use? Is this the right software for this?

    Thanks!

  2. #2
    Retired DJTT Moderator DvlsAdvct's Avatar
    Join Date
    Mar 2008
    Location
    New Jersey/NYC
    Posts
    4,854

    Default

    Wait a sec... the pole transmits in four different directions. Is each direction transmitting on a difference MIDI Channel or is it transmitting a different Control Change Number?

    Meaning: Up transmits 1-127 on channel 1, or CC1? etc.?
    It's the FAQ. Read it.

    My Mixes, Mashups and Rants

    Divided we stand
    United we fall

  3. #3
    Tech Convert mathorn's Avatar
    Join Date
    May 2008
    Posts
    12

    Default

    they transmit on the same channel, just four different controls for the four different poles. So, yes, up would send 0-127

  4. #4

    Default

    GlovePie may work for this. Its what I use to translate mouse signals to midi.

  5. #5
    Tech Wizard
    Join Date
    Mar 2008
    Location
    Chicago
    Posts
    59

    Default

    Quote Originally Posted by mathorn View Post
    What functions of MIDIpipe can I use? Is this the right software for this?

    I'm not familiar with MIDI joysticks, but from what I can tell, a message factory in MIDIpipe should do the trick (with passthrough disabled). You can definitely do it with an applescript trigger as well (with passthrough disabled).

    Can you give me more information as to what information is sent when using the joystick on the X axis and Y axis (I would imagine its 2 CC values, not 4, 63 or 64 being in the center)? Use an alist pipe to see the MIDI messages.

    sgb

  6. #6
    Tech Convert mathorn's Avatar
    Join Date
    May 2008
    Posts
    12

    Default

    Here's what it sends... it is possible to change it to 2 pole X/Y but i have it set up as four pole.

    (From center to maximum)
    Right: Control Change: 019 CC#19 (coarse) CH1 Values 0-127
    Up: Control Change: 020 CC#20 (coarse) CH1 Values 0-127
    Left: Control Change: 021 CC#21 (coarse) CH1 Values 0-127
    Down: Control Change: 022 CC#22 (coarse) CH1 Values 0-127

    Do you think you could explain further how i would do this with message factory?
    Last edited by mathorn; 05-31-2008 at 12:44 AM.

  7. #7
    Tech Convert mathorn's Avatar
    Join Date
    May 2008
    Posts
    12

    Default

    edited midi readout

  8. #8
    Tech Wizard
    Join Date
    Mar 2008
    Location
    Chicago
    Posts
    59

    Default

    alright, for your first hypothetical use, message factory is perfect. I don't have a MIDI controller with me at the moment, so I can't test it. You have to do this for each control channel. Here is what you need to do:

    1) Setup a pipe that receives the CC data and outputs 0 if CC data is between 0 and 124.
    2) Setup a second pipe that receives the CC data and outputs a 127 if CC data is between 125 and 127

    I can't help you build the midi pipe because I don't have a MIDI controller in front of me to help.

    Alternatively, use a applescript trigger. For this, you need to find out the HEX values for the MIDI data you want to intercept. Note the third item in the message list is always the value of the MIDI message.

    Here is one example:

    ======================
    on runme(message)
    if (item 1 of message = XX) and (item 2 of message = YY) and (item 3 of message > 124) then
    set item 3 of message to 127
    end if
    if (item 1 of message = XX) and (item 2 of message = YY) and (item 3 of message < 125) then
    set item 1 of message to 0
    end if
    return message
    end runme
    ======================

    or (this is the preferred method because you don't have to use a bunch of if/then statements for each CC value.

    ======================
    on runme(message)
    if (item 1 of message = XX) then
    if (item 2 of message ≥ YY) and (item 2 of message ≤ ZZ) then
    if (item 3 of message < 125) then
    set item 3 of message to 0
    else
    set item 3 of message to 127
    endif
    endif
    endif
    return message
    end runme
    ======================

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •