procedure TForm1.WaveSave;
var
hIO : hMMIO ; //デバイスのハンドル
RIFF_INFO :TMMCKINFO; //RITT用構造体
DATA_INFO :TMMCKINFO; //音声データ用構造体
FMT_INFO : TMMCKINFO; //fmt用構造体
begin
if SaveDialog1.Execute then
begin
//新規Waveファイル作成する
hIO := mmioOpen (PChar (SaveDialog1.FileName), nil,MMIO_CREATE or MMIO_WRITE
or MMIO_EXCLUSIVE);
//RIFFチャンクを作成
RIFF_INFO.fccType := mmioStringToFOURCC ('WAVE', 0);
mmioCreateChunk(hIO, @RIFF_INFO, MMIO_CREATERIFF);
//サブチャンクにWaveフォーマットを書き込む
FMT_INFO.ckid := mmioStringToFOURCC ('fmt', 0);
mmioCreateChunk (hIO, @FMT_INFO, 0);
mmioWrite (hIO, @PCM, SizeOf(PCM) - 2);
mmioAscend (hIO, @FMT_INFO, 0);
//音声データを書き込み
DATA_INFO.ckid := mmioStringToFOURCC ('data', 0);
mmioCreateChunk (hIO, @DATA_INFO, 0);
{ここでhioを使ってファイルにデータを書き込む
・・・
・・・
・・・}
mmioAscend (hIO, @DATA_INFO, 0);
//RIFFチャンクから退出
mmioAscend (hIO, @RIFF_INFO, 0);
//デバイスを解放
mmioClose (hIO, 0);
end;
end; |