noob: change ADSR release/floor value
Hi, I am trying to make a simple FM patch. I want the modulation index to change by ADSR, but I'm not sure what the best way to set the ADSR's gain to a range besides 0-1. (I am new to ChucK, but not to computer music and not to computer programming.) The signal path I have right now looks like this: SinOsc m => ADSR modEnv => Gain g1 => SinOsc c => dac; m => Gain g2 => c; If I set g1's gain to maxIndex - minIndex, and g2's gain is set to minIndex, I achieve the desired result, but I just want to make sure I'm not making my life unnecessarily complicated by doing it this way. (I'm used to max/msp where there's a +~ object.) Thanks, George
On Mon, May 21, 2012 at 07:39:08PM -0400, George Locke wrote:
Hi,
Hey George!
The signal path I have right now looks like this:
SinOsc m => ADSR modEnv => Gain g1 => SinOsc c => dac; m => Gain g2 => c;
If I set g1's gain to maxIndex - minIndex, and g2's gain is set to minIndex, I achieve the desired result, but I just want to make sure I'm not making my life unnecessarily complicated by doing it this way. (I'm used to max/msp where there's a +~ object.)
With regard to summing this is totally fine; multiple signals are send to c and c's input, like all UGen inputs, defaults to summing. You could save yourself one "Gain", being g1. Instead of setting g1.gain(My_gain_index); you could set it to modEnv directly like; modEnv(my_gain_index); This is because all UGens have a .gain() member which sets their output gain. In this case we can't do that for the second signal-path as substituting g2 by calling m.gain() would affect the signal-path in the first line as well. That -useful- detail aside you seem well on your way to creating a nice FM synth! Yours, Kas.
Kassen,
Thanks! This is helpful.
Regards,
George
On Mon, May 21, 2012 at 7:54 PM, Kassen
On Mon, May 21, 2012 at 07:39:08PM -0400, George Locke wrote:
Hi,
Hey George!
The signal path I have right now looks like this:
SinOsc m => ADSR modEnv => Gain g1 => SinOsc c => dac; m => Gain g2 => c;
If I set g1's gain to maxIndex - minIndex, and g2's gain is set to minIndex, I achieve the desired result, but I just want to make sure I'm not making my life unnecessarily complicated by doing it this way. (I'm used to max/msp where there's a +~ object.)
With regard to summing this is totally fine; multiple signals are send to c and c's input, like all UGen inputs, defaults to summing.
You could save yourself one "Gain", being g1. Instead of setting
g1.gain(My_gain_index);
you could set it to modEnv directly like;
modEnv(my_gain_index);
This is because all UGens have a .gain() member which sets their output gain. In this case we can't do that for the second signal-path as substituting g2 by calling m.gain() would affect the signal-path in the first line as well.
That -useful- detail aside you seem well on your way to creating a nice FM synth!
Yours, Kas. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
participants (2)
-
George Locke
-
Kassen