private static void InitCommon(IWavePlayer waveout) { waveOut = waveout; mixer = new MixingWaveProvider32(); waveOut.Init(mixer); waveformat = new WaveFormat(44100, 2); DctWaveProvider = new Dictionary <string, IWaveProvider>(); audiofilereader = null; }
//Cleart de lijst met Waves en gooit de Mixer weg en herinstatieert hem. public static void StopAll() { outputDevice.Stop(); mixingWaveProvider = null; mixingWaveProvider = new MixingWaveProvider32(); WaveList.Clear(); Cleanup(); }
public static void Init(string drivername, int channeloffset) { mixer = new MixingWaveProvider32(); waveOut = new AsioOut(drivername); waveOut.ChannelOffset = channeloffset; waveOut.Init(mixer); waveformat = new WaveFormat(44100, 2); DctWaveProvider = new Dictionary <string, IWaveProvider>(); }
public static void Init(string drivername) { mixer = new MixingWaveProvider32(); waveOut = new AsioOut(drivername);//NAudio.CoreAudioApi.AudioClientShareMode.Exclusive,100); //waveOut = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Shared, 100); waveOut.Init(mixer); waveformat = new WaveFormat(44100, 2); DctWaveProvider = new Dictionary <string, IWaveProvider>(); }
private void ResetOutput() { SoundOutput.Dispose(); SoundMixer = new MixingWaveProvider32(new List <WaveChannel32> { PitchSelector.GetWavePlayer(Pitch.Empty, WaveForm).Channel }); SoundOutput = new DirectSoundOut(); SoundOutput.Init(SoundMixer); SoundOutput.Play(); }
public void Init( MMDevice device) { if (device == null) { return; } var config = Config.Instance; this.DeviceID = device.ID; this.Player = new WasapiOut( device, AudioClientShareMode.Shared, false, config.WasapiLatency); var list = new List <BufferedWaveProvider>(); for (int i = 0; i < config.WasapiMultiplePlaybackCount; i++) { var buffer = new BufferedWaveProvider(this.OutputFormat) { BufferDuration = config.WasapiLoopBufferDuration, DiscardOnBufferOverflow = true, }; list.Add(buffer); } // シンクロ再生用のバッファを追加しておく list.Add(new BufferedWaveProvider(this.OutputFormat) { BufferDuration = config.WasapiLoopBufferDuration, DiscardOnBufferOverflow = true, }); this.Buffers = list.ToArray(); // ミキサを生成する var mixer = new MixingWaveProvider32( this.Buffers.Select(x => new Wave16ToFloatProvider(x))); this.Player.Init(mixer); this.Player.Play(); this.Player.SetBackground(); }
public static void PlaySound(string path) { soundStream = getWaveStream(path); var mixer = new MixingWaveProvider32(); soundWaveChannel = new WaveChannel32(soundStream); soundWaveChannel.PadWithZeroes = false; // set the volume of background file soundWaveChannel.Volume = soundVolume; //add stream into the mixer mixer.AddInputStream(soundWaveChannel); soundOutput.Init(mixer); soundOutput.Play(); }
public void MixWaveProviders(IList <WavePlayer> inputs) { try { _mixer = new MixingWaveProvider32(inputs.Select(c => c._channels)); _waveStream = inputs[0]._reader; foreach (var obj in inputs) { _waveStreamList.Add(obj._reader); } _device.Init(_mixer); } catch (Exception exception) { MessageBox.Show("The Driver is already in use", "Errror", MessageBoxButton.OK, MessageBoxImage.Error); throw new ArgumentException(exception.Message, exception); } }
public void Play(IEnumerable <Beeper> beepers, bool looping = false) { Beepers = beepers; MixingWaveProvider32 mixer = new MixingWaveProvider32(); foreach (Beeper beeper in beepers) { beeper.Stream.Seek(0, SeekOrigin.Begin); mixer.AddInputStream(new WaveChannel32(new WaveFileReader(beeper.Stream))); } Sound = new WaveOut(WaveCallbackInfo.FunctionCallback()); Sound.Init(mixer); IsLooping = looping; Sound.PlaybackStopped += OnSoundPlayBackStopped; Sound.Play(); IsPlaying = true; }
public MainWindow() { _shunterLocoSimulation = new ShunterLocoSimulation(); _trainSimulation = new TrainSimulation(_shunterLocoSimulation); InitializeComponent(); var soundMixer = new MixingWaveProvider32(); InitializeSounds(soundMixer); _waveOut.Init(soundMixer); _waveOut.Volume = 1.0f; DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(TimerInterval); timer.Tick += timer_Tick; timer.Start(); _waveOut.Play(); }
public void MixWaveProviders(IList <WavePlayer> inputs) { try { _mixer = new MixingWaveProvider32(inputs.Select(c => c._channels)); _waveStream = inputs[0]._reader; foreach (var obj in inputs) { _waveStreamList.Add(obj._reader); } _device.Init(_mixer); } catch (Exception exception) { MessageBox.Show("All incoming channels must have the same format", "Errror", MessageBoxButton.OK, MessageBoxImage.Error); Log.Write(LogLevel.Error, "File Name : AsioAudioService.cs, Method Name : MixWaveProviders(), Line Number : 131"); throw new ArgumentException(exception.Message, exception); } }
public MixingWaveProvider32 Overlay(ISampleProvider music, ISampleProvider watermark, double watermarkOffset) { if (music == null || watermark == null) { throw new ArgumentNullException("Не удалось наложить водяной знак. Трек или водяной знак были пустыми"); } // Инициализация энкодера(чтобы получать на выходе любой формат) NAudio.MediaFoundation.MediaFoundationApi.Startup(); var sampleProvider = new OffsetSampleProvider(watermark.ToWaveProvider().ToSampleProvider()); //Деление на sample sampleProvider.DelayBy = TimeSpan.FromSeconds(watermarkOffset); //Добавление задержки var watermarkWaveProvider = sampleProvider.ToWaveProvider(); //Перевод в wave водяного знака var musicWaveProvider = music.ToWaveProvider(); //Перевод в wave музыки // Слияние трека и водяного знака var result = new MixingWaveProvider32(new[] { musicWaveProvider, watermarkWaveProvider }); result.ToSampleProvider().ToWaveProvider16(); return(result); }
public void Start(string serverIpAddress, string clientID, string inputDevice, string outputDevice) { _startTime = DateTime.Now; callsign = clientID; taskDataPub = new Task(() => TaskDataPub(cancelTokenSource.Token, dataPublishInputQueue, "tcp://" + serverIpAddress + ":60001"), TaskCreationOptions.LongRunning); taskDataPub.Start(); taskDataSub = new Task(() => TaskDataSub(cancelTokenSource.Token, "tcp://" + serverIpAddress + ":60000"), TaskCreationOptions.LongRunning); taskDataSub.Start(); taskAudioPub = new Task(() => TaskAudioPub(cancelTokenSource.Token, audioPublishInputQueue, "tcp://" + serverIpAddress + ":60003"), TaskCreationOptions.LongRunning); taskAudioPub.Start(); taskAudioSub = new Task(() => TaskAudioSub(cancelTokenSource.Token, audioPlaybackQueue, "tcp://" + serverIpAddress + ":60002"), TaskCreationOptions.LongRunning); taskAudioSub.Start(); _segmentFrames = 960; _encoder = OpusEncoder.Create(48000, 1, FragLabs.Audio.Codecs.Opus.Application.Voip); _encoder.Bitrate = 65536; _decoder = OpusDecoder.Create(48000, 1); _bytesPerSegment = _encoder.FrameByteCount(_segmentFrames); _waveIn = new WaveIn(WaveCallbackInfo.FunctionCallback()); _waveIn.BufferMilliseconds = 50; Console.WriteLine("Input device: " + WaveIn.GetCapabilities(0).ProductName); _waveIn.DeviceNumber = MapInputDevice(inputDevice); _waveIn.DataAvailable += _waveIn_DataAvailable; _waveIn.WaveFormat = new WaveFormat(48000, 16, 1); networkAudioBuffers = new List <ClientMixerInput> { new ClientMixerInput() { InUse = false, Provider = new BufferedWaveProvider(new WaveFormat(48000, 16, 1)) //Provider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(48000, 1)) }, new ClientMixerInput() { InUse = false, Provider = new BufferedWaveProvider(new WaveFormat(48000, 16, 1)) //Provider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(48000, 1)) }, new ClientMixerInput() { InUse = false, Provider = new BufferedWaveProvider(new WaveFormat(48000, 16, 1)) //Provider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(48000, 1)) }, new ClientMixerInput() { InUse = false, Provider = new BufferedWaveProvider(new WaveFormat(48000, 16, 1)) //Provider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(48000, 1)) } }; mixer = new MixingWaveProvider32(); //mixer.ReadFully = true; foreach (var buffer in networkAudioBuffers) { mixer.AddInputStream(new SampleToWaveProvider(new Equalizer(new WaveToSampleProvider(new Wave16ToFloatProvider(buffer.Provider)), bands))); } //_playBuffer = new BufferedWaveProvider(mixer.WaveFormat); //mixer.AddInputStream(_playBuffer); taskAudioPlayback = new Task(() => TaskAudioPlayback(cancelTokenSource.Token, audioPlaybackQueue), TaskCreationOptions.LongRunning); taskAudioPlayback.Start(); //_waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()); _waveOut = new WaveOut(); Console.WriteLine("Output device: " + WaveOut.GetCapabilities(0).ProductName); _waveOut.DeviceNumber = MapOutputDevice(outputDevice); _waveOut.DesiredLatency = 200; //Default is 300 //_waveOut.Init(_playBuffer); _waveOut.Init(mixer); _waveOut.Play(); _waveIn.StartRecording(); if (_timer == null) { _timer = new System.Timers.Timer(); _timer.Interval = 1000; _timer.Elapsed += _timer_Elapsed; } _timer.Start(); started = true; }
public AudioMixer() { WaveProvider = new MixingWaveProvider32(); Output = new DirectSoundOut(); }
public void SaveToFile(MixingWaveProvider32 music, string path) { MediaFoundationEncoder.EncodeToMp3(music, path, 320000); //WaveFileWriter.CreateWaveFile(path, music); }