void Start() { var format = ChannelEnumConverter.GetSoundFormatFromSpeakerMode(AudioSettings.speakerMode); var channels = ChannelEnumConverter.GetChannelCountFromSoundFormat(format); AudioSettings.GetDSPBufferSize(out var bufferLength, out var numBuffers); var sampleRate = AudioSettings.outputSampleRate; m_Graph = DSPGraph.Create(format, channels, bufferLength, sampleRate); var driver = new DefaultDSPGraphDriver { Graph = m_Graph }; driver.AttachToDefaultOutput(); using (var block = m_Graph.CreateCommandBlock()) { m_NoiseFilter = block.CreateDSPNode <NoiseFilter.Parameters, NoiseFilter.Providers, NoiseFilter>(); block.AddOutletPort(m_NoiseFilter, 2, SoundFormat.Stereo); m_LowPass = StateVariableFilter.Create(block, StateVariableFilter.FilterType.Lowpass); block.Connect(m_NoiseFilter, 0, m_LowPass, 0); block.Connect(m_LowPass, 0, m_Graph.RootDSP, 0); } }
private void Initialize(SampleRate sampleRate, StereoBuffer buffer) { emptyFMModulator = new EmptyMonoComponent(sampleRate, new MonoBuffer(0)); slewLimiter = new SlewLimiter(sampleRate, new MonoBuffer(0), "Portamento"); slewLimiter.SynthesizeReplaceEnabled = true; envelope1 = new AdsrEnvelope(sampleRate, new MonoBuffer(0), "Envelope 1"); envelope1.SynthesizeReplaceEnabled = true; envelope2 = new AdsrEnvelope(sampleRate, new MonoBuffer(0), "Envelope 2"); envelope2.SynthesizeReplaceEnabled = true; lfo1 = new Lfo(sampleRate, new MonoBuffer(0), "LFO 1"); lfo1.SynthesizeReplaceEnabled = true; lfo2 = new Lfo(sampleRate, new MonoBuffer(0), "LFO 2"); lfo2.SynthesizeReplaceEnabled = true; Wavetable wave = Wavetable.Load("Sawtooth"); osc1 = new Oscillator(sampleRate, new MonoBuffer(0), "Oscillator 1", wave, emptyFMModulator, slewLimiter); osc1.SynthesizeReplaceEnabled = true; osc2 = new Oscillator(sampleRate, new MonoBuffer(0), "Oscillator 2", wave, emptyFMModulator, slewLimiter); osc2.SynthesizeReplaceEnabled = true; filter = new StateVariableFilter(sampleRate, new MonoBuffer(0), "State Variable Filter", osc1, osc2, envelope2, lfo2, envelope1); filter.SynthesizeReplaceEnabled = true; converter = new MonoToStereoConverter(sampleRate, buffer, filter); converter.SynthesizeReplaceEnabled = false; oscWaveProgrammer1 = new OscWaveProgrammer("Oscillator 1", osc1); oscWaveProgrammer2 = new OscWaveProgrammer("Oscillator 2", osc2); oscFMProgrammer1 = new OscFMProgrammer("Oscillator 1", osc1, emptyFMModulator, envelope1, envelope2, lfo1, lfo2); oscFMProgrammer2 = new OscFMProgrammer("Oscillator 2", osc2, emptyFMModulator, envelope1, envelope2, lfo1, lfo2); AddComponent(emptyFMModulator); AddComponent(slewLimiter); AddComponent(osc1); AddComponent(osc2); AddComponent(envelope1); AddComponent(envelope2); AddComponent(lfo1); AddComponent(lfo2); AddComponent(filter); AddComponent(converter); AddParameters(slewLimiter); AddParameters(osc1); AddParameters(oscWaveProgrammer1); AddParameters(oscFMProgrammer1); AddParameters(osc2); AddParameters(oscWaveProgrammer2); AddParameters(oscFMProgrammer2); AddParameters(envelope1); AddParameters(envelope2); AddParameters(lfo1); AddParameters(lfo2); AddParameters(filter); AddBendable(osc1); AddBendable(osc2); AddControllable(lfo1); AddControllable(lfo2); }