wav ファイルを開いてコンソールで再生し、サウンドを変更して再生するプログラムを作成しました...変更されたサウンドで新しい wav ファイルを保存するにはどうすればよいですか? したがって、本質的にはwavファイルを作成し、変更された結果をそれに書き込みたいと考えています。WAVEFORMATEX
オーディオのデータに使用しました。
私はそれにもう少し取り組み、wavファイルを作成しましたが、再生されません
ここに私のコードがあります:
// writes the modified audio data into a .WAV file
void writeWaveFile(char* filename,WAVEFORMATEX& wfx)
{
FILE* file = fopen(filename, "wb");
if (file)
{
// write wave header
unsigned short formatType = wfx.wFormatTag;
unsigned short numChannels = wfx.nChannels;
unsigned long sampleRate = wfx.nSamplesPerSec;
unsigned short bitsPerChannel = wfx.wBitsPerSample;
unsigned short bytesPerSample = wfx.nAvgBytesPerSec;
unsigned long bytesPerSecond = wfx.nAvgBytesPerSec;
unsigned long dataLen = wfx.nBlockAlign;
const int fmtChunkLen = 16;
const int waveHeaderLen = 4 + 8 + fmtChunkLen + 8;
unsigned long totalLen = waveHeaderLen + dataLen;
fwrite("RIFF", 4, 1, file);
fwrite(&totalLen, 4, 1, file);
fwrite("WAVE", 4, 1, file);
fwrite("fmt ", 4, 1, file);
fwrite(&fmtChunkLen, 4, 1, file);
fwrite(&formatType, 2, 1, file);
fwrite(&numChannels, 2, 1, file);
fwrite(&sampleRate, 4, 1, file);
fwrite(&bytesPerSecond, 4, 1, file);
fwrite(&bytesPerSample, 2, 1, file);
fwrite(&bitsPerChannel, 2, 1, file);
// write data
fwrite("data", 4, 1, file);
fwrite(&dataLen, 4, 1, file);
//fwrite(data, dataLen, 1, file);
// finish
printf("Saved audio as %s\n", filename);
fclose(file);
}
else
printf("Could not open %s to write audio data\n", filename);
}