Close

Results 1 to 4 of 4

Thread: Mapping

  1. Default Mapping

    I sort of hinted at it before, and I did try to search the forum, but I don't see where anyone answered:

    Can you map the buttons of the Motormix to F-keys or any other use in SAC?

    I have only one Motormix right now. I would like to have two. I would like to have the left side button column by the faders be able to call groups of channels: 1-8, 9-16, etc. and stay that way always.

    Maybe the right side the same to start or perhaps select mixers. Somewhere a SHIFT key? Maybe a ALT or CMD key?

    I appreciate the templates are complex, but it seems like the device would be so much more useful if the larger controls could be used for something.

    I've enjoyed mixing for over a year with no faders and I've learned a lot, but I can't tell you how much more intuitive it felt to have faders in front of me while mixing live (Sorry Bob, I really did swim upstream for a long time)

    Thank your for your input

    Jeremy

  2. #2
    Join Date
    Jun 2010
    Location
    Baltimore, Maryland
    Posts
    402

    Default Re: Mapping

    http://www.sawstudiouser.com/forums/...mix+autohotkey

    Ben Farmer suggested using AutoHotKey, as he's done with his Mackie controller. I have not used it myself, but am curious as to the possibilities. I'd love to be able to use more of those buttons.

    Jeff

    7th Voice FOH/Mon/Sys Tech
    www.7thVoice.net
    www.reverbnation.com/7thvoice

    SAC Installation:
    Dell Optiplex 990, Intel i5/4GB RAM
    3xMOTU 2408, PCI-424x card, 6x ART TubeOpto8, 2x Motormix

    SAC Portable Rig:
    IBM ThinkCentre M50 3.2GHz/4GB RAM
    2x MOTU 2408/PCI-424x card, 2x ART TubeOpto8, 2x M-Audio Profire 2626
    Yamaha Promix01 controller, EWI Tourcase
    CUDJ-P-22.

  3. #3

    Default Re: Mapping

    Using a combination of MIDI YOKE, MIDIOX, and AutoHotKey, you can route the midi from your controller to both SAC and an AutoHotKey script that will mash what ever buttons that you want.

    After doing some sniffing around I came across a forum post Midi Input/Output combined - with System Exclusive! that provided me the base to view the midi messages that were coming in and a method of attaching AutoHotKey actions to them as well as triggering a midi out message with a hot key combo.

    My script is still a work in progress, but is ENTIRELY based off of the script found on that forum. The only changes that I've made are to the actual hotkey/midi in command sections. (Linking what I'm getting with what I want it to do)

    Here's a section that I added in to the ++hotkey defs+++ section of hotkeyTOmidi_2.ahk
    Code:
    ^!+1::midiOutShortMsg(h_midiout, (channel+143), 0, 127)
    ^!+q::midiOutShortMsg(h_midiout, (channel+143), 0, 0)
    ^!+2::midiOutShortMsg(h_midiout, (channel+143), 1, 127)
    ^!+w::midiOutShortMsg(h_midiout, (channel+143), 1, 0)
    ^!+3::midiOutShortMsg(h_midiout, (channel+143), 2, 127)
    ^!+e::midiOutShortMsg(h_midiout, (channel+143), 2, 0)
    ^!+4::midiOutShortMsg(h_midiout, (channel+143), 3, 127)
    ^!+r::midiOutShortMsg(h_midiout, (channel+143), 3, 0)
    ^!+5::midiOutShortMsg(h_midiout, (channel+143), 4, 127)
    ^!+t::midiOutShortMsg(h_midiout, (channel+143), 4, 0)
    This allows me to turn on and off the rdy/rec button lights on a mackie XT


    and this code provides for use of the arrows, the jog wheel, the line of buttons below the preprogramed F-keys (as alt F Keys), the control, the alt and the shuttle controls (passes hotkeys to another program (hotkeynet) that then passes commands to Mediamonkey on my server to play set break music)on the MCU.

    Code:
       if (byte1 = 72 && byte2 = 127) ; test if note message is note number 72 with note on status byte
          {
             GuiControl,12:, MidiMs, ctrl down ; for display of filtered note passing to gui -testing only
           
          SendEvent {control down}
        }
                       
       if (byte1 = 72 && byte2 = 0) ; test if note message is note number 72 with note off status byte
          {
             GuiControl,12:, MidiMs, control up ; for display of filtered note passing to gui -testing only
           
          SendEvent {control up}
        }
                     
       if (byte1 = 91 && byte2 = 127) ; test if note message is note number 91 with note on status byte
          {
             GuiControl,12:, MidiMs, MediaMonkey Back ; for display of filtered note passing to gui -testing only
           
          SendEvent ^!b
        }
                      
       if (byte1 = 92 && byte2 = 127) ; test if note message is note number 92 with note on status byte
          {
             GuiControl,12:, MidiMs, MediaMonkey Next ; for display of filtered note passing to gui -testing only
           
          SendEvent ^!n
        }
                      
       if (byte1 = 93 && byte2 = 127) ; test if note message is note number 93 with note on status byte
          {
             GuiControl,12:, MidiMs, MediaMonkey Stop ; for display of filtered note passing to gui -testing only
           
          SendEvent ^!o
        }
                      
       if (byte1 = 94 && byte2 = 127) ; test if note message is note number 94 with note on status byte
          {
             GuiControl,12:, MidiMs, MediaMonkey Back ; for display of filtered note passing to gui -testing only
           
          SendEvent !p
        }
                      
       if (byte1 = 96 && byte2 = 127) ; test if note message is note number 96 with note on status byte
          {
             GuiControl,12:, MidiMs, Up Arrow ; for display of filtered note passing to gui -testing only
           
           send {Up}
        }
             
       if (byte1 = 97 && byte2 = 127) ; test if note message is note number 97 with note on status byte
          {
             GuiControl,12:, MidiMs, Down Arrow  ; for display of filtered note passing to gui -testing only
    
                send {down}
            }
             
       if (byte1 = 98 && byte2 = 127) ; test if note message is note number 98 with note on status byte
          {
             GuiControl,12:, MidiMs, Left Arrow  ; for display of filtered note passing to gui -testing only
    
                send {left}
            }
             
       if (byte1 = 99 && byte2 = 127) ; test if note message is note number 99 with note on status byte
          {
             GuiControl,12:, MidiMs, Right Arrow  ; for display of filtered note passing to gui -testing only
    
                send {right}
            }
    
       if (byte1 = 62 && byte2 = 127) ; test if note message is note number 62 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F1  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f1}   
            }
    
       if (byte1 = 63 && byte2 = 127) ; test if note message is note number 63 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F2  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f2}   
            }
    
       if (byte1 = 64 && byte2 = 127) ; test if note message is note number 64 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F3  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f3}   
            }
    
       if (byte1 = 65 && byte2 = 127) ; test if note message is note number 65 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F4  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f4}   
            }
    
       if (byte1 = 66 && byte2 = 127) ; test if note message is note number 66 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F5  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f5}   
            }
    
       if (byte1 = 67 && byte2 = 127) ; test if note message is note number 67 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F6  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f6}   
            }
    
       if (byte1 = 68 && byte2 = 127) ; test if note message is note number 68 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F7  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f7}   
            }
    
       if (byte1 = 69 && byte2 = 127) ; test if note message is note number 69 with note on status byte
          {
             GuiControl,12:, MidiMs, Alt F8  ; for display of filtered note passing to gui -testing only
             
                SendEvent !{f8}   
            }
       if (byte1 = 60 && byte2 = 1) ; test if note message is note number 60 with note on status byte
          {
             GuiControl,12:, MidiMs, convert4:%statusbyte% %chan% %byte1% %byte2%  ; for display of filtered note passing to gui -testing only
    
                send {Up}
            }
    
       if (byte1 = 60 && byte2 = 65) ; test if note message is note number 57 with note on status byte
          {
             GuiControl,12:, MidiMs, convert4:%statusbyte% %chan% %byte1% %byte2%  ; for display of filtered note passing to gui -testing only
    
                send {Down}
            }
    Ben Farmer
    Omaha, NE
    ETCP Certified Entertainment Electrician

  4. Default Re: Mapping

    There's also a program called "Midi Translator" that can route any midi command to a keystroke as well as tons of other midi mapping and mangling. I've been using it for years.
    http://www.bome.com/products/miditranslator

Posting Permissions

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