Двухтональные сигналы
F = (F1 + F2) * 0.5
Пример кода (сорри за недостаточную подробность):
/*...*/
tDSAudioBuffer *pDSAudioBuffer;
/*...*/
DSBCAPS dsbCaps;
WAVEFORMATEX pcmwf;
LPDIRECTSOUNDBUFFER lpdsb = pDSAudioBuffer->GetDSBuffer();
char *buffer = pDSAudioBuffer->GetMemBuffer();
for(int i = 0; i < pDSAudioBuffer->dsbd.dwBufferBytes; i++)
buffer = 0x7f +
(sin((i / (float)pDSAudioBuffer->pcmwf.nSamplesPerSec)*2.0f*3.141592654f*1200)*128.0f +
sin((i / (float)pDSAudioBuffer->pcmwf.nSamplesPerSec)*2.0f*3.141592654f*2300)*128.0f)*0.5;
pDSAudioBuffer->MoveData();
pDSAudioBuffer->PlayLooping();
/*...*/
- Этот пример заполняет весь аудиобуфер. А хотелось бы записать в буфер только один период, чтобы оставшуюся часть буфера можно было бы заполнить простым копированием данных из начала буфера.
Кто нибудь знает решение?