Is there an oscillator that will only generate one cycle when triggered by midi keyboard rather then continuously
One cycle oscillators
Or is there a way to do this with regular oscillator
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
Would
kcutoff chnget “cutoff” + aPhs
Be closer
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