boops Posted September 22, 2009 Report Posted September 22, 2009 After i 've finished a stereo sid ,a fm and the midicv MB;hi i 've planed to build a surface control to replace a roland mpg 80 (rare and very expensive around 1000 euros) to programming my mks 80 roland...two solutions:1_buy "the interpreter"a little box who convert the midi CC in 62 octets sysex long (cost around 90 euros) +a midibox 64 with a special front panel with each fonction in midi CC .2_ make a custom app for a midibox64 +special panel ... cheaper and less connections( wallwart ,midi cable),etc.but,for the moment i've just compil some lines for lcd,filter,outng option luckly who work fine...how can i programm this new app..there are these controls: 0-127, on off,and control for 3 choice or four choices(eg lfo tri ,saw,square ,random)i 've got the midi implentation of the mks (62 octets sysex) i don't know where begin in this custom APP ???.thanks for your light ,regards;-)
julienvoirin Posted September 22, 2009 Report Posted September 22, 2009 I can help you out, I've thought to the same device for a Matrix 1000 programmer :Pexemple : /////////////////////////////////////////////////////////////////////////////// This function is called by MIOS when an button has been toggled// pin_value is 1 when button released, and 0 when button pressed/////////////////////////////////////////////////////////////////////////////void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam{#if 1 // only for debugging - remove this (or change "#if 1" to "#if 0") in a common application! DEBUG_MSG_SendHeader(); DEBUG_MSG_SendCString("Button: "); DEBUG_MSG_SendBCD3(pin); DEBUG_MSG_SendChar(' '); DEBUG_MSG_SendCString(pin_value ? "depressed" : "pressed"); DEBUG_MSG_SendFooter();#endif // a button has been pressed, send Note at channel 1 MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); // Note at channel 1 MIOS_MIDI_TxBufferPut(pin); // pin number corresponds to note number MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); // buttons are high-active MIOS_MIDI_EndStream();case 0 :if (pin-value = 0){MIOS_MIDI_TxBufferPut(message SysEx);// et allumage de Led : MIOS_DOUT_PinSet(unsigned char pin, unsigned char value);}else{faire une truc}}case 1 :etc ../////////////////////////////////////////////////////////////////////////////// This function is called by MIOS when an encoder has been moved// incrementer is positive when encoder has been turned clockwise, else// it is negative/////////////////////////////////////////////////////////////////////////////void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam{}/////////////////////////////////////////////////////////////////////////////// This function is called by MIOS when a pot has been moved/////////////////////////////////////////////////////////////////////////////void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam{switch (pin) {MIOS_MIDI_BeginStream();case 0 : //potard 0, soit AIN1 pin0 // a pot has been moved, send CC# or SySex<pin-number> at channel 1 MIOS_MIDI_TxBufferPut(0xb0); // CC at channel 1 MIOS_MIDI_TxBufferPut(0x00); // pin number corresponds to CC number MIOS_MIDI_TxBufferPut(pin_value); or MIOS_MIDI_TxBufferPut(message sysex + pin_value)); // don't send 10bit pin_value, but 7bit valuecase 1 :etc .... MIOS_MIDI_EndStream(); // notify display handler in DISPLAY_Tick() that AIN value has changed last_ain_pin = pin; app_flags.DISPLAY_UPDATE_REQ = 1;}
boops Posted September 23, 2009 Author Report Posted September 23, 2009 thanks a lot ,i understand the general idea...each case..;button,fader,pot,encoder..now i have to detail each info you gave me et ca c'est pas gagné!!!!...merci Monsieur
boops Posted October 16, 2009 Author Report Posted October 16, 2009 After a few days: ;)Here is the sysex format used:Each message consist of 10 bytesRemember All here is in hexadecimal values F0 41 36 0F 20 (variable A.....20=tone or 30=patch) (variabel B parameter select) 01 (variabel C value of parameter) F7 F0 41 36 0F 20 (XX) (XX) 01 (XX) F7 All together = 10 bytes there are 48 knobs for tone edit (variable A....20=tone)there are 16 knobs for patch edit (variable A....30=patch) variabel A can either be 20hex or 30hex only 2 possibilitiesvariabel B can be from 00hex (00dec) to 30hex (48dec) when variable A is 20hex (tone edit)variabel B can be from 00hex (00dec) to 10hex (16dec) when variable A is 20hex (patch edit)variabel C is depending on how many values there is in the different parameters (tone edits or patch edits) The difference from a normal midibox is that the strings are longer and have more variablesI l have to change the firmware to support the 3 variables and make these new meta events .....Who can explain mefor that ,an example..please below a part of the midi implantation..thanksHere are the different values for each pot/switch: All values are in decimal tone edit 1=0-100 2=0-100 3=4 position 4=0-100 5=0-100 6=0-100 7=0-100 8=3 position 9=2 position10=0-10011=3 position12=0-10013=0-10014=2 position15=3 position16=pot 17=4 position18=3 position19=3 position20=pot21=0-10022=4 position23=0-10024=0-10025=0-10026=0-10027=2 position28=2 position29=0-10030=0-10031=0-10032=0-100 33=0-10034=0-10035=0-10036=2 position37=2 position38=0-10039=0-10040=0-10041=0-10042=0-10043=2 position44=0-10045=0-10046=0-10047=0-10048=0-100 Patch edit 49=4 position50=pot51=0-10052=11-8853=5 position54=0-10055=0-10056=3 position57=0-10058=0-10059=3 position60=3 position61=0-10062=2 position63=0-10064=not used mks midi implant.doc
boops Posted October 18, 2009 Author Report Posted October 18, 2009 good news..the file for a mb64 ,mpg 80 for all the mks 80 tone and patch controls is ready,just i have to try it in a few days...i will let news... Thanks TK(again )and Rasmus,a real good guy:-)pm me if you want it..wait a fews days please,for test..best regards Boop's
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now