Example #1
0
    /// <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);
    }
Example #2
0
    /// <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);
    }
Example #3
0
        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
        }