Nomical Posted June 21, 2003 Report Share Posted June 21, 2003 Current solution: there is a table which allows you to assign the controllers. For changes you have to upload the whole application.Is this done by assigning the functions to a certain button/pot or encoder by the use of a number that's pre-assigned (in MIOS application code?) to a button/pot/encoder?You said there currently isn't any room in the PIC to implent the 'MIDI Learn' function. And that this function is available for the 16F8xx series designs. Wouldn't it therefor be possible to implent this myself in the application code if i start to make my application from scratch? Wouldn't a simple copy and paste, with some code changes for the new PIC routines, this code into my own code? This is because my own application would take less space as your SID application. Or isn't this possible, because it has to be a function of MIOS itself and not of the application and beside the MIOS (v3?) and the application there isn't enough room on the PIC for this? Quote Link to comment Share on other sites More sharing options...
TK. Posted June 21, 2003 Author Report Share Posted June 21, 2003 Since you cannot wait for the release... ;-) ; ========================================================================== ; In this table all encoder functions are listed ; the number and the position of entries are static and cannot be changed ; without a modification in cs_menu_enc.inc! ; ========================================================================== CSENC_ENTRY MACRO function, parameter, menu, page_offset, cursor_pos db function, parameter, menu, ((page_offset&0x0f)<<4) | (cursor_pos&0x0f) ENDM ;; available functions: ;; CSENC_ENTRY parameters: ;; - the ID itself ;; - the variable offset (see app_defines.inc, variables begin with CS_SID_*) ;; - the menu in which the variable is located (see cs_menu_tables.inc) ;; - the page offset (which menu item should be at the left border) ;; - the cursor position of the menu item #define CS_MENU_ENC_CHANGE_SYS 0x00 ; to change any internal parameter directly #define CS_MENU_ENC_CHANGE_OSC 0x10 ; to change parameter of currently selected OSC #define CS_MENU_ENC_CHANGE_LFO 0x20 ; to change parameter of currently selected LFO #define CS_MENU_ENC_CHANGE_ENV 0x30 ; to change parameter of currently selected ENV ;; CSENC_ENTRY parameters: ;; - the ID itself ;; - other values should be zeroed #define CS_MENU_ENC_CHANGE_MENU_P1 0x40 ; to change menu parameter #1 #define CS_MENU_ENC_CHANGE_MENU_P2 0x41 ; to change menu parameter #2 #define CS_MENU_ENC_CHANGE_MENU_P3 0x42 ; to change menu parameter #3 #define CS_MENU_ENC_CHANGE_MENU_P4 0x43 ; to change menu parameter #4 #define CS_MENU_ENC_CHANGE_MENU_P5 0x44 ; to change menu parameter #5 (if 2x20 display) #define CS_MENU_ENC_CHANGE_MENU_P6 0x45 ; to change menu parameter #6 (if >2x20 display) #define CS_MENU_ENC_CHANGE_MENU_P7 0x46 ; to change menu parameter #7 (if >2x20 display) #define CS_MENU_ENC_CHANGE_MENU_P8 0x47 ; to change menu parameter #8 (if >2x20 display) #define CS_MENU_ENC_CHANGE_MENU_P9 0x48 ; to change menu parameter #9 (if >2x20 display) #define CS_MENU_ENC_CHANGE_MENU_P10 0x49 ; to change menu parameter #10 (if 2x40 display) ;; CSENC_ENTRY parameters: ;; - the ID itself ;; - the CC number ;; - the menu entry will be ignored ;; - the page offset will be ignored ;; - the cursor pos will be ignored #define CS_MENU_ENC_CC_Rel1 0x50 ; to send a relative CC at channel 1 (for assign function) #define CS_MENU_ENC_CC_Rel2 0x51 ; to send a relative CC at channel 2 #define CS_MENU_ENC_CC_Rel3 0x52 ; to send a relative CC at channel 3 #define CS_MENU_ENC_CC_Rel4 0x53 ; to send a relative CC at channel 4 #define CS_MENU_ENC_CC_Rel5 0x54 ; to send a relative CC at channel 5 #define CS_MENU_ENC_CC_Rel6 0x55 ; to send a relative CC at channel 6 #define CS_MENU_ENC_CC_Rel7 0x56 ; to send a relative CC at channel 7 #define CS_MENU_ENC_CC_Rel8 0x57 ; to send a relative CC at channel 8 #define CS_MENU_ENC_CC_Rel9 0x58 ; to send a relative CC at channel 9 #define CS_MENU_ENC_CC_Rel10 0x59 ; to send a relative CC at channel 10 #define CS_MENU_ENC_CC_Rel11 0x5a ; to send a relative CC at channel 11 #define CS_MENU_ENC_CC_Rel12 0x5b ; to send a relative CC at channel 12 #define CS_MENU_ENC_CC_Rel13 0x5c ; to send a relative CC at channel 13 #define CS_MENU_ENC_CC_Rel14 0x5d ; to send a relative CC at channel 14 #define CS_MENU_ENC_CC_Rel15 0x5e ; to send a relative CC at channel 15 #define CS_MENU_ENC_CC_Rel16 0x5f ; to send a relative CC at channel 16 ;; CSENC_ENTRY parameters: ;; - the ID itself ;; - the CC number ;; - the menu entry will be ignored ;; - the page offset will be ignored ;; - cursor pos holds the register number (0x00-0x0f) in which the absolute value will be stored #define CS_MENU_ENC_CC_Abs1 0x60 ; to send a absolute CC at channel 1 (for assign function) #define CS_MENU_ENC_CC_Abs2 0x61 ; to send a absolute CC at channel 2 #define CS_MENU_ENC_CC_Abs3 0x62 ; to send a absolute CC at channel 3 #define CS_MENU_ENC_CC_Abs4 0x63 ; to send a absolute CC at channel 4 #define CS_MENU_ENC_CC_Abs5 0x64 ; to send a absolute CC at channel 5 #define CS_MENU_ENC_CC_Abs6 0x65 ; to send a absolute CC at channel 6 #define CS_MENU_ENC_CC_Abs7 0x66 ; to send a absolute CC at channel 7 #define CS_MENU_ENC_CC_Abs8 0x67 ; to send a absolute CC at channel 8 #define CS_MENU_ENC_CC_Abs9 0x68 ; to send a absolute CC at channel 9 #define CS_MENU_ENC_CC_Abs10 0x69 ; to send a absolute CC at channel 10 #define CS_MENU_ENC_CC_Abs11 0x6a ; to send a absolute CC at channel 11 #define CS_MENU_ENC_CC_Abs12 0x6b ; to send a absolute CC at channel 12 #define CS_MENU_ENC_CC_Abs13 0x6c ; to send a absolute CC at channel 13 #define CS_MENU_ENC_CC_Abs14 0x6d ; to send a absolute CC at channel 14 #define CS_MENU_ENC_CC_Abs15 0x6e ; to send a absolute CC at channel 15 #define CS_MENU_ENC_CC_Abs16 0x6f ; to send a absolute CC at channel 16 CS_MENU_ENC_TABLE ;; OSC "Env" Layer ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_DELAY, CS_MENU_OSC, 0x03, 0x03 CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_ATTACK, CS_MENU_OSC, 0x03, 0x04 CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_DECAY, CS_MENU_OSC, 0x03, 0x05 CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_SUSTAIN, CS_MENU_OSC, 0x03, 0x06 CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_RELEASE, CS_MENU_OSC, 0x03, 0x07 ;; OSC "Misc" Layer ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_TRANSPOSE, CS_MENU_OSC, 0x09, 0x09 CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_FINETUNE, CS_MENU_OSC, 0x09, 0x0a CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_PORTAMENTO, CS_MENU_OSC, 0x09, 0x0b CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_ARPEGGIATOR,CS_MENU_OSC, 0x09, 0x0c CSENC_ENTRY CS_MENU_ENC_CHANGE_OSC, CS_SID_VOICEx_PULSEWIDTH, CS_MENU_OSC, 0x09, 0x0d ;; OSC "Assign" Layer ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CC_Abs16, 0x10, 0x00, 0x00, 0x00; HERE: CSENC_ENTRY CS_MENU_ENC_CC_Abs16, 0x11, 0x00, 0x00, 0x01; Abs. Register CSENC_ENTRY CS_MENU_ENC_CC_Abs16, 0x12, 0x00, 0x00, 0x02; number CSENC_ENTRY CS_MENU_ENC_CC_Abs16, 0x13, 0x00, 0x00, 0x03; (0x00-0x0f) CSENC_ENTRY CS_MENU_ENC_CC_Abs16, 0x14, 0x00, 0x00, 0x04 ;; LFO section ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CHANGE_LFO, CS_SID_LFOx_RATE, CS_MENU_LFO, 0x00, 0x02 CSENC_ENTRY CS_MENU_ENC_CHANGE_LFO, CS_SID_LFOx_DEPTH, CS_MENU_LFO, 0x00, 0x03 ;; Filter section ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CHANGE_SYS, CS_SID_FILTER_CUTOFF, CS_MENU_FIL, 0x00, 0x01 CSENC_ENTRY CS_MENU_ENC_CHANGE_SYS, CS_SID_FILTER_RESONANCE, CS_MENU_FIL, 0x00, 0x02 ;; Env "Env" Layer ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CHANGE_ENV, CS_SID_ENVx_DEPTH, CS_MENU_ENV, 0x01, 0x01 CSENC_ENTRY CS_MENU_ENC_CHANGE_ENV, CS_SID_ENVx_ATTACK, CS_MENU_ENV, 0x01, 0x02 CSENC_ENTRY CS_MENU_ENC_CHANGE_ENV, CS_SID_ENVx_DECAY, CS_MENU_ENV, 0x01, 0x03 CSENC_ENTRY CS_MENU_ENC_CHANGE_ENV, CS_SID_ENVx_SUSTAIN, CS_MENU_ENV, 0x01, 0x04 CSENC_ENTRY CS_MENU_ENC_CHANGE_ENV, CS_SID_ENVx_RELEASE, CS_MENU_ENV, 0x01, 0x05 ;; Env "Assign" Layer ;; Function name parameter menu offset cursor pos CSENC_ENTRY CS_MENU_ENC_CHANGE_MENU_P1, 0x00, 0x00, 0x00, 0x00 CSENC_ENTRY CS_MENU_ENC_CHANGE_MENU_P2, 0x00, 0x00, 0x00, 0x00 CSENC_ENTRY CS_MENU_ENC_CHANGE_MENU_P3, 0x00, 0x00, 0x00, 0x00 CSENC_ENTRY CS_MENU_ENC_CHANGE_MENU_P4, 0x00, 0x00, 0x00, 0x00 CSENC_ENTRY CS_MENU_ENC_CHANGE_MENU_P5, 0x00, 0x00, 0x00, 0x00 Quote Link to comment Share on other sites More sharing options...
TK. Posted June 21, 2003 Author Report Share Posted June 21, 2003 Since I will port all PIC16F firmwares to MIOS, you will have some very nice examples sooner or later. However, the integration is already possible and very easy: every MIDI event will be notified in USER_MPROC_NotifyFoundEvent ;; -------------------------------------------------------------------------- ;; This function is called by MIOS when a MIDI event has been received ;; which has been specified in the CONFIG_MIDI_IN table ;; Input: ;; o number of entry in WREG ;; o first MIDI event byte in MIOS_PARAMETER1 ;; o second MIDI event byte in MIOS_PARAMETER2 ;; o third MIDI event byte in MIOS_PARAMETER3 ;; -------------------------------------------------------------------------- USER_MPROC_NotifyFoundEvent return you have to copy the received bytes into variables which then will be taken by the MIDI learn function to assign the event to a button/knob/encoder or whatever. If this info is not enough, please wait for the ported firmwaresBest Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
TK. Posted June 29, 2003 Author Report Share Posted June 29, 2003 Panel & Case nearly finished - update :)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
DriftZ Posted June 29, 2003 Report Share Posted June 29, 2003 this looks awesome !must have :) ;) :D Quote Link to comment Share on other sites More sharing options...
Nomical Posted June 29, 2003 Report Share Posted June 29, 2003 Woh, that looks really nice!!Good job Thorsten!!!You were doing a little dance around your working spot when you finished this, weren't you? ;D Quote Link to comment Share on other sites More sharing options...
MrMusicman Posted June 29, 2003 Report Share Posted June 29, 2003 Hey ThorstenNice looking panel. 8)Kent Quote Link to comment Share on other sites More sharing options...
pay_c Posted July 3, 2003 Report Share Posted July 3, 2003 Those knobs are rocking! Cool one, TK. And really slim thing, too.Looking forward for the first demo MP3s!And also looking forward for me having enough money to get the encoders and PCBs I still need....argh. Quote Link to comment Share on other sites More sharing options...
TK. Posted July 4, 2003 Author Report Share Posted July 4, 2003 In the meantime I found some time to continue with the case. But there are still some issues which have to be solved: due to the 9V output voltage of the C64 PSU and the high current consumption caused by the LEDs and the backlit display, the 7805 gets extreme hot and therefore requires a big heatsink (or just a large metal plate)I haven't found a good solution for mounting the Audio & MIDI plugs, as well as the USB socket at the backsite yetthere isn't so much room in the C64 case for more extensions anymoreHowever, here a snapshot of the current status:I've also created a first demo, it's a remix of an older song originally arranged with MIDIbox64SEQ and an AN1x synth. In the remix everything you hear (beside of the Synth Toms in the background ;-)) comes from a MIDIbox SID . Not all sounds are played at the same time, the tracks have been recorded successively.See^H^H^HHear http://www.mp3.de/frequencies"Floating Sequences (SID remix) Part I"I'm not very satisfied with the results... the new (more powerfull) sounds and the old sequences are not really matching - just because the original composition hasn't been made with a MIDIbox SID ;-) Part II is planned, and this demo should give an impression of a new feature: an external Moog filter!I'm in contact with Dirk Lindhof who has a lot of experiences with modular synths - here a link to his homepage http://www.msc175.de/. He will send me a PCB of his 24db Moog filter module in the next days.The MIOS based MIDIbox SID (later also MIDIbox64SEQ) will support an interface function to the MAX525. This DAC provides 4 analog output channels with 12 bit resolution, it will supply the control voltage (CV) for any external extension. Of course, the 4 channels will also be integrated into the modulation matrix, and they will be controllable via CC :)Best Regards, Thorsten.P.S.: StepC is available for download... Quote Link to comment Share on other sites More sharing options...
d2k Posted July 4, 2003 Report Share Posted July 4, 2003 Awesome T!! ;DPart II is planned, and this demo should give an impression of a new feature: an external Moog filter! ;D ;D ;DThe MIOS based MIDIbox SID (later also MIDIbox64SEQ) will support an interface function to the MAX525. This DAC provides 4 analog output channels with 12 bit resolution, it will supply the control voltage (CV) for any external extension. Of course, the 4 channels will also be integrated into the modulation matrix, and they will be controllable via CC Shocking!!Peace...Dan Quote Link to comment Share on other sites More sharing options...
reincarnate Posted July 4, 2003 Report Share Posted July 4, 2003 Wicked....can it get any better???....looks like I'll be getting an Oakley Equinox then.... Quote Link to comment Share on other sites More sharing options...
pay_c Posted July 4, 2003 Report Share Posted July 4, 2003 Hey, thats cool! Although I already have an analoge moog filter... cant miss a second one.Because of the room: I used this with my MB64 for future extensions, perhaps you could use it as well:I just brought all unused in/outputs of the core (and a few left ones from the DOUTs/DINs) to some kind of extension slot (its a PCB connector, 32 pole). If I gonna need that stuff, I´ll just put it into a second case, which looks like the first one (only smaller).Perhaps this with the SID? Quote Link to comment Share on other sites More sharing options...
stryd_one Posted July 4, 2003 Report Share Posted July 4, 2003 Oh my giddy giddy gosh!!! :o :o :oI wonder if I'm the only one to notice...the combination of these two new features - an analog filter module, and a CV output... The CV out could be used to control the filter module... All MIDI controllable, and LFO's and ENV's would be a piece of cake....Can anyone say Sherman Filterbank?I am officially droooling ;DNow all we need is a sampler... Don't ask for much do I? heheheh ;) Quote Link to comment Share on other sites More sharing options...
Steven_C Posted July 4, 2003 Report Share Posted July 4, 2003 Oh my goodness! My jaw really dropped when I saw those pics! Thank you TK, for sharing your adventures with us!!! BTW, I have a simple VCF circuit somewhere if someone wants it... based on the (old) ca3080 dual transconductance op amp (though it may be hard to find this chip now) Quote Link to comment Share on other sites More sharing options...
nebula Posted July 4, 2003 Report Share Posted July 4, 2003 :o :o :o That looks friggin' amazing.That is MIDIbox of the week for sure ;) Quote Link to comment Share on other sites More sharing options...
TUX Posted July 4, 2003 Report Share Posted July 4, 2003 WAHHOO , je suis sur le cul ;D (i'm on my ass)if you go in this way all the time , i think i sold my ELECTRIBE EA-1 ;) ;D Quote Link to comment Share on other sites More sharing options...
pay_c Posted July 4, 2003 Report Share Posted July 4, 2003 :o :o :o  That looks friggin' amazing.That is MIDIbox of the week for sure ;)From now on, I suggest we introduce some "SID Synthi of the week" Topic as well!! ;DMine will be finished August or September. It will have about the same controlling layout (I just copied it... ;) ), but a completely different case and design. Quote Link to comment Share on other sites More sharing options...
Steven_C Posted July 5, 2003 Report Share Posted July 5, 2003 I have some ultramatched transistor pairs, and other bits that I was going to use for a diy moog filter once, but the pcb I was going to buy went out of production... but how hard to build is your filter project Thorsten? Does it use hard to get parts? I'd like to use the bits I have, if I can... or maybe you can put them to use Thorsten? Can you easily get the bits you need?BTW nice knobs! (from Waldorf, I assume, from months back someone did an oder I think I remember!!) Quote Link to comment Share on other sites More sharing options...
DrBunsen Posted July 5, 2003 Report Share Posted July 5, 2003 Congratulations Thorsten, Â the new front panel looks a treat! Â I'm so building one of them now.And I'm very happy to hear that you are designing a CV out module for the SEQ unit. Â I was waiting for the forums to come back online last week so I could do a search for that very thing.Yay x 9 ;D ;D ;DWhen you orginally showed the front panel design for the SID synth, I thought the modulation matrix was buttons, not LEDS, for instant patching. Is that possible?The Australian electronics supplier Jaycar sells a nice line of miniature push buttons with LEDs inside them. Quote Link to comment Share on other sites More sharing options...
Steven_C Posted July 6, 2003 Report Share Posted July 6, 2003 Hey Dr B... I bought one of those $0.80 very cheap alps LED buttons to try, but I didn't buy anymore, as (a) they need a square hole to look neat (more work)(b) The main problem is that the LED is deep down in the switch, and you need to look straight down from the top, to see if the LED is lit or not... Though maybe the clear plastic lid can be frosted, to diffuse/disperse the light from the LED so it can be visible from an angle? (frosted by use of a bead blaster, on the back of the removeable clear plastic top, but would be very tricky, and I wouldn't want to do more than a few by hand....) Quote Link to comment Share on other sites More sharing options...
chriss Posted July 6, 2003 Report Share Posted July 6, 2003 hello,all that sounds so nice, my next two years are planned. Hope that Thorsten is slowing down so we can catch up a littlebit. Unbelievable.chriss Quote Link to comment Share on other sites More sharing options...
TK. Posted July 7, 2003 Author Report Share Posted July 7, 2003 Thanks! :)I don't want to start a seperate filter project, my analog skills are low, and there are a lot of functional circuits available in the web. The CA3080 is still available, but very noisy. A multi state filter based on the LM13700 gives better results (I built it some years ago, unfortunately I've no idea where in my flat (or possibly in the cellar?) I can find this board. ;-)However, a Moog cascade filter can be build with common general purpose transistors, just only the resistor values have to be adapted.I will start a new MIDIbox SID analog extensions page in some weeks and add some links to other websites which are specialiced on analog DIY stuffDrBunsen: yes it's possible to replace the 15 select buttons by a matrix of 64 buttons, but this requires some (rel. simple) changes in the firmware. However, I prefer the existing solution, because it's smaller. It doesn't make a big difference from the ergonomic point of view, because mainly you want to see which modulation sources are linked to the targets, the buttons are only used for the configuration, and this will normaly not be changed that much during a playing session. On the other hand: this control surface is not the ideal solution for everybody, our workflows are too different - other variants are welcome! :)Hope to see some nice cases, but especially to hear some great SID tunes in the next weeks/months! :)Best Regards, Thorsten. 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.