bool AddSyroSample(void *pFmtChunk, void *pWData, DWORD Bytes, int SampleIndex);
・pFmtChunk : RIFF ファイルの 'fmt' チャンク形式そのもの
・他の引数は、見てのとおり
で作った。
AddSyroSample
typedef struct {
BYTE Form[2]; // PCM:0001
BYTE Channel[2]; // 1 or 2
BYTE Rate[4]; // Hz
BYTE Speed[4]; // Bytes/Sec
BYTE Block[2]; // Bytes/Frame
BYTE Bits[2]; // 1(8bit) or 2(16bit)
}
TWCkFmt;
bool AddSyroSample(void *pFmtChunk, void *pWData, DWORD Bytes, int SampleIndex)
{
TSyroData *pSD;
TWCkFmt *pCkFmt;
if (MAX_SYRODATA <= CountSyroData) {
DisplayMessage(SYROSEx_Full);
return (false);
}
pSD = SyroData + CountSyroData;
if (NULL == (pSD->pData = (BYTE *)malloc(Bytes))) {
DisplayMessage(SYROS_NotEnoughMemory);
return (false);
}
pCkFmt = (TWCkFmt *)pFmtChunk;
pSD->DataType = TYPE_VS_SampleLiner;
memcpy(pSD->pData, pWData, Bytes);
pSD->Number = SampleIndex;
pSD->Size = Bytes;
pSD->Quality = *((WORD *)(pCkFmt->Bits));
pSD->Fs = *((DWORD *)(pCkFmt->Rate));
pSD->SampleEndian = LittleEndian;
CountSyroData++;
return (true);
}
他で作成・テストしていた波形エディタプロトを、統合ツールに繋げる
・「syro stream 転送ボタン」を追加
RIFF ファイルを扱う部分が一部重複したので、後で整理
「単サンプルを SyroData に格納」部分は、
今の処、SyroData.DataType は SampleLiner に固定
・これで良いのかは、まだ不明
「波形切出し」-> 「syro stream 変換」->「本体転送」は、あっさりと成功 ニヤニヤ (嬉しいらしい)
「すぐに出来る細かいトコ」の調整