void FlutterSaw( float time, float dur, String pitch, float pan ) { mainOut.playNote( time, dur, new FlutterSaw( Frequency.ofPitch( pitch ).asHz(), pan, sawSummer ) ); } void FrequencySweep( float time, float dur, float begin, float end ) { mainOut.playNote( time, dur, new FilterFrequency( begin, end ) ); } void ResonanceSweep( float time, float dur, float begin, float end ) { mainOut.playNote( time, dur, new FilterResonance( begin, end ) ); } class FlutterSaw implements Instrument { Oscil saw; Oscil ampMod; Line ampModFreqLine; Pan pan; UGen out; FlutterSaw( float freq, float panning, UGen patchTo ) { saw = new Oscil( freq, 1.f, Waves.SAW ); ampMod = new Oscil( 2.f, 0.5f, Waves.SINE ); pan = new Pan( panning ); out = patchTo; } void noteOn( float dur ) { ampModFreqLine = new Line( dur * 0.9, 0.5f, Frequency.ofPitch( "C3" ).asHz() ); ampModFreqLine.patch( ampMod.frequency ).patch( saw.amplitude ); ampModFreqLine.activate(); saw.patch( pan ).patch( out ); } void noteOff() { pan.unpatch( out ); } } class FilterFrequency implements Instrument { Line filterFreqLine; float begin, end; FilterFrequency( float b, float e ) { begin = b; end = e; } void noteOn( float dur ) { filterFreqLine = new Line( dur, begin, end ); filterFreqLine.activate(); filterFreqLine.patch( moog.frequency ); } void noteOff() { filterFreqLine.unpatch( moog ); } } class FilterResonance implements Instrument { Line filterRezLine; float begin, end; FilterResonance( float b, float e ) { begin = b; end = e; } void noteOn( float dur ) { filterRezLine = new Line( dur, begin, end ); filterRezLine.activate(); filterRezLine.patch( moog.resonance ); } void noteOff() { filterRezLine.unpatch( moog ); } }