Каков простой способ вывода домашнего синтезированного звука в Unix?
-
22-09-2019 - |
Вопрос
Я хочу выполнить синтез звука в Mac OS X (и, в идеале, в других Unix-подобных ОС), используя ANSI C.
Это сделано в целях обучения, а не «Мне нужно решение, любое решение, быстро!»
Скажем, в моей программе на C есть 8-битный буфер, который я обновляю 22050 раз в секунду.Как я могу заставить мои динамики выводить это в виде сигнала?
Решение
Не существует аудио API POSIX или чего-то подобного.Так что, если вам нужна поддержка звука в Linux, OSX и т. д.вам нужна библиотека, которая охватывает собственные звуковые API различных ОС.Взгляните на это ТАК вопрос.Он не запрашивает OSX напрямую, но большинство ответов также должны работать и для него, за исключением, возможно, libao.По крайней мере, я не нашел на их домашней странице ничего, что говорило бы о том, что они поддерживают OSX.
Другие советы
SDL может воспроизводить звуковые буферы.Но PortAudio может работать лучше. PA вызовет ваш обратный вызов C, когда ему потребуется больше данных, и тогда вы сможете передать ему следующий буфер.На самом деле это довольно легко.