Jump to content

julienvoirin

Programmer
  • Posts

    790
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by julienvoirin

  1. écris à Doug Wellington, il pourra peut-être te lâcher un PCB par contre il faudra sourcer toi-même les composants si c'est le cas (pas impossible mais fastidieux) à mon avis l'accent n'a qu'un niveau, comme sur une TR909 (contrairement à la Machinedrum où chq partie peut avoir un niveau d'accent différent du global), mais reste "dosable" comme sur une TB303
  2. Ableton does that : just create blank midi clip but correctly set up program change (there is a tick box where you can set the Pgm chg in the bottom left corner) An hardware solution is to make your own midibox with a custom application (rather esay as you only need to send program change messages
  3. ouais. il y a eu lieu (y a plus de 2 ans !) une liste d'attente. le kit n'est pas encore distribué ! c'est très long
  4. why don't you integrate the shift registers to your PCB ? this would avoid you a lot of wires inside your midibox
  5. all ya needs here : http://www.ucapps.de/mbhp_burner.html so burn bootloader, then uplaod mios there is an app to change the ID in the MIOS8 svn repository (or download section of the website) i advise you to work with ID00 all the time, except for multiple core app like SID. LCD type can be set up in the app, no need to change ID are you sure than your .hex are not corrupted ? before bootloader was 1.1 and now its 1.2. they are not compatible. use the last bootloader, downoaded from ucapps website (and not from a clone from smash tv PIC)
  6. yes, with Sysex. there is a perl script that transform .hex to .syx in the svn repository notice that you need a delay of 750ms between sysex packets (in mios studio too!) as described on ucapps website you can also try different device ID (0,1,2,3.... etc) i believe that MIOS Studio can't communicate (the handshake stuff, named "QUERY") with the PIC so long there isn't MIOS intalled into PIC (but really not sure, to verify) BTW, if you've got a programmer, i advise you to reburn bootloader with p18.exe. you don't need to configure anyhting, just upload the hex, ID will be automatically be 00
  7. does someone know how to make this cursor at the good position ??? it appears on the 4th line (adress 0xc0) on a 4x20 LCD i can edit the EditBuffer but the cursor don't want to move :getlost: #include <cmios.h> #include "chaosmatrix.h" #include "softpanel.h" #include "lcd.h" #include "din.h" #include "midi.h" #include "patchnames.h" #include "memo.h" #include "ui_patch.h" unsigned char banksaved; unsigned char programsaved; unsigned char saved; static unsigned char cursor; /* EDIT PAGE 1 [] [] [ ] [] [] 12345678901234567890 SELECT EDIT GROUP LFO VCA ENV PRTA RMP EDIT PAGE 3 [] [] [ ] [] [] 12345678901234567890 BNK SAVE PATCH? 0 abcdeghj:00 save EDIT PAGE 2 [] [] [ ] [] [] 0123567890123567890 uOOO ________ < > editname save o o * * o */ //////////////////////////////////////////////////////// // Display for edit //////////////////////////////////////////////////////// void UI_Display_Edit (void) { unsigned char i; switch(SoftPanel.Page) { case SOFT_PAGE1: MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_PATCH].dout_pin); // off MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_EDIT].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_OSCILLATORS].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_FILTER].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_ENVELOPES].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_KEYBOARD].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_MATRIX].dout_pin); // on MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_PAGE].dout_pin); // off MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0 + LCD_Offset); MIOS_LCD_PrintCString("SELECT EDIT GROUP"); MIOS_LCD_CursorSet(64 + LCD_Offset); MIOS_LCD_PrintCString("LFO VCA ENV PRTA RMP"); break; case SOFT_PAGE3: // save patch to matrix1000 memory if(SoftPanel.IsNewPage) { MIOS_LCD_Clear(); MIOS_LCD_PrintCString("OSC BEND MODW PORTA"); MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_PATCH].dout_pin); // off MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_EDIT].dout_pin); // off MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_OSCILLATORS].dout_pin); // off MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_FILTER].dout_pin); // off MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_ENVELOPES].dout_pin); // off MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_KEYBOARD].dout_pin); // off MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_MATRIX].dout_pin); // off MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_PAGE].dout_pin); // on MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0 + LCD_Offset); MIOS_LCD_PrintCString("BNK SAVE PATCH "); MIOS_LCD_PrintBCD1(BankNumber); MIOS_LCD_PrintBCD2(ProgramNumber); if(ProgramNumber < 10) { MIOS_LCD_CursorSet(16 + LCD_Offset); MIOS_LCD_PrintChar('0'); // place a zero here for values below 10 } saved = 0; } MIOS_LCD_CursorSet(64 + LCD_Offset); MIOS_LCD_PrintBCD1(banksaved); MIOS_LCD_CursorSet(64+4 + LCD_Offset); MIOS_LCD_PrintCString(PatchNames[banksaved][programsaved]); MIOS_LCD_PrintChar(':'); MIOS_LCD_PrintBCD2(programsaved); if(programsaved < 10) { MIOS_LCD_CursorSet(64+13 + LCD_Offset); MIOS_LCD_PrintChar('0'); // place a zero here for values below 10 } MIOS_LCD_CursorSet(64+16 + LCD_Offset); if(!saved) MIOS_LCD_PrintCString("save"); else MIOS_LCD_PrintCString(" "); break; case SOFT_PAGE2: // name the patch //if(SoftPanel.IsNewPage) //{ /* EDIT PAGE 2 [] [] [ ] [] [] 12345678901234567890 uOOO ________ < > editname save o o * * o */ MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_PATCH].dout_pin); // off MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_EDIT].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_OSCILLATORS].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_FILTER].dout_pin); // on MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_ENVELOPES].dout_pin); // off MIOS_DOUT_PinSet0(DIN_ConfigMap[DIN_KEYBOARD].dout_pin); // off MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_MATRIX].dout_pin); // on MIOS_DOUT_PinSet1(DIN_ConfigMap[DIN_PAGE].dout_pin); // on //1st line MIOS_LCD_Clear(); MIOS_LCD_CursorSet(1 + LCD_Offset); MIOS_LCD_PrintCString("u"); MIOS_LCD_PrintBCD2(uBS_uBank); MIOS_LCD_PrintBCD2(uBS_uPatch); // place a zero here for values below 10 (bank & patch) : if(uBS_uBank < 10){ MIOS_LCD_CursorSet(2 + LCD_Offset); MIOS_LCD_PrintChar('0'); } if(uBS_uPatch < 10){ MIOS_LCD_CursorSet(4 + LCD_Offset); MIOS_LCD_PrintChar('0'); } MIOS_LCD_CursorSet(7 + LCD_Offset); MIOS_LCD_PrintCString(":"); // print patch name : MIOS_LCD_CursorSet(9 + LCD_Offset); for(i=0; i<8; i++){ MIOS_LCD_PrintChar(EditBuffer[i]); } //cursor //MIOS_LCD_CursorSet(cursor + 9 + LCD_Offset); MIOS_LCD_Cmd(0x80 + cursor + 9 + LCD_Offset); MIOS_LCD_Cmd(0x0e); // 2nd line MIOS_LCD_CursorSet(65 + LCD_Offset); MIOS_LCD_PrintCString("<"); MIOS_LCD_CursorSet(69 + LCD_Offset); MIOS_LCD_PrintCString(">"); MIOS_LCD_CursorSet(71 + LCD_Offset); MIOS_LCD_PrintCString("EditName SAVE"); break; //} } } //////////////////////////////////////////////////////// // Handle for Edit //////////////////////////////////////////////////////// void UI_Handle_Edit(void) { if(SoftPanel.Page == SOFT_PAGE1){ switch (SoftPanel.Button) { case DIN_PAGE: SoftPanel.Page = SOFT_PAGE2; break; } } else if(SoftPanel.Page == SOFT_PAGE2){ switch (SoftPanel.Button){ case DIN_PAGE: SoftPanel.Page = SOFT_PAGE3; break; case SOFT_EDIT_1: // "<" cursor--; MIOS_LCD_Cmd(0x10); break; case SOFT_EDIT_2: // ">" cursor++; MIOS_LCD_Cmd(0x14); break; case SOFT_EDIT_5: Write_Patch_To_BS(uBS_uBank,uBS_uPatch); break; case DIN_EDIT: SoftPanel.Page = SOFT_PAGE1; break; } //if(SoftPanel.EncoderValue != 0){ // encoder EditBuffer[cursor] += SoftPanel.EncoderValue; if (cursor > 7) cursor = 0; //} } else{ // page 3 switch (SoftPanel.Button){ case DIN_PAGE: if(!RefreshSoftPanel) SoftPanel.Page = SOFT_PAGE1; break; case SOFT_EDIT_1: if(!RefreshSoftPanel){ banksaved = banksaved == 0 ? 1 : 0; saved = 0; } break; case SOFT_EDIT_5: if(!RefreshSoftPanel){ MIDI_SavePatch(banksaved, programsaved); saved = 1; } break; case DIN_EDIT: if(!RefreshSoftPanel) SoftPanel.Page = SOFT_PAGE1; break; } if(SoftPanel.EncoderValue != 0){ // encoder programsaved += SoftPanel.EncoderValue; if(programsaved > 99) programsaved = 0; if(programsaved > 99) programsaved = 99; saved = 0; } // end if encoder } // end else page 2 }
  8. julienvoirin

    ...

    ya, i had well understood. you asked what could be the problem with a UNIQUE faceplate, so i pointed out from my experience : i've build several project, midibox or not, and each time faced to boring problems like US vs EU design, an american screw not fitting in an EU spacer for example ; btw, s.o know why ??) i had found that the simple blind holes you did on the back was rather cool as it let me use whatever i wanted (or could find !) : spacer, screw or metal wire. associated to JB Weld, it is rather strong
  9. julienvoirin

    ...

    well there are several hole types, depending on the shape of the screw. cf picture
  10. julienvoirin

    ...

    imo it's a bad idea the design is really really nicer when there isn't visible screws, even if it cost 30 bucks more moreover it produces another problem : what screw to use ?? in FPD you will notice several available types
  11. the LCDs share the same pins, except for 1 wire, being the adress so the best is to do what's done for harddrives in computer : ribbon cable. just isolate the adress wire and it is OK connector is the following http://radiospares-fr.rs-online.com/web/1927350.htmlHE10 Rq : if pinout of LCD and Core differ, just rearrrange order on Core's connector , it is easier than rearranging on each LCD !! (i did this on my seq v2)
  12. netzteil zu klein or kurzschluss
  13. you should keep it. its sound is just so THICK ! i've hesistated to give/sell mine too some years ago, but its tones are awesome
  14. i've got TLV5630IDW i don't use, cheap bought on ebay
  15. thanks guys I resolve this issue with the EXIT button :thumbsup:
  16. how to configure ethernet ?? i can't find the menu mios terminal says : [201139.905] [UIP_TASK] DHCP Client requests the IP settings... thanks & best regards
  17. fake ad from the 80s french famous Les Nuls : the kick in the ass : tasted (tested) and approved !
  18. demo of the arpegiator using 1/16 sync speed and 2 bars sync speed it sends midi clock and start message to the drummachine next step : external sync clock MatrixBoxSource_JV_beta v0.62.zip
  19. Matrix1000 can't fit the same rack as it is too deep it is a 3U rack for the moment i work on the firmware, especially a good manner to get back the matrix 6 patches (it doesn't have the same sysex system as the matrix 1000, but it has the patchname :rolleyes: the arpegiator works, but you need a normal midi keyboard (i mean, note on AND note off , 0x90 & 0x80) as my roland Juno2 doesn't do the job for example( only note on, note off are produced as note on with a velocity null). i am still working on the arp code, as today you can change arp speed (from 1/32 to several bars) need to implement octave, other pattern like updown and maybe "swing" once firmware rather well developed, i will do a real PCB -not veroboard with wires- (or not, i still do not know)
  20. Some news I've worked during long nights to enhance the ChaosMatrix application. The hardest has been to understand all the philosophy of the original firmware. It's a good philosophy, well documented and there are some fun tricks. So now it has : - Bankstick support. Up to 8 BS of 32KB, each contains 100 patches. Possibility to save patch into bankstick and recall them later. Still possibility to save into Matrix1000. from that : - Naming of patch is possible (2nd page of EDIT), name is stored into bankstick with the parameters of the patch (in fact EditBuffer[0,1,2,3,4,5,6,7] is stored as in Matrix6) - Internal router : possibility to route incoming midi signals to 4 IIC modules output, each one deriving its midi channel from the midi channel mentioned in PATCH menu (e.g channel 2 on IIC1, channel 3 on IIC2, channel 4 on IIC3, channel 5 on IIC4, midichannel set up is channel 2 in PATCH). By editing device.h, you still can force midi signal to default core midi out (replace 0x12, 0x14, 0x16, 0x10 by 0x00). Possibility to edit up to 4 Matrix using a single ChaosMatrix. - single patch dump from Matrix1000 : possibility to store a single patch from a Matrix 1000 to a bankstick memory (last page of PATCH menu). Memory location is defined by the encoder. to improve : - Bank dump : possibility to get a full Bank of 100 patches from the Matrix 1000 directly stored into one BS. Doesn't work except for 1st patch. Don't know if the dump goes too fast for the algorythm or if the algorythm is not good. -arpegiator : it arpégiates !! UP motif for the moment, works in beta0.53 but still in test. Arpegiator needs an extra button called DIN_ARP, or code must be moved (move ui_arp.c in ui_patch.c for example) Rq : if using an ultracore, remove ALL jumpers for IIC u069 indicates user Bankstick 0, patch 69 m000 indicate patch 000 on the matrix1000 A special BIG UP to JackChaos, TK and Bill as i've used some of their code blocks [edit : post edit due to bug in code ; now WORK :shifty: ] MatrixBoxSource_JV_beta v0.53.zip
  21. n'importe quoi qui fait contact qd tu appuies dessus et enlève le contact qd tu relaches fera l'affaire. Y a un petit algorythme de "debounce" inclus afin d'utiliser des boutons de mauvaise qualité en anglais : tact switch
×
×
  • Create New...