Jump to content

SID: some questions, less answers


royal_orchestra
 Share

Recommended Posts

Hi,

I finished a sid synth with mininimal control unit, one slave.

I had some problems. Perhaps someone is interrested:

I finally got the jdm burner working by replacing the 8,2 V Zener diode with a 9,1 V.

Another problem that took a lot of time was caused by dirty sid-pins. ::)

(I controlled the circuits and the soldering points for days)

But now I've got some questions:

1. Since I've updated to a PIC18f master, ( the slave is the old 16f) I can't get Jsynth (version 0.20 mod) running.

It's not possible to choose banks ( got two banksticks now), or to GET something from the sid.

(The patchmanager and all other software work fine.)

Jsynth version 0.18 worked with the single 16f sid (I think I didn't have a Bankstick),

but now it complains about an unknown format: "propably an otari patch"

2. If the delay in the osc menu is set to something different than 0 the master sid (6581) makes no sound.

3.I've got an evolution masterkeyboard with some assignable controllers.

In the edit mode I see the change of the values on the lcd screen and I can save it manually, but the led does not flash if i change a value not from the control panel but from the outside.

The values on the lcd only change for the master. the slave only changes the sound.

4.Is it possible to use the sid3 /sid4 buttons as start/stop toggle buttons for the Wavetable-sequencer?

Perhaps they could send note on/off events. I created some drumloops and this would be useful live. (no beer-bottle on the masterkeyboard that does this job ;)

I searched the forum, and found some topics, but I still don't know which changes in the code I've to make.

Thank you for answers

Link to comment
Share on other sites

Hi,

I think it's better to answer your questions in the SID boards, since some are "FAQ"s

1) yes, it's not possible to select the BankStick with JSynthLib - the core library doesn't prove such a opportunity, as a JSynthLib user I'm "mightless"

It's also a known problem that the "get" function doesn't work properly - in the meantime this concept has been changed (you could download the latest sources from the CVS), but it's not complete yet and a little bit buggy...

2) which patch?

3) known and intended behaviour, the reason can be found here http://69.56.171.55/~midibox/forum/index.php?topic=4878.0, an improvement is also built into the current beta version of v1.7303 which is available on request

4) I see the point - yes, it could be useful (especially for the TB303 emulation) - which button combination would you prefer as a shortcut for such a function?

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi!

2) The patch does not matter. For example the "new patch" with an increased delay.

3) Good, a useful improvement. I'm looking forward to the release of this version.

4) I only have two sid devices until now. That means the buttons sid3 and sid4 have no function. So in my case it would be possible to make "sid3" a start/stop button for sid device 1, "sid4" a start/stop for Sid device 2.

I think a good combination would be SIDx + Menu. If you want Sid 1 and Sid 3 for example to play a sequence, you could press and hold the Sid1 and sid3 button, then press "menu" and both sequences start at the same time.

(Perhaps the Leds of sid1 and sid3 could flash)

This combination would be suitable for every user, with one sid device or four, with complete or minimal control surface.

and if you make a mistake (for example press only one of the buttons) nearly nothing happens. (compared to link,cc,...)

best regards,

Jens.

Link to comment
Share on other sites

Hi Jens,

I was able to reproduce issue 2) - I will fix this in the next version

4) the combination SIDx + menu button is really clever, I will go for this solution (about 10 lines of additional code...)

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi Thorsten,

i'd love to check the 303 version.

and I did of course:

the play function is wonderful. It gives the feeling of playing with a real bass/drum-box. and it is useful for editing all kind of patches (but polymodes). I remember a threat about designing a 303-like additionaly cs especially for the Mbhp Sid or not. I think it would be nice to interact with the wt-sequencer more physically. just a remark

I saw that all sids start playing, if they got the same midichannel#. another remark.

Its fun to change the wt# in the playmode, but my new sid303 stops playing when i change the the patch. (I don't know if it would be good or not to change this, because of the time needed for switching. Perhaps the sid could switch to the new patch a short time (latency-time if known) before the current loop ends?)

The delay works fine now.

And finally my experiences with the edit function:

-It works if you are in a menu ( = have pressed one of the select buttons of the cs).

-if you are in the top screen ( where you can see the patchname) instead, the led flashes (thats new), the sound changes, but the values stay the same.

-you have to change the patch with the cs buttons to save. If I change the patch after editing it from the Masterkeyboard, the changes are not saved. But a programmchange from the masterkeyboard with the current patch# does not reset the values anymore.

(I was not able to check all the edit things with the slave because it is a PIC16f.)

I hope this helps you.

Best regards

Jens

Link to comment
Share on other sites

Hi Jens,

I've created a new version which should work better now, but not all "imperfections" can be fixed, due to various reasons.

-> http://www.ucapps.de/mios/midibox_sid_v1_7_303beta9.zip

I wrote about the reasons some time ago, but since the answers are spreaded over this forum, I will summarize them here (with some new insights and outlooks)

additional hardware for TB303 sequencer: thats possible, my private blocking point is, that I haven't found a nice case for a "breakout box" yet (which then will be connected to a joystick port of the C64 case). I don't want to start with the implementation before I've a ready-built hardware, because it makes a big difference when everything is right in place before the programming phase, or if some stuff can only be prepared but not be tested.

Play mode: yes, thats a known "problem". I had to decide if I either send a "play command" via SysEx, or via a common MIDI note. I prefered to use a MIDI note, since it is transfered faster (minimum latency) and since it is compatible with the old PIC16F hardware (I didn't know that your slave uses it - but it seems that it was good that I considered this)

Sending a note instead of SysEx has also the advantage, that if SIDs are assigned to the same channel, they will be started at exactly the same time without a delay. Doing the same with SysEx would mean that I would have to implement something like a "broadcast" function (SysEx message which is taken independent from the Device ID), and this would increase the code size too much for such a minor feature. For the PIC16F firmware it wouldn't be possible (out of memory)

Continue playing while changing a complete patch: this would lead to many unwanted side effects and wouldn't work properly in all cases. A patch change does not only refresh the SID registers, but especially resets the whole sound engine, which is so mighty like a soft synth. There are many dependencies between the registers (values which have to be stored and written back after the change), which makes such a feature to a mess for a programmer.

A proper patch change without reset would also require that the whole patch data is transfered to the SID as well as to the sound engine within one update cycle (0.8 mS), this is not possible with the PIC. It's especially not possible to send so much data to the slaves within this short timewindow, since the transfer takes ca. 260 mS.

Update of incoming CC values: it should work better now, parameters to the master SID are updated regardless of the menu page. The change will be visible after one second (worst case), but it should never got lost now (in edit mode!)

Update of CCs to slaves: nearly impossible with the concept. At the time where I started with the implementation of the SID application on the PIC18F I had to decide how to store the data structures. I choosed a dual storage method: one compressed structure which reflects the SysEx dump and which is easy (and fast) to handle for the control surface when multiple SIDs have to be serviced, and another structure which is optimized for the sound engine. A third structure is given by the CC->parameter assignments, but this is (fortunately) not stored in memory, but directly transfered into the SID and SysEx memory.

This works fine in most cases, but it has disadvantages which must be accepted. E.g., since it is possible to change multiple parameters with a single CC (e.g. CC#16 which changes the transpose value of all three oscillators), an incoming CC cannot be easily mapped to a byte in the SysEx structure.

The current solution is to read back the data from the sound engine data storage and copy it into the SysEx storage when the CPU has some free time. This works fine, but only for the master SID, because the control surface has no access to the sound engine storage of the slave SIDs (unidirectional interface...)

Another solution could be to write a large function which decodes the incoming CCs and passes them to the appr. registers of the SysEx structure. This would work for the master and the slaves, but it would consume so much code memory, that other features would have to be removed. Therefore I prefered the "cheaper" solution.

There are two good points which I want to mention here:

1) for the MIDIbox FM I solved such problems very early in the design phase - MBFM has a single data structure which is optimized for SysEx/CC and OPL3 accesses (it took some time to find out all relationships) - so, in MBFM the data is always consistent

2) sometimes I'm thinking about a major redesign of the SID application which doesn't consider compatibility issues, but results into an "perfect" implementation based on my experiences in the last years. But on the other hand I think that the current implementation isn't that bad, that everybody can live with such imperfections when he knows how to handle with it...

However, just another remark: if the PIC18F4620 wouldn't have that f*cked EUSART and CPU bugs, all these issues wouldn't exist anymore, because this chip offers twice the flash memory, and much more RAM... the existing firmware could be freely extended without such "50% solutions". So, my hope is, that Microchip releases a new chip revision, so that it is possible to make the application perfect without the previously mentioned redesign.

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi Thorsten,

do you already know which functions or knobs the tb303 box will provide?

playmode(midichannel): Its not a problem. It is more a feature. Just choose the same Channel for another Sid and it will run unisono for sure.

(Perhaps you could let the LCD know about this feature. but that's not important)

I think continue-playing is also not important. I already thought it would be an ineffective, propably buggy feature (strange bleeps and clonks during switching). Now it is a clear solution.

edit-mode: The incoming cc values do their job perfect now.

Only a programm-change does not save the values, but a programchange from the cs makes a fast save anyway.

Sometimes its interesting to change the values of a patch directly at a slave device. For example if you use very different SID Chips. I' ve got a 8580 rev5 and a 6581 (old, rev1/2?). The second has a built-in distortion-feature  ;),  I like to use for drum sounds. But I got a cs for making the patches.

"But on the other hand I think that the current implementation isn't that bad, that everybody can live with such imperfections when he knows how to handle with it... "

"that bad":  It is f**$§&/***'#  great, because it works well. The Mbhp Sid makes any other SID-Synth I saw on the web a nice try. Thank you.

And the users (like me) get information how to to treat their sids by this forum.

Perhaps Microchip will fix the silicon-bug someday. Let's make music until then.

Best regards

Jens

Link to comment
Share on other sites

TB303 breakout box: no, I cannot tell you how it will look like exactly. I can only say, that it will have up to 24 buttons and up to 16 LEDs (means: 3*74HC165 and 2*74HC595). It won't get additional knobs, since they are already part of the control surface (step C)

Best Regards, Thorsten.

Link to comment
Share on other sites

Hello,

I noticedthis in the changelog:

once I got      the Curtis chips I will do some experiments with 8bit CutOff  and 8bit Resonance

now that's interesting.  ;D

i'm also waiting for my cem 3372's (that's a vcf\vca combination) to be delivered.

i was thinking of using one for each sid.

it would be nice if you could have them controlled independently from the sid's build in

filters and envelopes.

i guess 8 bit cv resolution should be enough, that's what all the older analog synths used.

what kind of curtis chips are you using?

kind regards,

Stefan

Link to comment
Share on other sites

Hi Stefan,

I will get 4 x CEM 3378 in the next days from a group order which was organized by p-cord. So, there will be some people who will use this chip with their MIDIbox SID/FM in the future :)

Independent control: it's a planned feature to allow free-assignable analog outputs (to any MIDI or internal event, with offset and depth, setups stored in BankStick), but it's low-priority.

I use currently only one external filter, which can be quickly connected to the outputs of MBSID/FM/SEQ, therefore I don't need such a flexible solution by myself... but it will come (at least, once the PIC18F4620 is fully working)

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

×
×
  • Create New...