Fairlightiii Posted June 13, 2011 Report Share Posted June 13, 2011 (edited) 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 June 13, 2011 by Fairlightiii Quote Link to comment Share on other sites More sharing options...
TK. Posted June 13, 2011 Report Share Posted June 13, 2011 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. Quote Link to comment Share on other sites More sharing options...
Fairlightiii Posted June 14, 2011 Author Report Share Posted June 14, 2011 Thank you Thorsten for your answer. Regards. Quote Link to comment Share on other sites More sharing options...
julienvoirin Posted June 14, 2011 Report Share Posted June 14, 2011 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 Quote Link to comment Share on other sites More sharing options...
Fairlightiii Posted June 14, 2011 Author Report Share Posted June 14, 2011 (edited) 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 June 14, 2011 by Fairlightiii Quote Link to comment Share on other sites More sharing options...
julienvoirin Posted June 14, 2011 Report Share Posted June 14, 2011 (edited) 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 June 14, 2011 by julienvoirin Quote Link to comment Share on other sites More sharing options...
Fairlightiii Posted June 14, 2011 Author Report Share Posted June 14, 2011 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. Quote Link to comment Share on other sites More sharing options...
julienvoirin Posted June 14, 2011 Report Share Posted June 14, 2011 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 .. Quote Link to comment Share on other sites More sharing options...
Fairlightiii Posted June 15, 2011 Author Report Share Posted June 15, 2011 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. Quote Link to comment Share on other sites More sharing options...
julienvoirin Posted June 15, 2011 Report Share Posted June 15, 2011 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 Quote Link to comment Share on other sites More sharing options...
Fairlightiii Posted June 16, 2011 Author Report Share Posted June 16, 2011 (edited) 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 June 16, 2011 by Fairlightiii Quote Link to comment Share on other sites More sharing options...
julienvoirin Posted June 17, 2011 Report Share Posted June 17, 2011 all the composants in the top of the PCBimo 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) Quote Link to comment Share on other sites More sharing options...
Fairlightiii Posted June 17, 2011 Author Report Share Posted June 17, 2011 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 Quote Link to comment Share on other sites More sharing options...
julienvoirin Posted June 17, 2011 Report Share Posted June 17, 2011 (edited) 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 June 17, 2011 by julienvoirin Quote Link to comment Share on other sites More sharing options...
boops Posted June 19, 2011 Report Share Posted June 19, 2011 Hi (julien) do you known the upgrade My link I am french from Paris ,ive done it ..to cool je suis de prés ton projet pour mon Cheetah Best regards Philippe Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.