Jump to content

oscilator fade ins - ADSR and ASR


jrp
 Share

Recommended Posts

One of the greatest features i overlooked at first is the envelope each oscilator has. For static operation i set  Atck and Dec to 0 and control volume with Sustain to balance the sound.

 

With Attack it is possible to fade in each individual oscilator.  Very cool!

The osc will fade in to maximum level and then decay to sustain. Also very cool effects!

But often i would find it very useful if the osc could fade in to sustain-level without rising to maximum amplitude first.

So that the voice would fade in softly to a defined level and blend in with the others.

Like you have a Triangle wave and want to fade in just a bit of saw. With the ADSR function it will go "WHEII" first and then settle. Very nice with arpegiators...

I definitly like having both options!

 

In the analog world of an envelope generator i can flip one resistor on an comparator. Then it compares the charging of the capacitor with the sustain voltage instead of a (max level) reference and stops the charging as soon as sustain is reached. I call that ASR

 

In the ADSR the comparator will let the cap charge to that max level and then release it to discharge down to sustain.

Attack and Decay (and Release) are simple variable resistors, acting as a bottleneck for the current, making the charging and discharging take some time.

 

 

I wonder, in code, will this be much more complicated than that? Simply wiring in a switch to change a constant for a variable

 

 

max attack level = 0F

 

or:

 

max attack level = sustain level

 

 

 

Or is this simply impossible because the osc-envelopes are inside the sid and not generated by the software?

Edited by jrp
Link to comment
Share on other sites

Or is this simply impossible because the osc-envelopes are inside the sid and not generated by the software?

 

Yes, (unfortunately) the OSC ADSRs are hardware implemented in the SID chip and can't be emulated via SW - this would solve many things, especially the infamous ADSR bug...

 

Best Regards, Thorsten.

Link to comment
Share on other sites

I thought so (after writing my post). I also had a look at the datasheet of the sid, explains it as well.

Well, would have been nice, but on the other hand having envelopes for each voice is great as it is. And limitations can be worked around.

If i want the effect of a single voice fading in that can be done with long attack times. Especially in the studio when you can tweak the patch to match the notelength of a part.

 

It interests me how you programmers are working. Am i on the right track that (if it were possible) you would make your code do something like this?

 

max attack level = 0F

 

or:

 

max attack level = sustain level

 

I only toyed a little bit with some of your code and i am really fascinated how these things work together. Only logic (and smart use of it) makes things happen. Not that i know any more about code than a little GW-Basic from when i was a child. Still logic can be very comforting...

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