Jump to content

My first SID v2


normen

Recommended Posts

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:

osofp.jpg

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:

nnidM.jpg

Fitting it in:

xmQRC.jpg

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:

eaxOB.jpg

Idea for front panel:

WUPNK.png

Thanks again TK, I already funded another beer for you, your work keeps giving me moments of bliss ;)

Edited by normen
Link to comment
Share on other sites

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 ;)

Link to comment
Share on other sites

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..

Link to comment
Share on other sites

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 :-?

Link to comment
Share on other sites

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

ESUb9.png

Bassline Step Sequencer

XwuKX.png

Knob Assignment

lVf5W.png

Cheers,

Normen

Edited by normen
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by normen
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...