Member 14717547 Ответов: 0

Как написать а .wav-файл через сложный массив?


Я сгенерировал волну в сложной переменной[] под названием "сэмплы", и мне хотелось бы знать, как записать ее в a .wav-файл, чтобы его можно было читать и воспроизводить.

Что я уже пробовал:

<pre lang="c#">
<pre>private void SaveGenWave()
        {
            NAudio.Wave.WaveFileWriter waveWriter = null;
            WaveIn wi = new WaveIn();

            double[] primArray = new double[samples.Length];

            for (int i = 0; i < samples.Length; i++)
            {
                primArray[i] = Convert.ToDouble(samples[i].Real);
            }

            SaveFileDialog save = new SaveFileDialog();
            save.Filter = "Wave File (*.wav)|*.wav;";
            if (save.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                return;

            wi = new NAudio.Wave.WaveIn();
            wi.DeviceNumber = 0;
            wi.WaveFormat = new NAudio.Wave.WaveFormat(samplingRate, 1);

            waveWriter = new NAudio.Wave.WaveFileWriter(save.FileName, wi.WaveFormat);

            byte[] byteArray = new byte[samples.Length];

            byteArray = ObjectToByteArray(samples);

            waveWriter.Write(byteArray, 0, samples.Length);
        }

        public static byte[] ObjectToByteArray(Object obj)
        {
            BinaryFormatter bf = new BinaryFormatter();
            using (var ms = new MemoryStream())
            {
                bf.Serialize(ms, obj);
                return ms.ToArray();
            }
        }

MadMyche

Похоже, вы на правильном пути с кодом... Так что же происходит / не происходит? Есть ли какая-то ошибка?

Member 14717547

Он создает файл, но длина файла составляет 0 секунд, поэтому я не уверен, есть ли внутри какие-либо данные. Но я могу открыть файл.

0 Ответов