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 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
Final Box:
Idea for front panel:
Thanks again TK, I already funded another beer for you, your work keeps giving me moments of bliss
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
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
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..
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
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
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 :-?
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):
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
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.
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.
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.
Smart 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.