Jump to content

Chettah MS6 midi controller


Fairlightiii

Recommended Posts

Hello the midibox community.

I plan to make a midi controller for a Cheetah MS6 synth.

I'll use 48 encoders and 32 buttons as inputs (+2 rotary switches) and 41 LEDrings (10 LEDs bargraph) and 46 LEDs as output.

I joint the PDF file: big rectangle=bargraph, little rectangle=button, little circle=LED, big circle=encoder (except the 2 top/left for DCO shapes=rotary switch).

I have 3 questions:

Does the core can handle the 41 LEDrings (I remember a thread speaking of that but I haven't found it again)?

Is-it possible to mix ledrings and leds into the same DOUTX4 (I think yes but I must be sure)?

Is there any possibility to have 9 extra outputs for LEDs than the standard 128 (it is the reason why I use rotary switch: I've replaced button/LED by rotary switch because no more DOUT pin to indicate the state of the parameter)?

Thank you for your answers.

Best regards,

Jérôme.

MS6 controller.pdf

Edited by Fairlightiii
Link to comment
Share on other sites

Hi Jerome,

if you don't have programming knowledge, you would have to use a standard firmware such as MIDIbox64E

Yes, it can control up to 64 LEDrings, or 41 LEDrings + 32 LEDs controlled directly from dedicated DOUT pins.

If you need more, you would have to control the LEDs from a matrix (such as LEDrings, where LEDs are connected to a matrix as well)

BUt it's impossible to add such an option into the existing MB64E application, you would also have to write your own application, which isn't so difficult if you know C

Best Regards, Thorsten.

Link to comment
Share on other sites

this seems a nice project, for a so rare synth ..

IMO, you should have a look at this whole thread :

From that, you could adapt some code (CC instead of SysEx) blocks

I've already discovered this beautiful project from jackchaos.

The two synths share the same Curtis chip CEM3396.

I own two MS6 but neither of them works (lacking baterry and PSU problem).

I brought them -a long time ago- to a friend which was suposed to repair them (I am newbie concerning electronic/electricity).

Yes it is CC instead Sysex so I think it will be easier (no buffer …).

My programming problem is that I've to know how modify the state of the LED when I push a button (first push: first LED lit (others LEDs turned off) and CC parameter X sent, second push: second LED lit (others LEDs turned off) and CC parameter Y sent, ...).

Thank you Julien for your interest.

Regards.

Edited by Fairlightiii
Link to comment
Share on other sites

just an example on the fly :


unsigned char LED1;

#define pin 1 // led connected to shift register 1 , second out

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

//lighting LED

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

void LED()

{

if (LED1 == 1)

      // Note Off

      MIOS_DOUT_PinSet(pin, 1);

    } else {

      MIOS_DOUT_PinSet(pin, 0);

    }

}


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

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

{


  MIOS_MIDI_TxBufferPut(0xb0); // CC at channel #1

  MIOS_MIDI_TxBufferPut(pin);  // just forward the pin number (0..127)

  MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); // = 0x7f when 

                                                  // button pressed, else 0x00

pin_value++; // you can add a restrictive condition like if x>3 then x = 0 so that it cycle between 0,1,2 values

LED1 = pin_value;

}

LED() function must be in the mainloop (when mios is idle)

le mieux est de coder ton fonctionnement d'algorithme de manière générale et ensuite d'affecter les boutons et les leds à des états de diverses variables : si osc = sin alors led sin osc allumée donc led x allumée (voir le code du chaosmatrix)

Edited by julienvoirin
Link to comment
Share on other sites

Merci Julien. (je continue en français)

It seems easy when you read it like this...but it's not impossible that I come back to you for more advices in the future.

Do you think I should begin now to build my PCB (eagles), it will easiest to test the code with?

Regards.

Link to comment
Share on other sites

begin now to build my PCB (eagles), it will easiest to test the code with?

it is clear that having the controller done first and then coding is the easiest way of making things ... If you don't have an easy way to manufacture PCB, i advise you to get smash tv kits, then build your control surface on veroboard, then link midibox PCB to your control surface with wires, as i did for my Matrix controller. It is the fastest ! take a look in the chaosmatrix tread :thumbsup:

btw, it is better to develop the code with a switch(pin) statement in the DIN section. you should have a look in the user project, i had developped a generic keyboard ('voirinov')with a 3 states LED controlled by a single push button (1st push = green, second = red, 3rd = yellow)

switch (pin) : 

case 0 : // soit la 1ere entrée du SR

if (!pin_value) // si pine_velue change d'état

led_state_osc1 ++; // incrémenter la valeur de led_state_osc1

if (led_state_osc1 >3)

led_state_osc1 = 0; // si la valeur attend 4 on repart à 0


case 1 : // 2eme entrée du SR

if(!pin_value)

led_state_osc2++;


etc ...


ailleurs dans le code, tu définis :

led_state_osc1 = 0    =>   allumer la led bleue de l'osc1

led_state_osc1 = 1    => allumer la led rouge de l'osc1

etc ..

ed_state_osc2 = 0    =>   allumer la led bleue de l'osc2

led_state_osc2 = 1    => allumer la led rouge de l'osc2

etc ..

Link to comment
Share on other sites

Thank you Julien.

I'll spent times to study your project ASAP.

I've already bought and built SmashTV's core, DIN and DOUT.

Some months ago I've made some tests trying to make a control surface but unsuccessful with LED feedback (but I've no spent enought time to debug).

I must take time and restart little by little from the begining .

Now I have to modify my frontpanel because I must comply with the 1000dm3 restrictions of goldphoenix's for the PCB, passing the frontpanel from 6U to 5U and resolve this problem of only 2 extra LED outputs I have to find (removing 2 LEDrings maybe?).

Regards,

Jérôme.

PS: If someone has this synth, could he PM me (I have 2 or 3 questions about it). Thanks.

Link to comment
Share on other sites

i'll be happy to help you (despite my few free time), i did not imagine you were so advanced in the project :thumbsup:

concerning your PCB, i really advise you to integrate shift registers (74HC595 and 165) in the design, on the backside for example, even in CMS (SMD). Another solution to bypass goldphoenix size is to create 2 PCBs (10U !) linked by a cable like those in scsi (50 contacts) or IDE Hardrives

Link to comment
Share on other sites

i did not imagine you were so advanced in the project

There's several years I knew the project midibox of Thorsten and thinked about create my own midi control surface but the fact I was newbie was an obstacle.

One day I say myself: go! So I've bought all I need to build my project (soldering iron, multimeter, SmashTV's PCB, encoders...).

i really advise you to integrate shift registers (74HC595 and 165) in the design

Of course!

on the backside for example, even in CMS (SMD).

I plan to integrate all the composants in the top of the PCB. Is-it possible(I should have a space of 9,3 mm between the pannel and the PCB)?

to create 2 PCBs (10U !)

I don't need so much space!

I have modified my frontpanel to comply 5U.

This project includes:

49 encoders, 30 buttons, 2 rotary switchs (AIN module with differents resistors), 39 LEDrings (bargraph of 10 LEDs) and 48 LEDs.

All the parameters of the Maad's firmware will be directly accessible.

I have completed by 7 extra encoders and 6 buttons (4X DINX4 module full).

Regards.

Jérôme.

FPD V4 5U A4.pdf

Edited by Fairlightiii
Link to comment
Share on other sites

all the composants in the top of the PCB
imo this won't be easy as there should be lots of tracks, especially for leds (regarding your front panel design)

the trick is the backside (think to resistors ...) like in monome, or sandwich (Wilba)

sharing your pcb routing would give answers

nebula designed a CS based on CMS ; don't be afraid about cms, they are rather easy to solder when you know the trick (adding some flux before soldering ; desoldering is another story)

Link to comment
Share on other sites

Thank you for the trick Julien but I've already bought all the components and tools and there are not CMS compliant.

Making the PCB will be a long long step (I've only "played" with Eagle 1 or 2 times).

Am I too ambitious to thinking all the components will go on only one PCB?

I joint for those who are interested the last version (I'm pretty sure) of my frontpanel.

Regards.

Jérôme.

V5.1 A4.pdf

Link to comment
Share on other sites

Am I too ambitious to thinking all the components will go on only one PCB?

In my opinion --> no :(

there is a trick to bypass this problem : include simple DIL connectors on the back of your Control Surface PCB (repense au cable nappe IDE), then connected with flat cables to a "patch" PCB, then connected to regular DIN/DOUT

advantages :

-this way you limit the risk of errors as you work on 3 small PCB instead of a big one,

-you can do cross patching if you made mistakes in your eagle routing, as you just have to remake a flat cable between ''patch PCB" and DOUT/DIN modules. This limited the spaghetti stuff too !. This as been used on Arduinome project (arduinome shield with sparkfun buttons

cons :

not ultra clean like a wilba seq :/

you can call me if you want me to explain how i imagine the stuff

best regard

PS : if you aren't confident with eagle, i advise you to build on veroboard. i did this with 16 encoders, including the DINx4 on the back, using coloured flat wires : cheap, fast, easy, rather clean

Edited by julienvoirin
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...