My answer is kind of a hack, but, it&#39;s working quite well.<br>Use a Step waveform set to 1 at all times, have THAT 1 divided by the ADSR for the filter, then, my above code works like a charm!<br>You could also, for example, spork off a different function that randomly triggered the filter&#39;s ADSR independently from the amplitude&#39;s ADSR, giving you all sorts of trance techno type patterns.
<br><br>&nbsp;Hope this helps you out, Josh, and other users.<br><br>-Edward <br><br>// Filter Wooby Wooby Woo<br><br>BlitSaw bs;<br>LPF lpf;<br>ADSR amp;<br>ADSR filt;<br>Gain fg;<br>amp.set( 1::ms, 350::ms, .2, 500::ms );<br>
filt.set( 15::ms, 550::ms, 0, 400::ms );<br><br>Step s;<br>s =&gt; filt;<br>// 1 =&gt; s.value;<br>1 =&gt; s.next;<br><br>bs =&gt; amp =&gt; lpf =&gt; dac;<br>filt =&gt; fg =&gt; blackhole;<br>10 =&gt; fg.gain;<br><br>500 =&gt; 
lpf.freq;<br>2 =&gt; lpf.Q;<br><br>spork ~ filteradsr ();<br><br>for (int l; l &lt; 32; l++)<br>{&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;&lt;&lt;&quot;L;&quot;,l,&quot;&quot;&gt;&gt;&gt;;<br>&nbsp;&nbsp;&nbsp; spork ~ playanote ( Std.rand2(30,60) );<br>&nbsp;&nbsp;&nbsp; 800::ms =&gt; now;
<br>}<br>&nbsp;&nbsp;&nbsp; <br>fun void&nbsp; playanote (int nnum)<br>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mstodie;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;&lt;&quot;\n\n&quot;,nnum,&quot;&quot;&gt;&gt;&gt;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nnum =&gt; Std.mtof =&gt; bs.freq;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;&lt;&quot;On&quot;,&quot;&quot;&gt;&gt;&gt;;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; amp.keyOn();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filt.keyOn();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Std.rand2(150,300) =&gt; mstodie;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mstodie * 1::ms =&gt; now;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;&lt;&quot;Off&quot;,&quot;&quot;&gt;&gt;&gt;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
amp.keyOff();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filt.keyOff();<br>&nbsp;&nbsp;&nbsp; }<br><br>fun void filteradsr ()<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float currfilt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filt.last() * 800 + 250 =&gt; currfilt;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currfilt =&gt; lpf.freq;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if (maybe) &lt;&lt;&lt;filt.last(),currfilt&gt;&gt;&gt;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1::ms =&gt; now;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>