Как создать звук из массива double и воспроизвести его на динамике - PullRequest
3 голосов
/ 15 октября 2010

У меня есть массив double (размер более 60 тыс. Записей), у меня есть значение частоты. Теперь я хочу создать из него звук, используя C / C ++, который я могу воспроизводить на динамике. Моя ОС Linux.

Спасибо. Я надеюсь, что я достаточно ясно.

Ответы [ 4 ]

2 голосов
/ 15 октября 2010

Следующая информация поступает из программы командной строки beep, доступной в Debian. Исходный код доступен через репозитории, а также доступен здесь .

Существует звонок ioctl() с запросом KIOCSOUND на консольное устройство, которое вы можете использовать для воспроизведения звуков через динамик ПК. Фрагмент:

ioctl(fd, KIOCSOUND, CLOCK_TICK_RATE/(int)frequency);

для воспроизведения звука с частотой frequency и:

ioctl(fd, KIOCSOUND, 0);

чтобы остановить гудок. fd - дескриптор файла с разрешением на запись в /dev/console, а frequency - частота звука, приведенная в герцах. Константа CLOCK_TICK_RATE связана с микросхемой таймера, используемой для создания звукового сигнала, и в исходном коде beep имеет значение 1193180 (герц). Хотя это может отличаться для вашей системы, но, если я не ошибаюсь, я помню ту же самую константу на старых программах DOS, которые использовали динамик ПК.

2 голосов
/ 15 октября 2010

http://www.linuxjournal.com/article/6735

Это ссылка на статью в Linux Journal о программировании с помощью ALSA (Advance Linux Sound Architecture).Он содержит пример кода.

1 голос
/ 15 октября 2010

Два других API-интерфейса, на которые стоит обратить внимание, - это SDL и SFML.

1 голос
/ 15 октября 2010

Библиотека Qt может быть излишней для того, что вы хотите сделать, и может быть более простой вариант, но это опция :)

Вы должны иметь возможность использовать QAudioOutput класс, чтобы делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...