Hi,
I have a problem concerning processing two files, mixing them together and saving the output in readable wave format. The Processing is just adjusting volume of the second file accordingly to the volume of the first one (i.e. envelope controlling). I load both of them to the AudioFileReader. I pick where to save 'writer' (which is a WaveFileWriter) using SaveFileDialog and i adjust its WaveFormat accordingly to what WaveFormat first input file has:
An unhandled exception of type 'System.FormatException' occurred in NAudio.dll
Additional information: Invalid WAV file - No fmt chunk found
Why it's invalid .wav file if i used WaveFormat from existing, proper .wav file? How can i provide this fmt chunk to my output?
Thanks in advance for any help
EDIT: I didn't dispose after writing. Sorry for the mess, stupid mistake and i don't know how to delete this post...
I have a problem concerning processing two files, mixing them together and saving the output in readable wave format. The Processing is just adjusting volume of the second file accordingly to the volume of the first one (i.e. envelope controlling). I load both of them to the AudioFileReader. I pick where to save 'writer' (which is a WaveFileWriter) using SaveFileDialog and i adjust its WaveFormat accordingly to what WaveFormat first input file has:
writer = new WaveFileWriter(saveDialog.FileName, firstReader.WaveFormat);
Then this method gets triggered:{
/*
* In one loop: filling both buffers, adjusting volume, mixing and saving the output
*/
firstBuffer = new float[firstReader.WaveFormat.SampleRate * 2];
secondBuffer = new float[secondReader.WaveFormat.SampleRate * 2];
int firstBytesRead = 0;
int secondBytesRead = 0;
do
{
//reading:
firstBytesRead = firstReader.Read(firstBuffer, 0, firstBuffer.Length);
secondBytesRead = secondReader.Read(secondBuffer, 0, secondBuffer.Length);
//processing:
for (int i = 0; i < firstBuffer.Length; i++)
{
firstBuffer[i] /= 2; //volume rescaling
// if secondBufer isn't empty - adjust the volume and mix it with firstBuffer
if (secondBytesRead > 0)
{
secondBuffer[i] *= firstBuffer[i]*VOLUME_RATIO;
firstBuffer[i] += secondBuffer[i];
}
}
//writting:
writer.WriteSamples(firstBuffer, 0, firstBytesRead);
} while (firstBytesRead > 0);
MessageBox.Show("Completed succesfully", "Done!");
}
The output is created and i can play it in Winamp (but not in a different player). The problem is that I would like to use my output as an input for another processing cycle, i.e. simply loading output and chaining (adjusting volume and mixing) it with another file. Unfortunately i get FormatException while loading this output. It says:An unhandled exception of type 'System.FormatException' occurred in NAudio.dll
Additional information: Invalid WAV file - No fmt chunk found
Why it's invalid .wav file if i used WaveFormat from existing, proper .wav file? How can i provide this fmt chunk to my output?
Thanks in advance for any help
EDIT: I didn't dispose after writing. Sorry for the mess, stupid mistake and i don't know how to delete this post...







