void Divider_::setLeft(Generator arg){
   if (arg.isStereoOutput() && !isStereoOutput())
   {
     setIsStereoOutput(true);
   }
   left_ = arg;
 }
 void Subtractor_::setRight(Generator arg){
   if (arg.isStereoOutput() && !isStereoOutput())
   {
     setIsStereoOutput(true);
   }
   right_ = arg;
 }
Пример #3
0
void BasicDelay_::setInput(Generator input) {
    Effect_::setInput(input);
    setIsStereoInput(input.isStereoOutput());
    setIsStereoOutput(input.isStereoOutput());

    // can safely resize as TonicFrames subclass - calling functions account for channel offset
    delayLine_.resize(delayLine_.frames(), input.isStereoOutput() ? 2 : 1, 0);
}
Пример #4
0
 StereoDelay_::StereoDelay_(){
   setIsStereoOutput(true);
   setIsStereoInput(true);
   delayTimeFrames_[TONIC_LEFT].resize(kSynthesisBlockSize, 1, 0);
   delayTimeFrames_[TONIC_RIGHT].resize(kSynthesisBlockSize, 1, 0);
   fbkFrames_.resize(kSynthesisBlockSize, 1, 0);
   setDryLevelGen(FixedValue(0.5));
   setWetLevelGen(FixedValue(0.5));
 }
 Reverb_::Reverb_(){
   
   setIsStereoOutput(true);
   
   // Default to 50% wet
   setDryLevelGen(FixedValue(0.5f));
   setWetLevelGen(FixedValue(0.5f));
   
   workspaceFrames_[0].resize(kSynthesisBlockSize, 1, 0);
   workspaceFrames_[1].resize(kSynthesisBlockSize, 1, 0);
   preOutputFrames_[0].resize(kSynthesisBlockSize, 1, 0);
   preOutputFrames_[1].resize(kSynthesisBlockSize, 1, 0);
   
   preDelayLine_.initialize(0.1f, 1);
   reflectDelayLine_.initialize(0.1f, 1);
   
   inputLPF_.setIsStereoInput(false);
   inputLPF_.setIsStereoInput(false);
   inputLPF_.Q(0.707);
   inputHPF_.Q(0.707);
 
   preDelayTimeCtrlGen_ = ControlValue(0.01f);
   inputFiltBypasCtrlGen_ = ControlValue(false);
   densityCtrlGen_ = ControlValue(0.5);
   roomShapeCtrlGen_ = ControlValue(0.5);
   roomSizeCtrlGen_ = ControlValue(0.5);
   decayTimeCtrlGen_ = ControlValue(1.0f);
   stereoWidthCtrlGen_ = ControlValue(0.5f);
   
   setInputLPFCutoffCtrlGen(ControlValue(10000.0f));
   setInputHPFCutoffCtrlGen(ControlValue(20.f));
   
   for (unsigned int i=0; i<TONIC_REVERB_N_COMBS; i++){
     
     ControlValue delayL = ControlValue(0.01f);
     ControlValue delayR = ControlValue(0.01f);
     ControlValue scaleL = ControlValue(0.5);
     ControlValue scaleR = ControlValue(0.5);
     combFilterDelayTimes_[TONIC_LEFT].push_back(delayL);
     combFilterDelayTimes_[TONIC_RIGHT].push_back(delayR);
     combFilterScaleFactors_[TONIC_LEFT].push_back(scaleL);
     combFilterScaleFactors_[TONIC_RIGHT].push_back(scaleR);
     combFilters_[TONIC_LEFT].push_back(FilteredFBCombFilter6(0.01f, 0.125f).delayTime(delayL).scaleFactor(scaleL));
     combFilters_[TONIC_RIGHT].push_back(FilteredFBCombFilter6(0.01f, 0.125f).delayTime(delayR).scaleFactor(scaleR));
   }
   
   for (unsigned int i=0; i<TONIC_REVERB_N_ALLPASS; i++){
     allpassFilters_[TONIC_LEFT].push_back(ImpulseDiffuserAllpass(allpassTimes_[i], TONIC_REVERB_ALLPASS_COEF));
     allpassFilters_[TONIC_RIGHT].push_back(ImpulseDiffuserAllpass(allpassTimes_[i] + TONIC_REVERB_STEREO_SPREAD, TONIC_REVERB_ALLPASS_COEF));
   }
   
   setDecayLPFCtrlGen(ControlValue(12000.f));
   setDecayHPFCtrlGen(ControlValue(60.f));
   
 }
Пример #6
0
 void Filter_::setInput(Generator input){
   Effect_::setInput(input);
   setIsStereoInput(input.isStereoOutput());
   setIsStereoOutput(input.isStereoOutput());
 }
 MonoToStereoPanner_::MonoToStereoPanner_(){
   setIsStereoOutput(true);
   panFrames.resize(kSynthesisBlockSize, 1);
   setPan(ControlValue(0));
 }
 void Multiplier_::input(Generator generator){
   inputs_.push_back(generator);
   if ( generator.isStereoOutput() && !isStereoOutput() ){
     setIsStereoOutput(true);
   }
 }
 void Adder_::input(Generator generator){
   inputs_.push_back( generator );
   if ( generator.isStereoOutput() && !this->isStereoOutput() ){
     setIsStereoOutput(true);
   }
 }