/// <summary> /// This method is called by the main Audio Device Initialization method: Prepare(…). /// </summary> void DriverInit() { if (audioDriver == Driver.Wasapi) { xAudio = new WasapiOut(AudioClientShareMode.Shared, Settings.Latency); } else if (audioDriver == Driver.Wave) { xAudio = new WaveOut(); } else if (audioDriver == Driver.DirectSound) { if (DriverId != Guid.Empty) { xAudio = new DirectSoundOut(DriverId, Settings.Latency); } else { xAudio = new DirectSoundOut(Settings.Latency); } } else if (audioDriver == Driver.ASIO) { xAudio = new AsioOut(1); } if (CurrentChannel != null) { CurrentChannel.Dispose(); CurrentChannel = null; } xAudio.PlaybackStopped -= Event_PlaybackStopped; xAudio.PlaybackStopped += Event_PlaybackStopped; }
/// <summary> /// Main NAudio WaveOut initialization call. /// </summary> public void Prepare(/*params IVstPluginContext[] context*/) { DriverInit(); CurrentChannel = new VSTStream32(); CurrentChannel.SetWaveFormat(Settings.Rate, Settings.Channels); CurrentChannel.Parent = this; xAudio.Init(CurrentChannel); CurrentChannel.Volume = volume; if (PlaybackStarted != null) { PlaybackStarted(this, EventArgs.Empty); } }