public DrumPatternSampleProvider(DrumPattern pattern) { var kit = new DrumKit(); this.sequencer = new PatternSequencer(pattern, kit); this.waveFormat = kit.WaveFormat; mixer = new MixingSampleProvider(waveFormat); }
public mControllerPanel() { Console.OutputEncoding = System.Text.Encoding.Unicode; // Open mixer //mixer = new MixingWaveProvider32(); mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)); mixer.ReadFully = true; // Init sources satellite = new sourceSatellite(mixer); player1 = new sourcePlayer(mixer); player2 = new sourcePlayer(mixer); // Open output line //outputMaster = new DirectSoundOut(); outputMaster = new WaveOutEvent(); outputMaster.DesiredLatency = 700; outputMaster.Init(mixer); outputMaster.Play(); loadConfig(); ap = new mAutopilot(this); tsInterface.setController(this); tsInterface.pollServiceStart(); tsInterface.connect(); }
public void WithReadFullySetNoInputsReturnsSampleCountRequested() { var msp = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)); msp.ReadFully = true; var buffer = new float[1000]; Assert.AreEqual(buffer.Length, msp.Read(buffer, 0, buffer.Length)); }
public TrackSampleProvider(MediaBankBase mediaBank, Track track) { SyncContext = SynchronizationContext.Current; Track = track; Tempo = Track.Tempo; WholeNoteFadeOutTime = PhraseHelper.BaseTempo / Tempo; HalfNoteFadeOutTime = WholeNoteFadeOutTime / 2; QuarterNoteFadeOutTime = HalfNoteFadeOutTime / 2; CurrentLetRingFadeOut = QuarterNoteFadeOutTime; MediaBank = mediaBank; Phrases = track.Phrases.ToArray(); PhrasesQueue = new Queue<Phrase>(Phrases); // ReSharper disable once SuspiciousTypeConversion.Global TrackSamples = Phrases.Sum(c => (long)c.GetPhraseSamples(Tempo, WaveFormat)); TrackDuration = TimeSpan.FromTicks(TrackSamples / WaveFormat.AverageBytesPerSecond * (WaveFormat.BitsPerSample / 8) * TimeSpan.TicksPerSecond); Mixer = new MixingSampleProvider(MediaBank.TargetWaveFormat) { ReadFully = true }; RemainingDelayBeforeStop = (int)(WholeNoteFadeOutTime * WaveFormat.AverageBytesPerSecond); }
private void StartPlayback() { masterMix = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)); foreach (var source in trackSources) masterMix.AddMixerInput(source); outDevice = new WaveOut(); outDevice.Init(masterMix); outDevice.Play(); }
public AudioPlaybackEngine(int sampleRate = 44100, int channelCount = 2) { outputDevice = new WaveOutEvent(); mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, channelCount)); mixer.ReadFully = true; outputDevice.Init(mixer); outputDevice.Play(); }
public void WithOneInputReturnsSamplesReadIfNotEnoughToFullyRead() { var input1 = new TestSampleProvider(44100, 2, 800); var msp = new MixingSampleProvider(new[] { input1 }); var buffer = new float[1000]; Assert.AreEqual(800, msp.Read(buffer, 0, buffer.Length)); // randomly check one value Assert.AreEqual(567, buffer[567]); }
public void WithOneInputReadsToTheEnd() { var input1 = new TestSampleProvider(44100, 2, 2000); var msp = new MixingSampleProvider(new [] { input1}); var buffer = new float[1000]; Assert.AreEqual(buffer.Length, msp.Read(buffer, 0, buffer.Length)); // randomly check one value Assert.AreEqual(567, buffer[567]); }
static AudioPlayer() { var output = new WaveOutEvent(); _mixer = new MixingSampleProvider( WaveFormat.CreateIeeeFloatWaveFormat(SampleRate, ChannelCount)); _mixer.ReadFully = true; output.Init(_mixer); output.Play(); }
/* Program */ public sourcePlayer(MixingSampleProvider targetMixer) { playlist = new ObservableCollection<musicItem>(); volume = 1f; sourceState = "Stopped"; selectedPlayMode = playModes.Single; mixer = targetMixer; }
public DelayedMixingSampleProvider(IEnumerable<ISampleProvider> providers, float delay, bool reverse) { float currentDelay = -delay; var sampleProviders = reverse ? providers.Reverse() : providers; sampleProviders = sampleProviders.Select(c => new OffsetSampleProvider(c) { DelayBy = TimeSpan.FromSeconds(currentDelay += delay) }); MixingSampleProvider = new MixingSampleProvider(sampleProviders); }
public void FullyReadCausesPartialBufferToBeZeroedOut() { var input1 = new TestSampleProvider(44100, 2, 800); var msp = new MixingSampleProvider(new[] { input1 }); msp.ReadFully = true; // of 1000 floats of value 9999 var buffer = Enumerable.Range(1,1000).Select(n => 9999f).ToArray(); Assert.AreEqual(buffer.Length, msp.Read(buffer, 0, buffer.Length)); // check we get 800 samples, followed by zeroed out data Assert.AreEqual(567f, buffer[567]); Assert.AreEqual(799f, buffer[799]); Assert.AreEqual(0, buffer[800]); Assert.AreEqual(0, buffer[999]); }
static void Main(string[] args) { Controller controller = new Leap.Controller(); // initialize the leap controller while (!controller.IsConnected) { } // wait for it to connect PhaseModulationProvider pmProvider = new PhaseModulationProvider(440, (440f / 2f), 0.5f, 0.5f, 0.2f); // initialize the pm oscillator MixingSampleProvider mixer = new MixingSampleProvider(new[] { pmProvider }); mixer.ReadFully = true; SynthController synthController = new SynthController(pmProvider, 0.1f); // initialize the object that controls the synth with leap WaveOut audioOut = new WaveOut(); // hear things audioOut.Init(mixer); // give it the oscillator audioOut.Play(); // play it RenderWindow window = new RenderWindow(new VideoMode(200, 200), "Test Window, Please Ignore"); // make the sfml window window.Closed += (object sender, EventArgs e) => // so I can close it { RenderWindow w = sender as RenderWindow; controller.Dispose(); w.Close(); }; window.KeyPressed += (object sender, KeyEventArgs e) => { if (e.Code == Keyboard.Key.Escape) { RenderWindow w = sender as RenderWindow; w.Close(); } }; while (window.IsOpen) // main loop { synthController.HandleFrame(controller); window.DispatchEvents(); window.Clear(); window.Display(); } }
public sourceSatellite(MixingSampleProvider targetMixer) { volume = 1f; sourceState = "OFF"; //Open channel inputSat = new WaveInEvent(); inputSat.DeviceNumber = devNum; inputSat.WaveFormat = new WaveFormat(); inputSat.BufferMilliseconds = 400; //Volume VSP //inputSatVSP = new VolumeSampleProvider(new Pcm16BitToSampleProvider(new WaveInProvider(inputSat))); inputSatVSP = new VolumeSampleProvider(new WaveInProvider(inputSat).ToSampleProvider()); //Send to mixer targetMixer.AddMixerInput(inputSatVSP); }
/// <summary> /// Takes 1 wave file, Takes 1 Mp3 File and Combines the two files and resaves on top of the wav. /// </summary> /// <returns></returns> public string CombineAudioSignal() { var audioPath = _file.Remove(0, _file.IndexOf("Uploads")); var server = HttpContext.Current.Server; var directoryInfoBeats = new DirectoryInfo(new ResourceProvider().GetPath(RapResource.Beats)); var sortedFiles = from f in directoryInfoBeats.EnumerateFiles() orderby f.CreationTime select f; var beats = sortedFiles.Select(item => item.FullName).ToList(); using (var recordedAudio = new WaveFileReader(server.MapPath("~/" + audioPath))) using (var instrumental = new Mp3FileReader(beats[_beatLocation])) { var inputs = new List<ISampleProvider> { recordedAudio.ToSampleProvider(), instrumental.ToSampleProvider(), }; var mixer = new MixingSampleProvider(inputs); //requires work to avoid overriding the file being used WaveFileWriter.CreateWaveFile16( new ResourceProvider().GetPath(RapResource.RapBattleAudio) + new Guid() + ".wav", mixer); } return _file; }
public void Play() { asioOut = new AsioOut(settings.DeviceNumber); inputAudioBufferedWaveProvider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(Convert.ToInt32(settings.SampleRate), 1)); incomingAudioBufferedWaveProvider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(Convert.ToInt32(settings.SampleRate), 1)); inputAudioPanningProvider = new PanningSampleProvider(inputAudioBufferedWaveProvider.ToSampleProvider()); incomingAudioPanningProvider = new PanningSampleProvider(incomingAudioBufferedWaveProvider.ToSampleProvider()); inputAudioPanningProvider.Pan = 0.0f; mixingProvider = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(Convert.ToInt32(settings.SampleRate), 2)); mixingProvider.AddMixerInput(inputAudioPanningProvider); mixingProvider.AddMixerInput(incomingAudioPanningProvider); mixingProvider.ReadFully = true; asioOut.InitRecordAndPlayback(new SampleToWaveProvider(mixingProvider), 2, Convert.ToInt32(settings.SampleRate)); incomingBytes = new byte[Settings.GetInstance().BufferSize * 4]; asioOut.AudioAvailable += AsioOut_AudioAvailable; asioOut.Play(); connection.Connected += delegate (object source, EventArgs args) { inputAudioPanningProvider.Pan = +1.0f; incomingAudioPanningProvider.Pan = -1.0f; isAudioReceiving = true; isNewAudioAvailable = false; receivingAudio.Start(); }; connection.Disconnected += delegate (object source, EventArgs args) { inputAudioPanningProvider.Pan = 0.0f; isAudioReceiving = false; }; connection.StartMessageReceiving(); }
public static void PlaySong(IEnumerable<Track> tracks) { var enumerator = new MMDeviceEnumerator(); var defaultDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia); var waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(defaultDevice.AudioClient.MixFormat.SampleRate, 1); var wasapiOut = new WasapiOut(AudioClientShareMode.Shared, false, 60); MediaBankBase bank = new FenderStratCleanB(waveFormat); MediaBankBase bankBass = new RockdaleBassBridge(waveFormat); var mixer = new MixingSampleProvider(waveFormat); var trackSampleProviders = tracks.Select(t => new TrackSampleProvider(t.Patch == MediaPatch.CleanGuitar ? bank : bankBass, t)) .ToArray(); var playedTracks = new List<int>(); foreach(var track in trackSampleProviders) { track.OnPhrasePlaying += (sender, args) => { var channel = args.Track.Channel; var phrase = args.Phrase; if(playedTracks.Contains(channel)) { AsyncConsole.WriteLine(); PrintUtils.PrintContentTable(); playedTracks.Clear(); } PrintUtils.PrintContent(phrase.Notes != null && phrase.Notes.Length > 0 ? string.Join(",", phrase.Notes) : phrase.Command.ToString(), channel); playedTracks.Add(channel); }; mixer.AddMixerInput(track); } wasapiOut.Init(new VolumeSampleProvider(mixer) { Volume = 0.7f }); PrintUtils.Init(trackSampleProviders.Length); PrintUtils.PrintHeaderOfTable(); PrintUtils.PrintRowDividerTable(); PrintUtils.PrintContentTable(); wasapiOut.Play(); var resetEvent = new ManualResetEvent(false); wasapiOut.PlaybackStopped += (sender, args) => { resetEvent.Set(); if(args.Exception != null) { throw args.Exception; } }; resetEvent.WaitOne(); Console.WriteLine(); PrintUtils.PrintFooterOfTable(); }
public static string GenerateAudio(ControllerContext context, string captcha) { var mixed = Path.GetTempFileName(); var back = Path.GetTempFileName(); var main = Path.GetTempFileName(); //gera audio principal List<String> chars = new List<string>(); foreach (var item in captcha) { chars.Add(context.HttpContext.Server.MapPath("~/Content/Audios/" + item.ToString() + ".wav")); } Concatenate(main, chars, 1000); chars = new List<string>(); //gera audio aleatorio para sujeira for (int i = 0; i < 4; i++) { var randtext = Captcha.GenerateRandomCode(i); foreach (var item in randtext) { chars.Add(context.HttpContext.Server.MapPath("~/Content/Audios/" + item.ToString() + ".wav")); } } Concatenate(mixed, chars, 0, true); ReverseWaveFile(mixed, back); using (var reader1 = new WaveFileReader(main)) using (var reader2 = new WaveFileReader(back)) { var volumeProvider = new VolumeSampleProvider(reader2.ToSampleProvider()); volumeProvider.Volume = 0.15f; var inputs = new List<ISampleProvider>() { reader1.ToSampleProvider(), volumeProvider }; var mixer = new MixingSampleProvider(inputs); WaveFileWriter.CreateWaveFile16(mixed, mixer); } var mp3file = Path.GetTempFileName(); WavToMp3(mixed, mp3file, context); return mp3file; }
private void SetupEngine() { //OutputDevice = new WaveOutEvent(); //OutputDevice = new DirectSoundOut(40); //OutputDevice = new WasapiOut(AudioClientShareMode.Shared, true, 40); if (Constants.DefaultAudioDevice == Guid.Empty) { OutputDevice = new DirectSoundOut(100); } else { LastAudioDevice = Constants.DefaultAudioDevice; OutputDevice = new DirectSoundOut(Constants.DefaultAudioDevice, 100); } Mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(SampleRate, ChannelCount)) { ReadFully = true }; OutputDevice.Init(Mixer); OutputDevice.Play(); }
public static void SaveSong(IEnumerable<Track> tracks, string filePath) { var waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(48000, 1); MediaBankBase bank = new FenderStratCleanB(waveFormat); MediaBankBase bassBank = new RockdaleBassBridge(waveFormat); var mixer = new MixingSampleProvider(waveFormat); foreach(var track in tracks) { var trackSampleProvider = new TrackSampleProvider(track.Patch == MediaPatch.CleanGuitar ? bank : bassBank, track); var resultingSampleProvider = new VolumeSampleProvider(trackSampleProvider) { Volume = 0.7f }; mixer.AddMixerInput(resultingSampleProvider); } WaveFileWriter.CreateWaveFile(filePath, new SampleToWaveProvider(mixer)); }
public void OnStopWave(NAudio.Wave.SampleProviders.MixingSampleProvider input, Slot slot) { Mixer.Instance.StopWave(input, slot); }
public void WithNoInputsFirstReadReturnsNoSamples() { var msp = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)); Assert.AreEqual(0, msp.Read(new float[1000], 0, 1000)); }
private void InitMixer() { InitOsc(); List<ISampleProvider> samples = new List<ISampleProvider>(); if (osc2Menu.SelectedIndex != -1) samples.Add(osc2); if (osc1Menu.SelectedIndex != -1) samples.Add(osc1); if (osc3Menu.SelectedIndex != -1) samples.Add(osc3); mixer = new MixingSampleProvider(samples); driverOut.Stop(); driverOut.Dispose(); driverOut = new WaveOut(); driverOut.Init(mixer); WavePlay(); }
public TrackSampleProvider() { mix = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)); //pan = new PanningSampleProvider(mix); volume = new VolumeSampleProvider(mix); }