Jump to content

julienvoirin

Programmer
  • Posts

    790
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by julienvoirin

  1. dear midiboxers i am looking for oberheim matrix6 keys ; E and D any infos are welcome of course see picture for infos best regards
  2. 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; }
  3. Dear All I've tried the GLCD option with MIOS32. The model is JM12864E and JM12864J. Its driver should be KS0108 from the datasheet. http://www.hzkcgd.com/pdf/JM12864E.pdf In Mac Os terminal, i've compiled the app_LCD tutorial , using the command line export MIOS328LCD=ks0108 make-s Unfortunatly, the display is not good: only the half left of the display displays something and what is displayed is a mix between the left and right of what is expected on the screen (a gauge modulated by modwheel). The 000 value column is centered CS 1 and 2 of the display are connected to J5C (A8 & A9 pins respectively) http://www.ucapps.de/mbhp/mbhp_lcd_ks0108_mios32.pdf In the Module code : CS1 is relative to CS0 and CS2 to CS1 (code starts at 0, datasheet starts at 1) J15 is well cabled as I have a picture ; while uploading firmware, It writes "MIO oader" (insted of "mios bootloader") Does someone have an idea of what I should do to configure it correctly ? I've updated my svn repository to the last changes (today) of course. I think it is a problem in the column driver or the CS config ; isn't it ? :( Thanks in advance
  4. i shared the code if i remember for a 8x6 matrix keyboard (the code has been done for reboot) http://4colors.free.fr/midibox/mes_projets/matrix%208x6%20keyboard_c_49_kbd_v3/
  5. Dear Midiboxers I've made a Bipolar PSU 220V AC : +/- 12V DC, following those rules : =bipolar&s[]=psu]http://www.midibox.org/dokuwiki/doku.php?id=bipolar_12v_psu&s[]=bipolar&s[]=psu It works fine, i've done it on verobaord with Fuse and switch, but i'd like to protect the user (me !) against electric shocks as it will be handled and used as is (not in a box). I've already put some nails enamel on the 220V circuit before the transformer and i would like to know if it is efficient (and enough !) Any advices welcome :)
  6. don't do this, there is the config file to customize :o
  7. solder it on veroboard with an additional DIL and put it in the bottom of the enclosure. another solution is to use a straight floppy connector on a vero and screw the vero on the panel. (or more gribish : the floppy connector of the C64 !) HE 902 : http://www.electronique-diffusion.fr/product_info.php?cPath=23_412_445&products_id=10921
  8. bought mine at : http://cgi.ebay.fr/SD-card-module_W0QQitemZ380094512121QQcmdZViewItemQQptZLH_DefaultDomain_0?hash=item587f65fbf9&_trksid=p3911.c0.m14#ht_2627wt_1242 works well
  9. to TwinX : i have job for you ! I need a "panel" for my Rainbow I am in ! I need ONE please
  10. please edit WIKI :) i am very interested to implement it in my Rainbow STM32 RGB buttons led controller
  11. No, SRIO = 74HC165 (i've just verified in the mios functions explanation), not pin of each SRIO. 16 is the maximum which correponds to 4 x DINX4. Thnaks btw
  12. DINx4 has been tested with miodio128 and is fully working. By swapping encoders on the 74HC165, it shows that my building is working too. So it is only software. Help please :-[
  13. here is the code : /* #include "cmios.h" #include "pic18f452.h" // absolute values are stored in this array unsigned char enc_value[16]; ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) __wparam { unsigned char i; // set shift register update frequency MIOS_SRIO_UpdateFrqSet(1); // ms // we need to set at least one IO shift register pair MIOS_SRIO_NumberSet(16); // for 128 pins // set speed mode for 16 encoders for(i=0; i<16; ++i) { // available speed modes: SLOW, NORMAL and FAST MIOS_ENC_SpeedSet(i, MIOS_ENC_SPEED_SLOW, 2); // encoder, speed mode, divider } } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS in the mainloop when nothing else is to do ///////////////////////////////////////////////////////////////////////////// void Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is periodically called by MIOS. The frequency has to be // initialized with MIOS_Timer_Set ///////////////////////////////////////////////////////////////////////////// void Timer(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when the display content should be // initialized. Thats the case during startup and after a temporary message // has been printed on the screen ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Init(void) __wparam { MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0x00); MIOS_LCD_PrintCString("Hello World!"); } ///////////////////////////////////////////////////////////////////////////// // This function is called in the mainloop when no temporary message is shown // on screen. Print the realtime messages here ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a complete MIDI event has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has been received // which has been specified in the MIOS_MPROC_EVENT_TABLE ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has not been completly // received within 2 seconds ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyTimeout(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI byte has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedByte(unsigned char byte) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS before the shift register are loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Prepare(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after the shift register have been loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Finish(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // 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 { } ///////////////////////////////////////////////////////////////////////////// // 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 { unsigned char new_value; // do nothing if encoder number greater than array size if( encoder >= sizeof(enc_value) ) return; // add incrementer to absolute value, store result in new_value new_value = enc_value[encoder] + incrementer; // branch depending on direction if( incrementer >= 0 ) { // overrun check: if new value >= 0x80, force to 0x7f (127) if( new_value >= 0x80 ) new_value = 0x7f; } else { // underrun check: if new value >= 0x80, force to 0x00 (0) if( new_value >= 0x80 ) new_value = 0x00; } // store and send absolute value if it has been changed if( new_value != enc_value[encoder] ) { enc_value[encoder] = new_value; MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1 MIOS_MIDI_TxBufferPut(0x10 + encoder); // CC# is 0x10 (16) for first encoder MIOS_MIDI_TxBufferPut(new_value); } } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam { } and i modified the mios.table.inc as this : extract ;; encoder entry structure ENC_ENTRY MACRO sr, din_0, mode dw (mode << 8) | (din_0 + 8*(sr-1)) ENDM ENC_EOT MACRO dw 0xffff ENDM global _MIOS_ENC_PIN_TABLE _MIOS_ENC_PIN_TABLE MIOS_ENC_PIN_TABLE ;; SR Pin Mode ENC_ENTRY 1, 0, MIOS_ENC_MODE_DETENTED2 ; V-Pot 1 ENC_ENTRY 1, 2, MIOS_ENC_MODE_DETENTED2 ; V-Pot 2 ENC_ENTRY 1, 4, MIOS_ENC_MODE_DETENTED2 ; V-Pot 3 ENC_ENTRY 1, 6, MIOS_ENC_MODE_DETENTED2 ; V-Pot 4 ENC_ENTRY 2, 0, MIOS_ENC_MODE_DETENTED2 ; V-Pot 5 ENC_ENTRY 2, 2, MIOS_ENC_MODE_DETENTED2 ; V-Pot 6 ENC_ENTRY 2, 4, MIOS_ENC_MODE_DETENTED2 ; V-Pot 7 ENC_ENTRY 2, 6, MIOS_ENC_MODE_DETENTED2 ; V-Pot 8 ENC_ENTRY 3, 0, MIOS_ENC_MODE_DETENTED2 ; V-Pot 9 ENC_ENTRY 3, 2, MIOS_ENC_MODE_DETENTED2 ; V-Pot 10 ENC_ENTRY 3, 4, MIOS_ENC_MODE_DETENTED2 ; V-Pot 11 ENC_ENTRY 3, 6, MIOS_ENC_MODE_DETENTED2 ; V-Pot 12 ENC_ENTRY 4, 0, MIOS_ENC_MODE_DETENTED2 ; V-Pot 13 ENC_ENTRY 4, 2, MIOS_ENC_MODE_DETENTED2 ; V-Pot 14 ENC_ENTRY 4, 4, MIOS_ENC_MODE_DETENTED2 ; V-Pot 15 ENC_ENTRY 4, 6, MIOS_ENC_MODE_DETENTED2 ; V-Pot 16 ;; encoders 17-32 ENC_EOT ENC_EOT ENC_EOT and it doesn't work for encoder 9 to 16 ! why ??
  14. after testing the resistance to weight of my monome's frontpanel, i think that Alu 3-4mm is better for frontpanel. Moreover the height of the spacer and encoder won't allow a 6-7 mm acryl frontpanel (the sandwich height with 2 acryl panels). But the case can be acryl ;)
  15. he use a sandwich technique with 2 acryl panels. the lower one has holes, screw and spacers. In black satin you see no screw behind the upper panel ;) it's a bit like threated holes from schaeffer if you cut the panel in 2 thicker ones. it is very clever and very cheap to do ! his tonon + mortaise technique for the case is very good too. yeah as i did on SEQ_2U (dédicace à reboot)
  16. Wilba does only PCB ! he recommends Schaeffer for panel.
  17. machinecollective.org (xndr) could maybe build our panel and case in black satin acryl ? i ordered him a monome 40h top and bottom and the quality is just PERFECT ! btw is there dxf of the panel ??
  18. I would try sparkfun's one, there are rather big (1,2cmx1,2cm);and can make visual feedback with LED http://www.sparkfun.com/commerce/product_info.php?products_id=7835 USB version is ready to go to a computer but you nedd to write the prog you can cut unneccesary buttons from the PCB (4x6 is easier to make)
  19. I'd like one please. I only know the wiki page order but no list
  20. http://lennonluks.atspace.com/projects/senior_project/senior_project.htmli like it :)
  21. Dear All does anyone have tried to extend sm64 to 128 ? according to the code, it seems that we count from 0 to 7 for the rows in the .inc ; I have been thinking to count from 0 to 15 in order to get 128 button/leds. Is it the idea ? More to come
  22. ah putain ! t'as les photos il me les faut avec le synthé allumé :)
  23. i would use button duoled matrix app if i were you and customize the app writing your own app. this allow you to have 64x2 Digital outputs and 64 Digital input. the 64 first dout would allow you to use led to see which frame is "ON" and the second 64 DOUT would be sent to relays. you will only use 2 74HC165 and 4 74HC595, one core and one bankstick. very cheap. the only problem you will have is to write the application in order to store the patches. http://www.midibox.org/forum/index.php/topic,10476.msg79411.html http://www.midibox.org/forum/index.php/topic,12724.0.html
×
×
  • Create New...