C ++ Отправка аудиоданных на выход динамика в Linux и Mac OS X

0

Я заинтересован в использовании систем Linux и OS X в качестве цифровых музыкальных инструментов для экспериментальных целей.

Я хочу знать, каковы возможные методы отправки массива числовых данных (которые описывают некоторую длину аудио) на аудиовыход 3,5 мм. (Так что, конечно, можно играть с некоторыми динамиками).

Мои требования заключаются в том, что это можно сделать с помощью C++, поскольку мне нужно генерировать звуковые образцы в режиме реального времени. (Возможно, Python не собирается его сокращать.) В идеале я хотел бы сделать эту кросс-платформу, но я не очень заинтересован в том, чтобы делать это в одном окне.

Идея состоит в том, чтобы сделать что-то вроде:

1: Установите выходной режим на 44100 кГц, 24-битный моно (L & R). 2: Генерировать массив из 44100 подписанных 24-битных целых чисел. 3: Скажите компьютеру воспроизвести XYZ секунды/образцы данных, которые находятся в массиве, начиная с номера образца XYZ.

Легко сделать это на чем-то вроде Arduino. (Который также может быть запрограммирован в C++). Для тех, кто знаком, вы можете либо использовать цифровые выходы напрямую, либо для чего-то более сложного, построить простую доску, которая правильно модифицирует ваш сигнал так, чтобы она была синусоидальной с обоими положительное и отрицательное колебание напряжения. (Вместо того, чтобы просто положительно).

Я думаю, мне нужно что-то вроде OpenAL, которое, насколько я могу судить, похоже на OpenGL. Кажется, я не могу найти много информации об этом. Кажется, что он больше не развит и не использовался в течение нескольких лет. Я предполагаю, что есть альтернатива?

Теги:
audio
cross-platform
openal

1 ответ

1
Лучший ответ

OpenAL - очень хороший выбор для этого. И это намного легче узнать, чем OpenGL. Вырезание и вставка.

Возможно, он не изменился недавно, но все еще широко используется. Я лично использую его на iOS/OS X. Вам следует дважды проверить свой выбор на Linux.

Я не знаю, может ли он воспроизводить 24-битный PCM. Но он, безусловно, может принять 16-битный PCM на 44100, если базовый звуковой чип поддерживает это.

Вот один учебник, который может вам помочь:

http://kcat.strangesoft.net/openal-tutorial.html

  • 1
    Я предполагаю, что сложность заключается в том, что вы предоставляете данные в реальном времени, а не ставите их в очередь. OpenAL основан на буфере, а не на файлах, поэтому, если вы можете заполнить его буферами достаточно быстро, у вас все будет в порядке. Это единственный риск, который я вижу.
  • 0
    Хорошо, большое спасибо, я посмотрю на это после экзаменов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню