Jump to content

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


Recommended Posts

Posted

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

Posted

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;

}

Posted

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

  • 4 weeks later...
Posted

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

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...