Звуковые файлы PCM имеют заголовок и последовательные образцы аудиоданных. Вам нужно прочитать заголовок и использовать его в составном (смешанном) заголовке файла.
FILE *fpIn; // Input file pointer
char temp[2*FrameSize];
char inFile[]="input_1.wav" ;
char outFile[]="result.wav" ;
if ((fpIn = fopen(inFile,"rb")) == NULL)
{
printf("Can't open input file\n");
exit(0);
}
if ((fpOut = fopen(outFile,"wb")) == NULL)
{
printf("Can't open data file\n");
exit(0);
}
// Cut the wav headers 44 byte
fread(temp,sizeof(char),44,fpIn); // Remove wave header from input file
for the writing back
fwrite(temp,sizeof(char),22*2,fpOut); // Add wave header from input file2
while(fread(temp, sizeof(char),N*2,fpIn) == (unsigned short)(2*N))
{
for (i=0;i<N;i++) // Get PCM input data
{
input1[i] = (temp[2*i]&0xFF)|(temp[2*i+1]<<8);
}
// Mixing logic goes here
for (j=0, i=0;i<N;i++)
{
input[i]=0;
temp[j++] = input [i]&0xFF;
temp[j++] = (input [i]>>8)&0xFF;
}
fwrite(temp,sizeof(char),N*2,fpOut); // Save result
}
fclose(fpOut);
fclose(fpIn);
Приведенный выше код показывает, как читать и писать WAV файлы, вам нужно реализовать логику смешивания с весовыми факторами так далее, например. Выход = альфа. Input1 + (1- alpha) Input2 // где альфа находится между 0 и 1, зависит от того, как вам нравится добавить Input 1 vs Input 2., если альфа = 0,5 оба добавляются равномерно.
См. Http://stackoverflow.com/questions/1784396/how-to-mix-audio-samples –