Audio: генерация звуковых волн (ищу простой способ генерации звуковых волн)

Модератор: Модераторы разделов

Аватара пользователя
VisualN
Сообщения: 213
ОС: Gentoo Linux

Audio: генерация звуковых волн

Сообщение VisualN »

Ищу простой спобов генерации синусоидальных звуковых волн на звуковуху.
Можно на C/C++ или любом скриптовом языке.
Гуглил около часа, но ниче не нашел, кроме либы OpenAL, которая имхо слишком сложная для такой простой задачи,
во всяком случае простого рабочего примера мне найти не удалось.
Задача такая: параллельно генерировать несколько синусоидальных звуковых волн разной(и произвольной) частоты и громкости с учетом того что меняться кол-во, громкость и частота волн может каждые 20-25ms. То есть например вариант с какой нить утилитой консольной врядли прокатит потому что, что бы изменить частоту придется ее(утилиту) перезапускать скорее всего(с новыми параметрами), что возможно приведет к обрыву звука на 5-10ms, а у нас всего длинна одного периода звука может быть всего 25ms.

З.Ы. Нужно все это что бы управлять внешним устройством подключенном к звуковухе, управляемым менно звуковыми волнами, а точнее их частотой и громкостью.
Nothing ever changes...
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Audio: генерация звуковых волн

Сообщение RasenHerz »

а использовать запись в /dev/dsp?
может это поможет.
Спасибо сказали:
Аватара пользователя
VisualN
Сообщения: 213
ОС: Gentoo Linux

Re: Audio: генерация звуковых волн

Сообщение VisualN »

Запись в /dev/dsp не подходит, так как вызов write в /dev/dsp занимает довольно много времени, точно не засекал, но на слух заметно - если write звука длинной 25ms(писк например) пихнуть в цикл то слышно паузы между воспроизведеним.
С учетом того что мы не знаем заранее какой звуковой сигнал надо будет подать уже через 25ms, придется каждые 25ms юзать write, что делает задачу невыполнимой из-за этих пауз, звук не должен прерываться.

Задача оказалась не такая простая, из-за ограничений по временным параметрам, щас ковыряюсь с OpenAL, думаю получится.
Nothing ever changes...
Спасибо сказали: