Is there an oscillator that will only generate one cycle when triggered by midi keyboard rather then continuously
Or is there a way to do this with regular oscillator
oscil1 should do the trick.
The limitation of
oscil1 is that it only runs at k-rate. If you need an audio rate output you do this:
giSine ftgen 0,0,4096,10,1 instr 1 iCPS = 440 aPhs linseg 0, 1/iCPS, 1 aSig tablei aPhs, giSine, 1 outs aSig, aSig endin
How could I implement this in an envelope for a filter cutoff
aSig moogladder aSig1, kcutoff+aPhs, kres
Doesn’t seem to work
kcutoff chnget “cutoff” + aPhs
The above code is me trying to modulate the filter cutoff from where the cutoff is set so a modulating envelope rather than continuous modulation
In the example I gave, it was the variable
aSig that represented what I think you want to be the envelope value. Here is another snippet that reads an envelope shape from a function table but is also scaled by a user-control on channel
"CF". However, in this context, there’s really no reason why you shouldn’t use any of the envelope generating opcodes
linseg, linsegr, expseg, expsegr, transeg, transegr, cosseg, cossegr.
Note that the envelope is normalised (0 to 1) whereas the other variable in the multiplication (
kCF) represents the maximum frequency of the filter cutoff, so should be a control in the range of something like 50 - 15000 (and with a ‘skew’ of 0.5). You always need to be sure that your filter cutoff can’t exceed sr/2.
instr 1 ; envelope shape iEnv ftgen 0, 0, 4097, 16, 0, 128, 4, 1, 4096-128, -6, 0 aPhs linseg 0, 5, 1 ; phase pointer aEnv tablei aPhs, iEnv, 1 ; read the envelope shape kCF chnget "CF" ; represents the maximum filter frequency (Hz.) aSig vco2 0.5, 220 aSig butlp aSig, aEnv * kCF outs aSig, aSig endin