twistedelectrons / TherapSID

Other
33 stars 5 forks source link

Disable "Legato" / Enable Envelope Retrigger in Monophonic Mode #101

Closed beau-seidon closed 1 month ago

beau-seidon commented 5 months ago

In monophonic mode, when I play notes while other notes are held, the pitch changes to the most recent active note but the ASDR does not re-trigger, so I have to keep the sustain level up to hear anything. In some synths this is called legato mode.

It would be nice to have the option to re-trigger the envelope each time a new note is pressed (or released while any other note is still held). Paraphonic mode almost achieves this. The envelope re-triggers for each new note, but multiple notes play at once, which isn't quite the desired effect.

I tried the arpeggiator to see if it would re-trigger the ASDR, but it is limited to legato mode as well. I have to keep the sustain up to hear the arpeggiated notes.

I can get a fast arp of nice plucky sounds by using an external arpeggiator with the gate turned down to about 33%. This re-triggers the envelope each time it receives a new midi note. With a fast attack and decay, and the sustain at minimum with a moderate amount of release, it sounds great. I would love to be able to do this without external gear.

Sequence7 commented 5 months ago

It's a logical request. Few things worth noting are the sid chip is 3 independent adsr envelopes, that trigger at the same time if using the midi channel 1 (main mode to control all voices at once), it currently activates glide on legato and does not retrigger (as it should you don't want a retrigger with glide). (doesn't glide on legato note off) . Arp is effectively changing the oscillator pitch then holds on whatever note was last let off in the release stage. (wont trigger the adsr bug this way)

Not sure if you are familiar with the adsr bug in sid chips (if adsr is retriggered at a certain range in the adsr the next envelope wont trigger at all and the note just doesn't play). Since therapsid does not send hard restarts to prevent the the sid chips adsr bug (which is fair as it would add 30ms latency) , I would imagine you would run into this a lot when retriggering the envelope with arps (I know I do when sequencing therapsid fast via midi)

What sid chips are you using.

beau-seidon commented 5 months ago

Ok, it sounds like my request is pushing up against the limitations of the retro hardware, and any workarounds would be pretty much not worth implementing. And yea glide should probably be disabled if the ADSR were to re-trigger with each new note. Although that might make for some interestingly funky sounds.

I have read a little bit about the ADSR bug since you responded, and I understand better now why it's missing some notes when I bombard it with MIDI, and have to dial in the external arp gate to get it to behave well.

I am using a pair of SwinSID Nano b's; one configured as 6851, and the other as 8580. I took these out of a neat little synth called MIDISID I bought from a maker on Tindie. She also makes and sells them independently from her synth. https://www.tindie.com/products/shieladixon/swinsid-nano-b/

Sequence7 commented 5 months ago

I do not have a swinsid here, but yes if it's dropping notes and gate length solves it then it sounds like it's emulating the bug (as it should) , armsids have the option to remove the bug and you can blast those with midi without issues. (can only be permanently configured to do so in a real c64 but therapsids websid can temp configure it) So that might be something worth considering if it bothers you. (and it will sound closer to a real sid). Familiar with the midisid, keeping on eye on it personally to see how it develops.

Otherwise yeah it just needs a tiny gap between notes avoid the bug