Как написать а .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 секунд, поэтому я не уверен, есть ли внутри какие-либо данные. Но я могу открыть файл.