public void TestDualChannelWave()
        {
            float[] dualChannelSamples = CreateSineWave(2);
            string  dualChannelFile    = DataManagement.PathForDataFile("Test", "dualChannel.wav");
            string  secondDualChannel  = DataManagement.PathForDataFile("Test", "dualChannel2.wav");

            Assert.IsTrue(WaveEncoding.SaveFile(
                              filepath: dualChannelFile,
                              channels: 2,
                              sampleRate: 44100,
                              samples: dualChannelSamples,
                              overwrite: true));

            dualChannelSamples = null;

            Assert.IsTrue(File.Exists(dualChannelFile));

            Assert.IsTrue(WaveEncoding.LoadFile(
                              filepath: dualChannelFile,
                              channels: out int channels,
                              samples: out dualChannelSamples));

            Assert.IsTrue(channels == 2);
            Assert.IsTrue(dualChannelSamples != null);

            Assert.IsTrue(WaveEncoding.SaveFile(
                              filepath: secondDualChannel,
                              channels: 2,
                              sampleRate: 44100,
                              samples: dualChannelSamples,
                              overwrite: true));
        }
        public void TestSingleChannelWave()
        {
            float[] singleChannelSamples = CreateSineWave(1);
            string  singleChannelFile    = DataManagement.PathForDataFile("Test", "singleChannel.wav");
            string  secondSingleChannel  = DataManagement.PathForDataFile("Test", "singleChannel2.wav");

            Assert.IsTrue(WaveEncoding.SaveFile(
                              filepath: singleChannelFile,
                              channels: 1,
                              sampleRate: 44100,
                              samples: singleChannelSamples,
                              overwrite: true));

            singleChannelSamples = null;

            Assert.IsTrue(File.Exists(singleChannelFile));

            Assert.IsTrue(WaveEncoding.LoadFile(
                              filepath: singleChannelFile,
                              channels: out int channels,
                              samples: out singleChannelSamples));

            Assert.IsTrue(channels == 1);
            Assert.IsTrue(singleChannelSamples != null);

            Assert.IsTrue(WaveEncoding.SaveFile(
                              filepath: secondSingleChannel,
                              channels: 1,
                              sampleRate: 44100,
                              samples: singleChannelSamples,
                              overwrite: true));
        }
Esempio n. 3
0
        public void TestPhaseVocoding()
        {
            //string baseFile = "Boston_HitchARide";
            string baseFile = "000000";

            WaveEncoding.LoadBGCSimple(
                filepath: DataManagement.PathForDataFile("Test", $"{baseFile}.wav"),
                simpleAudioClip: out SimpleAudioClip song);

            song = song.Window(10f).Cache();

            //First, write unmodified
            WaveEncoding.SaveFile(
                filepath: DataManagement.PathForDataFile("Test", $"{baseFile}_Unmodified.wav"),
                channels: song.Channels,
                sampleRate: (int)song.SamplingRate,
                samples: song.Samples,
                overwrite: true);

            //Next, Slow it down 5%
            {
                SimpleAudioClip slowed_05 = song.PhaseVocode(0.95f).Cache();

                //Next, write it slowed 5%
                WaveEncoding.SaveFile(
                    filepath: DataManagement.PathForDataFile("Test", $"{baseFile}_Slowed_05.wav"),
                    channels: slowed_05.Channels,
                    sampleRate: (int)slowed_05.SamplingRate,
                    samples: slowed_05.Samples,
                    overwrite: true);
            }

            //Next, Slow it down 25%
            {
                SimpleAudioClip slowed_25 = song.PhaseVocode(0.75f).Cache();

                //Next, write it slowed 5%
                WaveEncoding.SaveFile(
                    filepath: DataManagement.PathForDataFile("Test", $"{baseFile}_Slowed_25.wav"),
                    channels: slowed_25.Channels,
                    sampleRate: (int)slowed_25.SamplingRate,
                    samples: slowed_25.Samples,
                    overwrite: true);
            }

            //Next, Slow it down 50%
            {
                SimpleAudioClip slowed_50 = song.PhaseVocode(0.5f).Cache();

                //Next, write it slowed 5%
                WaveEncoding.SaveFile(
                    filepath: DataManagement.PathForDataFile("Test", $"{baseFile}_Slowed_50.wav"),
                    channels: slowed_50.Channels,
                    sampleRate: (int)slowed_50.SamplingRate,
                    samples: slowed_50.Samples,
                    overwrite: true);
            }
        }
Esempio n. 4
0
        public void TestCarlileShuffler()
        {
            string baseFile = "000000";

            WaveEncoding.LoadBGCSimple(
                filepath: DataManagement.PathForDataFile("Test", $"{baseFile}.wav"),
                simpleAudioClip: out SimpleAudioClip song);

            Debug.Log($"Pre  RMS: {Mathf.Sqrt(song.Samples.Sum(x => x * x) / song.Samples.Length)}   N:{song.Samples.Length}");

            song = song.CarlileShuffle().Cache();

            Debug.Log($"Post RMS: {Mathf.Sqrt(song.Samples.Sum(x => x * x) / song.Samples.Length)}   N:{song.Samples.Length}");

            //Write to File
            WaveEncoding.SaveFile(
                filepath: DataManagement.PathForDataFile("Test", $"{baseFile}_Carlile.wav"),
                channels: song.Channels,
                samples: song.Samples,
                overwrite: true);
        }