Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Двухтональные сигналы

991
01 сентября 2005 года
Zenhipster
157 / / 14.01.2005
Кто нибудь знает как расчитать длину периода двухтонального сигнала? Т.е. Есть сигнал с частотой F1, и сигнал с частотой F2. Каждый из сигналов представляет собой синусоиду. Начальные фазы сигналов одинаковы. Затем сигналы смешиваются, и получается двухтональный сигнал.
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();

/*...*/

- Этот пример заполняет весь аудиобуфер. А хотелось бы записать в буфер только один период, чтобы оставшуюся часть буфера можно было бы заполнить простым копированием данных из начала буфера.
Кто нибудь знает решение?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог