public DrumPatternSampleProvider(DrumPattern pattern)
 {
     var kit = new DrumKit();
     this.sequencer = new PatternSequencer(pattern, kit);
     this.waveFormat = kit.WaveFormat;
     mixer = new MixingSampleProvider(waveFormat);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 5
0
 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();
 }
Esempio n. 6
0
 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]);
 }
Esempio n. 9
0
 static AudioPlayer()
 {
     var output = new WaveOutEvent();
     _mixer = new MixingSampleProvider(
         WaveFormat.CreateIeeeFloatWaveFormat(SampleRate, ChannelCount));
     _mixer.ReadFully = true;
     output.Init(_mixer);
     output.Play();
 }
Esempio n. 10
0
        /* 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]);
        }
Esempio n. 13
0
        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();
            }
        }
Esempio n. 14
0
        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;
 }
Esempio n. 16
0
        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();
        }
Esempio n. 17
0
        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();
        }
Esempio n. 18
0
        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();
 }
Esempio n. 20
0
        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));
        }
Esempio n. 21
0
 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));
 }
Esempio n. 23
0
        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);
 }