Я заинтересован в использовании систем Linux и OS X в качестве цифровых музыкальных инструментов для экспериментальных целей.
Я хочу знать, каковы возможные методы отправки массива числовых данных (которые описывают некоторую длину аудио) на аудиовыход 3,5 мм. (Так что, конечно, можно играть с некоторыми динамиками).
Мои требования заключаются в том, что это можно сделать с помощью C++, поскольку мне нужно генерировать звуковые образцы в режиме реального времени. (Возможно, Python не собирается его сокращать.) В идеале я хотел бы сделать эту кросс-платформу, но я не очень заинтересован в том, чтобы делать это в одном окне.
Идея состоит в том, чтобы сделать что-то вроде:
1: Установите выходной режим на 44100 кГц, 24-битный моно (L & R). 2: Генерировать массив из 44100 подписанных 24-битных целых чисел. 3: Скажите компьютеру воспроизвести XYZ секунды/образцы данных, которые находятся в массиве, начиная с номера образца XYZ.
Легко сделать это на чем-то вроде Arduino. (Который также может быть запрограммирован в C++). Для тех, кто знаком, вы можете либо использовать цифровые выходы напрямую, либо для чего-то более сложного, построить простую доску, которая правильно модифицирует ваш сигнал так, чтобы она была синусоидальной с обоими положительное и отрицательное колебание напряжения. (Вместо того, чтобы просто положительно).
Я думаю, мне нужно что-то вроде OpenAL, которое, насколько я могу судить, похоже на OpenGL. Кажется, я не могу найти много информации об этом. Кажется, что он больше не развит и не использовался в течение нескольких лет. Я предполагаю, что есть альтернатива?
OpenAL - очень хороший выбор для этого. И это намного легче узнать, чем OpenGL. Вырезание и вставка.
Возможно, он не изменился недавно, но все еще широко используется. Я лично использую его на iOS/OS X. Вам следует дважды проверить свой выбор на Linux.
Я не знаю, может ли он воспроизводить 24-битный PCM. Но он, безусловно, может принять 16-битный PCM на 44100, если базовый звуковой чип поддерживает это.
Вот один учебник, который может вам помочь: