-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retrigger switch on oscillators? #147
Comments
Not really, not at least easily. Whenever there is a new note, the entire workspace (i.e. all state of all units) is wiped with a single rep stosd. The only exception is the delay lines, which use a different workspace to store the delay buffer, but the whole thing is such a kludge that I am worried what happens if we start storing the oscillator state there. And then it becomes a question how do we control this per oscillator (wipe, no wipe). The usual solution is to put the LFOs in Global and send the signal elsewhere. |
There's also the additional difficulty here that we are really out of flags at the moment: oscillator has a single flag byte argument, where: bit 7 = sample based oscillator Now, the flags are extremely wasteful: only one of bits 2, 4, 5, 6, or 7 is ever set. But it was done like this to have maximal compressibility: this makes 0x40 (which is also 64 aka neutral value for most oscillators) indicate that the oscillator is sine, which should also be a pretty common occurrence, and also 0x20 correspond to trisaw etc. This can be changed, to make room for one more toggleable flag, but we should really be careful to not increase size of prods. This goes back to 4klang and it looked a bit weird when I saw it, but I assume gopher did it with a good purpose (compressibility). |
I am closing this as this would fundamentally change how the sointu VM works & there is a way to avoid this, by putting the LFOs in Global. It may be a bit extra work to send from there, but this also likely saves bytes: the send code is already available vs. adding extra code to oscillators to check if we should store the state somewhere else than the usual place. |
Would it be possible to add a "retrigger" switch to oscillators, that allows non-retriggered LFOs without using an envelope-less instrument?
The text was updated successfully, but these errors were encountered: