void CMoogVCF::Init(const int Index,void* MainWindow) { m_Name=devicename; Maxcutoff=m_Presets.SampleRate * 0.1; IDevice::Init(Index,MainWindow); AddJack("Out",IJack::Wave,IJack::Out,0); AddJack("In",IJack::Wave,IJack::In,0); AddJack("Modulation",(IJack::AttachModes)(IJack::Amplitude | IJack::Pitch),IJack::In,0); AddParameter(ParameterType::dB,"In Volume","dB",0,200,0,"",100); AddParameter(ParameterType::Numeric,"Cutoff Modulation","%",0,100,0,"",0); AddParameter(ParameterType::Numeric,"Cutoff Frequency","Hz",20,Maxcutoff,0,"",Maxcutoff); AddParameter(ParameterType::Numeric,"Response Time","%",0,100,0,"",50); AddParameter(ParameterType::Numeric,"Resonance","%",0,100,0,"",0); AddParameter(ParameterType::dB,"Out Volume","dB",0,200,0,"",100); FreqGlider.SetSpeed(5); ModulationFactor=0; InVolumeFactor=0; LastResonance=0; LastCO=0; In1=0; In2=0; In3=0; In4=4; Out1=0; Out2=0; Out3=0; Out4=0; CalcExpResonance(0,0); CalcParams(); }
void CMixer::Init(const int Index, void* MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); AddJack("Return",IJack::Stereo,IJack::In,jnReturn); AddJack("Out",IJack::Stereo,IJack::Out,jnOut); AddJack("Send",IJack::Stereo,IJack::Out,jnSend); for (int i=0; i<Mixer::mixerchannels; i++) { AddJack("In " + QString::number(i+1),IJack::Wave,IJack::In,jnIn+i); Level[i]=1; Effect[i]=0; PanL[i]=1; PanR[i]=1; Mute[i]=false; EffectMute[i]=false; } PeakL=0; PeakR=0; ZeroMemory(Peak,Mixer::mixerchannels*sizeof(float)); SoloChannel=-1; MasterLeft=1; MasterRight=1; MixFactor=1.0/sqrt(Mixer::mixerchannels); CalcParams(); m_Form=new CMixerForm(this,(QWidget*)MainWindow); }
void CDrumMachine::Init(const int Index,void* MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); AddJack("Out",IJack::Wave,IJack::Out,0); AddParameter(ParameterType::Numeric,"Tempo","BPM",20,300,0,"",100); AddParameter(ParameterType::dB,"Volume","dB",0,200,0,"",100); BeatInterval=0; PatternLength=0; SamplesPerTick=0; Playing=false; PatternType* DefaultPattern=new PatternType("Default",16,DrumMachine::SoundCount,100,0,0); Patterns.append(DefaultPattern); PatternListType* DefaultList=new PatternListType(); DefaultList->Pattern=DefaultPattern; DefaultList->Repeats=4; PatternsInList.append(DefaultList); AddSound("kick02.wav","Kick",&WG[0],&ST[0]); AddSound("snr01.wav","Snare",&WG[1],&ST[1]); AddSound("hat01.wav","Hi-Hat",&WG[2],&ST[2]); AddSound("hat19.wav","Open Hi-Hat",&WG[3],&ST[3]); AddSound("cym01.wav","Cymbal",&WG[4],&ST[4]); AddSound("tom01.wav","Tom 1",&WG[5],&ST[5]); AddSound("tom02.wav","Tom 2",&WG[6],&ST[6]); Reset(); CalcParams(); m_Form=new CDrumMachineForm(this,(QWidget*)MainWindow); }
void inline CADSR::Start() { //if (!State==esPlaying) //{ State=esPlaying; CalcParams(); TimeCount = 0; //} }
void set_param(const cmdline::parser& cp,void* space){ //static void* aptr = malloc(sizeof(const CalcParams)); try { pm= std::unique_ptr<const CalcParams>(new(space) const CalcParams(cp.get<std::string>("cparam"))); } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::exit(1); } }
void CLFO::Init(const int Index, void *MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); AddJack("Out",IJack::Pitch,IJack::Out,jnOutPitch); AddJack("Out Amplitude",IJack::Amplitude,IJack::Out,jnOutAmplitude); AddParameter(ParameterType::Numeric,"Frequency","Hz",1,10000,100,"",400); AddParameter(ParameterType::SelectBox,"WaveForm","",0,5,0,"Sine§Square§Triangle§Sawtooth§Noise§Sample and Hold",0); AddParameter(ParameterType::dB,"Volume","dB",0,200,0,"",100); CalcParams(); }
void CDrumMachine::Reset() { PatternIndex = 0; PatternRepeatCount = 0; BeatCount = 0; NextBeat = 0; NextStop = 0; Counter = 0; SampleCount = 0;//m_Presets.ModulationRate-1; CalcParams(); }
void CPhaser::Init(const int Index, void *MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); AddJack("Out",IJack::Wave,IJack::Out,0); AddJack("In",IJack::Wave,IJack::In,0); AddParameter(ParameterType::Numeric,"Range Min","Hz",20,m_Presets.SampleRate / 2.f,0,"",440); AddParameter(ParameterType::Numeric,"Range Max","Hz",20,m_Presets.SampleRate / 2.f,0,"",1600); AddParameter(ParameterType::Numeric,"Rate","Sweeps/sec",5,200,100,"",50); AddParameter(ParameterType::Numeric,"Feedback","%",0,100,0,"",70); AddParameter(ParameterType::Numeric,"Depth","%",0,100,0,"",100); CalcParams(); }
void CExciter::Init(const int Index, void *MainWindow) { int Maxcutoff=m_Presets.SampleRate * 0.425; m_Name="Exciter"; IDevice::Init(Index,MainWindow); AddJack("Out",IJack::Wave,IJack::Out,0); AddJack("Effect Out",IJack::Wave,IJack::Out,0); AddJack("In",IJack::Wave,IJack::In,0); AddParameter(ParameterType::SelectBox,"Type","",0,1,0,"Soft§Clipping",0); AddParameter(ParameterType::dB,"In Volume","dB",0,200,0,"",100); AddParameter(ParameterType::Numeric,"Amount","%",0,100,0,"",100); AddParameter(ParameterType::Numeric,"Cutoff Frequency","Hz",20,Maxcutoff,0,"",Maxcutoff/2); AddParameter(ParameterType::Numeric,"Effect","%",0,100,0,"",50); CalcParams(); }
CADSR::CADSR() { HoldTrigger=0; m_Presets=CPresets::Presets; LastTrigger=0; LastGet=0; State=esSilent; TimeCount=0; CurrentVolume=0; AP.Attack=0; AP.Decay=0; AP.Sustain=100; AP.Release=0; Mode=0; CalcParams(); }
void CPanner::Init(const int Index, void *MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); AddJack("In",IJack::Wave,IJack::In,jnIn); AddJack("Out",IJack::Stereo,IJack::Out,jnOut); AddJack("Out Left",IJack::Wave,IJack::Out,jnOutLeft); AddJack("Out Right",IJack::Wave,IJack::Out,jnOutRight); AddJack("Modulation In",(IJack::AttachModes)(IJack::Pitch | IJack::Amplitude),IJack::In,jnModulation); AddParameter(ParameterType::Numeric,"Pan","%",-100,100,0,"",0); AddParameter(ParameterType::Numeric,"Modulation","%",0,100,0,"",0); LastMod=0; CurrentMod=0; LeftModFactor=1; RightModFactor=1; InSignal=NULL; CalcParams(); }
void CLimiter::Init(const int Index, void *MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); AddJack("Out",IJack::Wave,IJack::Out,0); AddJack("In",IJack::Wave,IJack::In,0); AddParameter(ParameterType::dB,"Limit Vol","dB",0,200,0,"",100); AddParameter(ParameterType::dB,"Out Vol","dB",0,200,0,"",100); /* 80 Hz is the lowest frequency with which zero-crosses were * observed to occur (this corresponds to 40 Hz signal frequency). */ // so lets make the buffer double size anyhoo :) buflen = m_Presets.SampleRate / 40; pos = 0; ready_num = 0; ringbuffer=new float[buflen]; ZeroMemory(ringbuffer,buflen*sizeof(float)); CalcParams(); }
void CScope::Init(const int Index,void* MainWindow) { m_Name=devicename; IDevice::Init(Index,MainWindow); for (int i=0; i<MaxBuffers; i++) { m_Buffer[i]=new float[m_BufferSize]; } CurrentBuffer=0; NullBuffers=0; m_Form=new CScopeForm(this,(QWidget*)MainWindow); //m_Form=new TfrmScope(CallingApp,this,AnsiString(m_Name) + " " + AnsiString(Index)); AddJack("In",IJack::Wave,IJack::In,0); AddParameter(ParameterType::dB,"Input Volume","dB",0,200,0,"",100); AddParameter(ParameterType::Numeric,"Scope Frequency","Hz",100,100000,100,"",44000); AddParameter(ParameterType::SelectBox,"Spectrum Mode","",0,2,0,"Circular§Continuous§Diagram",0); Reset(); CalcParams(); }
int main(int argc,char** argv){ cmdline::parser cp; const std::string udelim = "\n\t\t"; cp.add<std::string>("mode", 'm', "Specify a mode shown below."_s+udelim+ "c:Calculate with CPU. Need --cparam,--input" + udelim + "g:Calculate with GPU. Need --cparam,--input" + udelim + "v:Visualize the result.Need --cparam,--vparam" + udelim + "d:Diff calc parameter file. Need --cparam,--cparam2" + udelim + "gp:Generate default parameter files. Use --cparam,--vparam for output."+udelim+ "i:Generate initial cell data file.Need --cparam,--output"); cp.add<std::string>("input", 'i', "Cell data file.", false); cp.add<std::string>("output",'o', "Cell data output file(for init)",false); cp.add<std::string>("cparam", '\0', "Specify an parameter file path for calculation.",false); cp.add<std::string>("cparam2", '\0', "Additional parameter file (for diff)",false); cp.add<std::string>("vparam", '\0', "Specify an parameter file path for visualization.",false); cp.add<std::string>("initial", '\0', "Start calculation with initial state (without specifying initial data file)",false); cp.parse_check(argc, argv); auto mode = cp.get<std::string>("mode"); bool is_gpu = mode == "g"; bool is_vis = mode == "v"; bool is_cpu = mode == "c"; bool is_diff = mode == "d"; bool is_gen = mode == "gp"; bool is_init = mode == "i"; static void* aptr = malloc(sizeof(const CalcParams)); auto EH = ErrorHandling(cp); if(is_init){ EH.check("cparam","output"); set_param(cp,aptr); try{ init_gen_output(cp.get<std::string>("output"),16,8); }catch(std::exception& e){ std::cerr << e.what() << std::endl; std::exit(1); } } if (is_gen) { if (cp.exist("cparam")) { std::cout << "Generate cparam as " << cp.get<std::string>("cparam") << std::endl; CalcParams().generate_paramfile(cp.get<std::string>("cparam")); } if (cp.exist("vparam")) { std::cout << "Generate vparam as " << cp.get<std::string>("vparam") << std::endl; VisParams().generate_paramfile(cp.get<std::string>("vparam")); } } if (is_diff) { EH.check("cparam","cparam2"); try { const CalcParams cp1 = CalcParams(cp.get<std::string>("cparam")); const CalcParams cp2 = CalcParams(cp.get<std::string>("cparam2")); std::cout << "Compare " << cp.get<std::string>("cparam") << " and " << cp.get<std::string>("cparam2") <<std::endl; CalcParams::diff(cp1, cp2); } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::exit(1); } } if (is_cpu || is_gpu) { const bool init_exist=cp.exist("initial"); if(init_exist){ EH.check("cparam"); }else{ EH.check("cparam","input"); } set_param(cp,aptr); CellManager cman; try { if(init_exist){ auto inum=parse_init_setting(cp.get<std::string>("initial")); cman=init_gen(std::get<0>(inum),std::get<1>(inum)); }else{ cman.load(cp.get<std::string>("input")); } } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::exit(1); } //connect_cell(cman); calc_with_cpu(cman); } if (is_vis) { EH.check("cparam","vparam"); set_param(cp,aptr); try { VisParams vp(cp.get<std::string>("vparam")); init_visualizer(&argc, argv,vp); visualize(); } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::exit(1); } } std::cout<<"Done."<<std::endl; }