Jump to content

cm labs motormix emulation for midibox lc?


kriz
 Share

Recommended Posts

hi,

after reading about the fact that the hui protocol emulation is still a no go for the midibox lc, i was a bit disapointed, because of the fact that i use pro tools in my studio. But after reading about the different controllers that pro tools supports, i saw that it supported the cm labs motormix. I found a developer pdf wich containes all the midi information about the motormix.

http://www.cmlabs.net/MotorMix%20V%201.2%20Developer%20pkg3.pdf

Is it possible to build a midibox that emulates the cm labs motormix, and has anyone any idea's about how this can be done?

Link to comment
Share on other sites

Hi,

yes, the whole protocol is documented fine, so an emulation seems to be feasible. You could take the LC emulation as basis and modify the MIDI processor functions which decode the incoming MIDI events. The same has to be done for the output functions.

Estimated effort: 3 months to learn assembler, 1 month to understand the LC application, 1 month to implement and test the changes.

Best Regards, Thorsten.

Link to comment
Share on other sites

Well,

I'm also interested. I prefer Cubase 3.7 for my audio/sequencer, and cm motormix is the only full(ish) control surface it supports.. still no more than 8-channels at same time thought..

But then again, I thought of clever(?) idea of using protocol as basis for custom controller (that has more channels/ maybe dedicated EQ-section), that SEEMS to be 8-channel box for the host software, but continuously sends messages to switch channel setups to query state of all channels, and updates them.

I have also found article 'bout programming for cm motormix:

http://www.prorec.com/prorec/articles.nsf/files/motormixprogram

Bye, Moebius

Link to comment
Share on other sites

But then again, I thought of clever(?) idea of using protocol as basis for custom controller (that has more channels/ maybe dedicated EQ-section), that SEEMS to be 8-channel box for the host software, but continuously sends messages to switch channel setups to query state of all channels, and updates them.

But display messages are only sent to one controller, motormix doesn't allow to address two or more displays via one MIDI cable.

And MIDIbox MF is already a very generic controller.

However, if somebody would write the documentation (basic description, block diagramms, photos) and would help newbies who are asking for the details in the forum, and if you would swear not to ask for special features for a thing which I would never use by myself, I'm possibly willing to modify the LC application for the Motormix protocol...

But please understand that my own motiviation isn't that high - I've already a perfectly working controller, and I only own Logic and therefore cannot test the application with Cubase, Sonar, Pro Tools... so, once I provide a Motormix emulation, it would be very fine if somebody else could maintain it in the future! Otherwise this request would only lead to a lot of additional effort for myself which I don't really want.

Best Regards, Thorsten.

Link to comment
Share on other sites

I have also found article 'bout programming for cm motormix:

http://www.prorec.com/prorec/articles.nsf/files/motormixprogram

Bye, Moebius

very nice description of the motormix midi messages, this weekend i will try to find out how the software app. is sending the midi data to the motormix, and try to make a schematic of the structure in wich the data is sent. I will keep you posted on my results.

Moebius,  in pro tools you can select up to four controllers, so you just can add a second midibox for more channels, but i am not a cubase user so i don't know if cubase has the same feature's.

kriz

Link to comment
Share on other sites

But display messages are only sent to one controller, motormix doesn't allow to address two or more displays via one MIDI cable.

<-- just speculation, for cubase modified version -->

Yup. But that's where Midibox comes in ::)

In Cubase 3.7 motormix can remote control ALL channels, but only in groups of 8. View left/right buttons sends midi message to cubase to switch channels remote is assigned to, so all channels can be accessed. I assume, when, let's say, View right message is sent, cubase sends updated information for next 8-channels, even for display.

So if emulated (custom) motormix controller keeps quickly sending "View" -messages it can access all channel parameters for, let's say 24 channels, update those, and keep synchronized with cubase, no?

However, if somebody would write the documentation (basic description, block diagramms, photos) and would help newbies who are asking for the details in the forum, and if you would swear not to ask for special features for a thing which I would never use by myself, I'm possibly willing to modify the LC application for the Motormix protocol...

"Crossing my fingers" - Consider it done ;)

Yes, I would be very happy, with basic motormix emulation. And I'm also willing to study more about it's specification, and try to answer questions about it here in the forum.

I'm only requesting this, as I'm "deeply" in love with my antique Cubase 3.7, as it's fastest and most convenient way of working for me.

But please understand that my own motiviation isn't that high - I've already a perfectly working controller, and I only own Logic and therefore cannot test the application with Cubase, Sonar, Pro Tools... so, once I provide a Motormix emulation, it would be very fine if somebody else could maintain it in the future! Otherwise this request would only lead to a lot of additional effort for myself which I don't really want.

Well, with all the work you have already done, I'm expecting that you're busy with your invention of the 25th hour of the day..  ;D ;D

Bye, Moebius

Link to comment
Share on other sites

Alright, the MIDIbox MM application is now available under http://www.ucapps.de/mios_download.html in the hope that I don't have to give support for this HUI variant.

From the CHANGELOG.txt:

MIDIbox MM V1.0
~~~~~~~~~~~~~~~

Initial version which emulates the Motormix nearly completely:

   o eight motorfaders send and receive position data with 10 bit resolution
   o eigth touch sensors can be connected
   o eight virtual pots (rotary encoders) send relative events
   o one additional rotary encoder ("jog wheel") sends relative events
   o all 67 button functions are available
   o all 72 LED functions are available
   o two status digits (7 segment digits)
   o messages are displayed on a 2x40 LCD (only!)

Additionally this application provides following functions:
   o a dirty hack makes it possible to add eight LEDrings to the V-Pots.
     However, the host application must send the absolute V-Pot position 
     to the display - currently it only works with Sonar, Cubase doesn't
     get use of the so called "rotary pointer" (see Motormix specification)
   o a layer function which allows to map Motormix button functions and LEDs
     to a smaller number of buttons (additional "Shift Key")
   o 128 general purpose controllers can be send with the V-Pots in
     GPC mode
   o internal menu for motorfader calibration
   o optional "dont-send-if-touchsensor-not-pressed" function (disabled by
     default to avoid confusion, but heavily recommented if touchsensors
     available)

Following function of the original Motormix is not implemented:
   o different graphical forms of the "rotary pointers" at the lower
     LCD line, since the graphics are not documented.
     Instead, always a vertical bar + the decimal value will be displayed


Additional Notes:
   o Meters are not supported by the Motormix protocol
   o MTC digits are not supported by the Motormix protocol
   o LEDrings normaly not supported by the Motormix protocol. The
     LEDring hack works only with Sonar, and not with Cubase
   o the two 7 segment digits have to be connected directly to the
     shift registers --- no multiplexing required
   o only one 2x40 LCD is supported by the Motormix protocol
   o tested with the MIDIbox NG hardware, buttons and LEDs are
     assigned according to the existing design. The mapping can be
     changed in mm_io_tables.inc
   o *IMPORTANT* since I'm a Logic user (and therefore prefer the
     Logic Control emulation), this application has only be tested
     with following demo programs:
        -> Sonar 3 Producer Demo Edition
        -> Cubase SX Demo V1.02
     No guarantee that it also works with other versions
   o Note for Cubase users: most buttons are not assigned to a
     function by default - you have to do this by hand in
     the device configuration! It seems that these functions don't
     have a LED feedback, but this could be different in newer
     Cubase versions. Please read also the "Remote Control Devices"
     Documentation which can be found at the Steinberg Website

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 3 weeks later...
Guest the_al

I don't understand some things..

o 128 general purpose controllers can be send with the V-Pots in GPC mode
what is the GPC mode?
Following function of the original Motormix is not implemented:
o different graphical forms of the "rotary pointers" at 
the lower LCD line, since the graphics are not 
documented. Instead, always a vertical bar + the 
decimal value will be displayed
I don't understand what is meant which a "different graphical form"..
Additional Notes:
o the two 7 segment digits have to be connected
directly to the shift registers --- no multiplexing required
that means, that the connecting is different.. maybe it sounds stupid, but what are the shift registers?
 o tested with the MIDIbox NG hardware, buttons and 
LEDs are assigned according to the existing design. The
mapping can be changed in mm_io_tables.inc

in which way can I modify the mapping of the MB? the mm_io_tables.inc-file is quite complicated..  ???

bye and sorry for the many questions. :)

daniel

Link to comment
Share on other sites

Ok :

what is the GPC mode?

It appears from TK's documentation that if you switch to GPC mode, the vpots(encoders) send midi controller messages.

MIOS_MPROC_EVENT_TABLE

      ;; these entries are used by the "GPC" feature of MIDIbox MM which
      ;; can be activated with the GPC button
      ;; Up to 128 MIDI events can be defined here which are sent (and received) by the V-Pots in GPC mode
      ;; The labels for these entries are defined in lc_gpc_lables.inc
      ;; entry 0x00-0x0f
      MT_ENTRY      0xbf, 0x00
This means that in GPC mode the first V-Pot (knob) would send midi controller (0xbf) 0 (0x00) message. This would be useful for controlling parameters on a synth module or the like.
I don't understand what is meant which a "different graphical form"..
This just means that graphical rotary knobs aren't supported on the display, only bars.
that means, that the connecting is different.. maybe it sounds stupid, but what are the shift registers?
Shift registers are the chips that go on the DIN and DOUT boards. The 7 Segment is just hooked directly to a shift register.
in which way can I modify the mapping of the MB? the mm_io_tables.inc-file is quite complicated..
       ;; 1st shift register
      ;;      button                                                                                  LED
 db      ID_REC_RDY_CHN1,      ID_REC_RDY_CHN1
      db      ID_REC_RDY_CHN2,      ID_REC_RDY_CHN2
      db      ID_REC_RDY_CHN3,      ID_REC_RDY_CHN3
      db      ID_REC_RDY_CHN4,      ID_REC_RDY_CHN4
      db      ID_REC_RDY_CHN5,      ID_REC_RDY_CHN5
      db      ID_REC_RDY_CHN6,      ID_REC_RDY_CHN6
      db      ID_REC_RDY_CHN7,      ID_REC_RDY_CHN7
      db      ID_REC_RDY_CHN8,      ID_REC_RDY_CHN8

Ok, so the first shift register for the buttons is the first chip on the first DIN board. The first shift register for the LEDs is the first chip on the first DOUT board. This means that by default, the 8 Record Ready (Arm?) buttons are hooked up to the first chip on the first DIN board. Likewise the 8 Record Ready LEDs are hooked to the first chip on the first DOUT. The reason that you see many ID_IGNORE's in the table is because Thorsten had alread built his LC and wrote the table to match his hardware configuration. If you are building a MotorMix clone, you would want to move a bunch of the buttons and LED's up in the table and move the ID_IGNOREs down so that you wouldn't need as many DIN and DOUT boards. Each DIN and DOUT board handles 32 buttons/LEDs, so if you want 64 buttons on your desk, you'd need 2 DINS. Just follow TK's instruction to :

;  Keep also in mind that the encoders and LED rings allocate some DIN

;  and DOUT pins, which have to be defined in main.asm and mios_tables.inc

;

; IMPORTANT: this table MUST consist of 128 entries!!!

; unused lines have to be filled with "db ID_IGNORE, ID_IGNORE"

So you have to check the main.asm and mios_tables.inc to see where the encoders and led rings are to be hooked up. For instance, the 7 segment LEDs referenced above are hooked to shift registers 12 and 13 which means they are hooked to the 4th chip of the third DOUT module and the 1st chip on the fourth DOUT module. By default the Encoders are hooked up to shift registers (chips) 13, 14, and one on 15. See mios_tables.inc

I hope this helps explain it a little and doesn't confuse you.

Justin

Link to comment
Share on other sites

Guest the_al

I hope this helps explain it a little and doesn't confuse you.

Justin

yes, this was very helpful! I will check it out.. thanks anyway Justin. :)

daniel

Link to comment
Share on other sites

Where do I define which shift registers the enconders are to use?

In the mios_tables.inc file :

;; In this table DIN pins have to be assigned to rotary encoders for the
;; MIOS_ENC driver 
;; 
a little further down ...
MIOS_ENC_PIN_TABLE
      ;; encoders 1-16
      ;;        SR  Pin  Mode
      ENC_ENTRY 13,  0,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 1
      ENC_ENTRY 13,  2,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 2
      ENC_ENTRY 13,  4,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 3
      ENC_ENTRY 13,  6,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 4
      ENC_ENTRY 14,  0,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 5
      ENC_ENTRY 14,  2,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 6
      ENC_ENTRY 14,  4,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 7
      ENC_ENTRY 14,  6,  MIOS_ENC_MODE_NON_DETENTED      ; V-Pot 8

      ENC_ENTRY 15,  0,  MIOS_ENC_MODE_NON_DETENTED      ; Jog-Wheel
      ENC_EOT

After making changes to the files you need to reassemble the project. See the MPASM howto at ucapps.

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

Hi,

Warning, Warning.   I have built the motormix emulator.  I still have not gotten my motorfaders.  All works well except with pro tools.  The LCD display does not work with pro tools,  it seems as though there is i slightly different protocol for pro tools.  So far everything else works!!!!

are you able to monitor the SysEx strings which are transmitted from ProTools with MIDI-Ox? Maybe this software uses a different (undocumented) format, but it shouldn't be a big problem to add this to the MM application.

Best Regards, Thorsten.

Link to comment
Share on other sites

Maybe this software uses a different (undocumented) format...

IT SHOULDN'T! I'm KNOW that You build MM emulation on those specs found from internet. (Even that You did it in that short notice)

(Well, You told that SX's implementation of Mackie/Logic control is broken.. But THE Pro Tools??

Bye, Moebius

Link to comment
Share on other sites

from the thread "Re: Module connection for Mackie Clone"

I guess that the only change is the device ID, which is 0x10 for Logic Control, and 0x14 for Mackie Control. The emulation ID can be defined in main.asm of the MIDIbox LC application.

If there are any other differences, we should always be able to add this to the firmware. Remember the Sonar fix - I found the required extension within 10 minutes by testing the MIDIbox LC with a demo version of Sonar. So - there is no real danger  

Best Regards, Thorsten.

Maybe controlling protools with the logic control protocol would be better than CM motormix?

(go to a music store that sells the mackie control and ask to play with protools with it! :P Try before you build!  ;))

But I don't really know, and I'm not knowledgeable enough to do what TK is suggesting either. I guess I'm just pondering! I too wanted to buld a midibox for protools, but I can't afford to buy protools, and windows XP to be able to run it!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...