/// <summary> /// Вернёт байты готового тестового сетерео файла длинной в 1 секунду, с частотой дискретизации 44.1 кГц и 32 битным значением звука который вы можете воспроизвести. /// Если не вылетит в ошибку - библиотека работает :) /// </summary> /// <returns></returns> public Byte[] GetTestWAVData() { Int32[,] sound = new Int32[44100, 2]; Random ran = new Random(); for (Int32 i = 0; i < sound.GetLength(0); i++) { sound[i, 0] = (Int32)(Math.Sin(i * 0.1f * (i / 1000f)) * (Int32.MaxValue * 0.05f)); } for (Int32 i = 0; i < sound.GetLength(0); i++) { sound[i, 1] = (Int32)(Math.Sin(i * 0.1f * Math.Abs(Math.Cos(i / 10000f))) * (Int32.MaxValue * 1f)); } WAVElib wlib = new WAVElib(); wlib.SampleRate = 44100; wlib.BitsPerSample = 32; wlib.Sound = sound; Byte[] res = wlib.GetWAVData(); wlib.Dispose(); return(res); }
/// <summary> /// Возвращает байты готового WAV файла в соответствии с заданными значениями. /// Не сохраняет значения в самом объекте, пожтому такие свойства как Duration или Data не будут доступными. /// </summary> /// <returns></returns> public Byte[] GetWAVData(UInt32 SampleRate, UInt16 BitsPerSample, Int32[,] Sound) { WAVElib wlib = new WAVElib(); wlib.SampleRate = SampleRate; wlib.BitsPerSample = BitsPerSample; wlib.Sound = Sound; Byte[] res = wlib.GetWAVData(); wlib.Dispose(); return(res); }
static void Main(string[] args) { #region Объявление необходимых компонентов WAVElib wlib = new WAVElib(); WAVElib_SoundWorker sowork = new WAVElib_SoundWorker(); WAVElib_ChannelWorker chwork = new WAVElib_ChannelWorker(); #endregion Int32[] chSin = chwork.Generate_Sinus(0.05f, 0.3f, 44100 * 4); Int32[] chN1 = chwork.Generate_Noise(0.5f, 44100 * 4); Int32[] chN2 = chwork.Generate_Noise(0.5f, 44100 * 4); Int32[] chLeft = chwork.Process_MergeChannel(new Object[] { chSin, chN1, }); Int32[] chRight = chwork.Process_MergeChannel(new Object[] { chSin, chN2, }); chLeft = chwork.Process_VolumeUpLinear(chLeft, 0, 44100); chLeft = chwork.Process_VolumeDownLinear(chLeft, 44100 * 3, 44100); chRight = chwork.Process_VolumeUpLinear(chRight, 0, 44100); chRight = chwork.Process_VolumeDownLinear(chRight, 44100 * 3, 44100); Int32[,] sound = sowork.MakeSound(new Object[] { chLeft, chRight, }); // Установка значений генерации wlib.SampleRate = 44100; wlib.BitsPerSample = 32; // Воспроизведение wlib.Sound = sound; new SoundPlayer(new MemoryStream(wlib.GetWAVData())).Play(); //File.WriteAllBytes("w.wav", wlib.GetWAVData()); #region исование прогресс-бара for (Int32 i = 0; i < 120; i++) { System.Threading.Thread.Sleep((Int32)(wlib.Duration / 120f)); Console.SetCursorPosition(0, 0); Console.WriteLine(Math.Round(i / 120f * wlib.Duration).ToString() + " / " + (wlib.Duration).ToString() + "ms " + Math.Round(i * (10f / 12f)).ToString() + "%"); Console.SetCursorPosition(i, 1); Console.Write("="); } Console.WriteLine(""); Console.WriteLine("END"); Console.ReadKey(); #endregion }