Jump to content

a midibox 64 or other? to replace a too much expensive roland mpg 80


boops

Recommended Posts

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;-)

Link to comment
Share on other sites

I can help you out, I've thought to the same device for a Matrix 1000 programmer :P

exemple :

/////////////////////////////////////////////////////////////////////////////

// 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 value

case 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;

}

Link to comment
Share on other sites

  • 4 weeks later...

After a few days: ;)

Here is the sysex format used:

Each message consist of 10 bytes

Remember 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 possibilities

variabel 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 variables

I 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..thanks

Here 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 position

10=0-100

11=3 position

12=0-100

13=0-100

14=2 position

15=3 position

16=pot

17=4 position

18=3 position

19=3 position

20=pot

21=0-100

22=4 position

23=0-100

24=0-100

25=0-100

26=0-100

27=2 position

28=2 position

29=0-100

30=0-100

31=0-100

32=0-100

33=0-100

34=0-100

35=0-100

36=2 position

37=2 position

38=0-100

39=0-100

40=0-100

41=0-100

42=0-100

43=2 position

44=0-100

45=0-100

46=0-100

47=0-100

48=0-100

Patch edit

49=4 position

50=pot

51=0-100

52=11-88

53=5 position

54=0-100

55=0-100

56=3 position

57=0-100

58=0-100

59=3 position

60=3 position

61=0-100

62=2 position

63=0-100

64=not used

mks midi implant.doc

Link to comment
Share on other sites

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

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...
×
×
  • Create New...