normen Posted December 17, 2012 Report Share Posted December 17, 2012 (edited) Hey, After having built a 19" plugin remote control and reviving a control surface with a MIOS heart transplant I finally got around doing my first MIDIBox SID v2 synth :D I have the parts for two stereo synths based on the 8580, one is finished now and its just marvelous. I'm all back to my childhood sitting in front of my Amiga.. But its like its grown up along with me ;) First signs of life: I used the normal boards from Mike plus one Pic8 core, so basically the minimal stereo/two channel solution. I want it to be as simple and modular as possible and rather have more of these boxes than one synth with multiple chips, I already know I will build another two boxes with the 6581 too ;) The simple feature set is MIDI in and out, stereo audio out and one integrated BankStick chip for 128 presets. As I chose a quite small box for it, I have to stack the boards and I actually stick the second board on the PIC and SID of the other boards.. Ran it for a night and theres apparently no heat issue with that and it fits perfectly. Board sandwich: Fitting it in: The simple aluminium box makes it easy to drill the holes for the connections, I already have plans to add a very small 2x16 display and a rotary knob plus four small buttons to the front panel, according to my measuring that should just about work out. Maybe it will be only an LCD display though, its easy to underestimate the space needed for knobs.. And I couldn't find a 4-button sticky buttons panel.. Anyway it looks very pretty as is already :D Final Box: Idea for front panel: Thanks again TK, I already funded another beer for you, your work keeps giving me moments of bliss ;) Edited December 18, 2012 by normen Quote Link to comment Share on other sites More sharing options...
nILS Posted December 18, 2012 Report Share Posted December 18, 2012 Nice build, :thumbsup: Enjoy your new toy! Quote Link to comment Share on other sites More sharing options...
normen Posted December 18, 2012 Author Report Share Posted December 18, 2012 Nice build, :thumbsup: Enjoy your new toy! Thanks. Yep, I also thought about fitting a board exactly for this but I found that having the base boards always turns out as an advantage in the end (or after some years ;)). Do you know of any standard way to make the default PCBs fit in this case? Like an extension of the PCB somehow? When I tried using two aluminium bars in the grooves to put the upper board on those it was exactly *not* fitting, like either 2mm into the boards below or into the case top ;) Quote Link to comment Share on other sites More sharing options...
normen Posted December 20, 2012 Author Report Share Posted December 20, 2012 aaaand #2 is done too, a bit cleaner than #1 :D Btw for the BankStick I found that its very practical to put them onto development boards to connect them, I guess I'm not the first though ;) Quote Link to comment Share on other sites More sharing options...
nILS Posted December 20, 2012 Report Share Posted December 20, 2012 For banksticks I prefer smd components :) Quote Link to comment Share on other sites More sharing options...
normen Posted December 20, 2012 Author Report Share Posted December 20, 2012 (edited) Gha, no thanks :D Also its built in, so no need to go down to purse-keepable size ;) Btw, any good way to enable midi thru without adding a new port :? Edited December 20, 2012 by normen 1 Quote Link to comment Share on other sites More sharing options...
normen Posted December 20, 2012 Author Report Share Posted December 20, 2012 D'oh.. I enabled midi merging and now I can't upload code anymore cause MIOS studio gets confused due to its own echo.. Guess I'll have to use some external tool if I want to change something in the future ;) Quote Link to comment Share on other sites More sharing options...
nILS Posted December 20, 2012 Report Share Posted December 20, 2012 You can use a simple midi splitter circuit like in the gm5x5x5 for that. Like this: Quote Link to comment Share on other sites More sharing options...
normen Posted December 20, 2012 Author Report Share Posted December 20, 2012 Hm true, did people test if the MIDI voltage can sustain this thing? I mean else I'd need another external power box or I'd have to add another connector to one of the sids which totally wrecks my layout (and probably won't fit..) :( Also didn't have too much success with MIDI merge. It works in general but e.g. the Ctrlr-surface can't receive the data from box one.. Almost seems like box two drops the data with the wrong device id or something, idk.. Quote Link to comment Share on other sites More sharing options...
nILS Posted December 20, 2012 Report Share Posted December 20, 2012 Yes, this has been done, but it's evil and you shouldn't do it. If you had the MIDI ports @ 45° you might be able to squeeze the third one in there with the other :) Quote Link to comment Share on other sites More sharing options...
normen Posted December 20, 2012 Author Report Share Posted December 20, 2012 I kind of planned that space to later add a transformer, lets see. For now I'll just use two USB-MIDI cables. Quote Link to comment Share on other sites More sharing options...
normen Posted December 22, 2012 Author Report Share Posted December 22, 2012 Found a solution, albeit a rather funny one.. I set the first box to MIDI_MERGER_MBLINK_FP and the second to MIDI_MERGER_ENABLED (instead of MIDI_MERGER_MBLINK_EP!) and that seems to work when chaining the two boxes :D I can use MIOS Studio as well as Ctrlr to edit patches on both boxes via the ID now and I get only the boxes' MIDI back, no SYSEX echo.. MIOS is still confused when trying to contact the core. When I set up FP/EP the cores crash directly on restart :-? Quote Link to comment Share on other sites More sharing options...
normen Posted December 23, 2012 Author Report Share Posted December 23, 2012 (edited) I started work on a control surface for Lemur. As I currently have most fun with the Bassline module I started doing an UI for that but its written so that it can be extended to the whole SID. The panels will adapt automatically based on the engine used and you can select one SID and basically directly work on its patches. From what I read here I guess TK also looked into doing this but theres a few things to overcome. First of all the single scripts can only have like 40 lines or so, then lists can only take 33 items (because they cannot be scrolled anyway), finally the LUA interpreter bails when the stack gets too big. This made it a bit hard to display the values for 255 parameters :) But I managed to by chaining multiple methods that each have a portion of the list, effectively I now have 12 methods and the first one looks like this (No worries, I let other code write the code for these methods :D): if(param>=231){return getParameterName11(param);} else if(param>=126){return getParameterName6(param);} else if(param == 0){return '0 | --- None ---';} else if(param == 1){return '1 | Volume';} ..... else if(param == 20){return '20 | Ext5 Value';} else return getParameterName1(param); Then the parameter selection works with a knob for coarse selection and two small buttons for the fine selection (see below). So, I hope I can get this to a workable state during the rest of this year ;) Then I'll make it available to the MIOS community to tear apart, extend, beautify and complain about ;) Bassline Oscillators Bassline Step Sequencer Knob Assignment Cheers, Normen Edited December 23, 2012 by normen Quote Link to comment Share on other sites More sharing options...
TK. Posted December 23, 2012 Report Share Posted December 23, 2012 Great work! I will definitely use this panel as well once it's ready, and of course I can help you to test all functions! :) Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
normen Posted December 23, 2012 Author Report Share Posted December 23, 2012 Great work! I will definitely use this panel as well once it's ready, and of course I can help you to test all functions! :) Best Regards, Thorsten. Cool, I'm using your Ctrlr surface as a guideline (sorry for the frustration on that side) the code for that being LUA already helps a lot :) I'll try and comment and document it best as possible so it can be extended easily. I know I will miss some functions and probably leave out some panels I seldom use on the first release. Cheers, Normen Quote Link to comment Share on other sites More sharing options...
normen Posted December 24, 2012 Author Report Share Posted December 24, 2012 (edited) It turns out to complete this I'll probably need some help. I can edit parameters fine but getting patch data turns out to be impossible. The Lemur flat out drops midi messages when they take too long until the final 0xF7... This means a patch dump always takes too long and gets truncated to 10-26 bytes :( I wrote a message to them and posted in their forum but I doubt we can hope for a quick fix. So I thought of the next best fix: Would it be possible to have the MidiBox SID send its patch data as separate sysex messages, one per parameter? As a separate dump mode? I guess it should be but as I am not very proficient in assembler (I prefer the MidiBox C api ;)) it would take me very long to get this working, so I am reaching out for help on this. Cheers, Normen Edited December 24, 2012 by normen Quote Link to comment Share on other sites More sharing options...
TK. Posted December 24, 2012 Report Share Posted December 24, 2012 I've currently no access to my MBSID and therefore couldn't try out code changes by myself. Your request to provide a command for sending individual parameters would lead to a lot of new code due to all the options (WOPT, engine, etc...) -> see also SID_SYSEX_ParWrite But the biggest problem would be the reduced transfer speed caused by the SysEx Header/Footer overhead. It would be easier to add a special dump transfer mode for Lemur, which has to be enabled with a special SysEx command (later). Today you could already try it out without such a command: In sid_sysex.inc, search for SID_SYSEX_SendDump Then search for "feed WDT" - after the "clrwdt" instruction enter: #if 1 ;; Lemur option movlw 0xf7 ; end SysEx rcall SID_SYSEX_TxBufferPut movlw 0xa0 ; for lemur: start sending common MIDI events rcall SID_SYSEX_TxBufferPut #endif [/code] Now the 1024 data bytes (resp. nibbles) will be sent as Poly Pressure events to Lemur with the same Bandwidth as if they would be embedded into a SysEx stream! :) Due to the "running status" feature of MIDI, 0xa0 only has to be sent once. All following two-byte pairs will be handled as Poly Aftertouch events. Second modification: after the SID_SYSEX_SendDump_I_Cont label write: [code] SID_SYSEX_SendDump_I_Cont #if 1 ;; send checksum movlw 0xa1 ; Poly Pressure, channel 2 - all data sent + checksum rcall SID_SYSEX_TxBufferPut movff SID_SYSEX_CHECKSUM, WREG sublw 0x80 andlw 0x7f rcall SID_SYSEX_TxBufferPut movlw 0x00 ; dummy rgoto SID_SYSEX_TxBufferPut #endif So - with 0xa1 Lemur will get a notification that the complete dump has been sent, and optionally you would also be able to compare the checksum. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
normen Posted December 24, 2012 Author Report Share Posted December 24, 2012 Smart :D I actually meant just sending the single addresses of the patch, not really single parameters. Thanks a lot, I guess I should be able to hobble this together like this. Cheers, Normen Quote Link to comment Share on other sites More sharing options...
normen Posted December 25, 2012 Author Report Share Posted December 25, 2012 (edited) Works exactly as advertised :) Would be great to have this in by default with its own dump command. Watch out for some post-christmas presents ;) Edited December 25, 2012 by normen 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.