void DelayFeedback::mouseDrag( MouseEvent event ) { float freq = quantizePitch( event.getPos() ); float gain = 1.0f - (float)event.getPos().y / (float)getWindowHeight(); gain *= MAX_VOLUME; mOsc->getParamFreq()->applyRamp( freq, 0.04f ); mGain->getParam()->applyRamp( gain, 0.1f ); addSplash( event.getPos() ); }
void NodeAdvancedApp::setup() { auto ctx = audio::Context::master(); // Here we're using a GenTriangleNode, which generates a triangle waveform that contains many upper harmonics. // To reduce the sharpness, a lowpass filter is used to cut down the higher frequences. mGen = ctx->makeNode( new audio::GenTriangleNode( audio::Node::Format().autoEnable() ) ); mLowpass = ctx->makeNode( new audio::FilterLowPassNode ); mGain = ctx->makeNode( new audio::GainNode ); mMonitor = ctx->makeNode( new audio::MonitorNode ); mLowpass->setFreq( 400 ); // Below we tell the Gain's Param to ramp from 0 to 0.5 over 2 seconds, making it slowly fade in.! mGain->getParam()->applyRamp( 0, 0.5f, 2.0f ); // make the synthesis connection mGen >> mLowpass >> mGain >> ctx->getOutput(); // Also feed the Gain to our Scope so that we can see what the waveform looks like. mGain >> mMonitor; ctx->enable(); // Many times it is easier to specify musical pitches in MIDI format, which is linear rather than in hertz. // Below is the pentatonic notes for the C major scale from C3-C5, represented in MIDI values. mCPentatonicScale.push_back( 48 ); mCPentatonicScale.push_back( 50 ); mCPentatonicScale.push_back( 52 ); mCPentatonicScale.push_back( 55 ); mCPentatonicScale.push_back( 57 ); mCPentatonicScale.push_back( 60 ); mCPentatonicScale.push_back( 62 ); mCPentatonicScale.push_back( 64 ); mCPentatonicScale.push_back( 67 ); mCPentatonicScale.push_back( 69 ); mCPentatonicScale.push_back( 72 ); mFreqRampTime = 0.015f; }
void DeviceTestApp::processDrag( ivec2 pos ) { if( mGainSlider.hitTest( pos ) ) mGain->getParam()->applyRamp( mGainSlider.mValueScaled, 0.025f ); }
void DelayFeedback::mouseUp( MouseEvent event ) { mGain->getParam()->applyRamp( 0, 1.5, audio::Param::Options().rampFn( &audio::rampOutQuad ) ); }