Звуковая Синтез Framework в C / C ++ / Objective-C? - PullRequest
7 голосов
/ 10 августа 2009

Я искал в сети, но не нашел ничего интересного. Может я что то не так делаю.

Я ищу API синтеза звука, написанный на C, C ++ или даже Objective-C, который может синтезировать различные типы волн, эффекты необязательны.

Ответы [ 6 ]

9 голосов
/ 10 августа 2009

Вот полная библиотека / инструментарий для синтеза FM (частотной модуляции):

link1 link2

Если у вас есть время, чтобы сэкономить ... создание простого синтеза звука с нуля - это действительно увлекательное занятие. Если вы создаете небольшой буфер из 256 16-битных выборок, которые представляют либо синус. Пилообразный блок, блок или импульс, вы можете скопировать их в живой аудиобуфер (например, небольшой буфер (скажем, 16 КБ)), который постоянно зацикливается. Оставаясь впереди игровой позиции и постоянно заполняя буфер новыми значениями, вы можете создать выход звука. Вы можете использовать небольшие буферы, чтобы объединить их интересными способами (проще всего просто сложить их вместе (аддитивный синтез)).

Частотой тона можно манипулировать, используя больший или меньший шаг выборки через маленькие буферы. Амплитуда может изменяться путем масштабирования сэмплов перед их помещением в выходной буфер.

Очень весело экспериментировать с этим!

Если у вас есть этот шаг, вы можете добавить более сложные эффекты, такие как фильтры (низкие частоты, высокие частоты и т. Д.) И эффекты (реверберации, эхо и т. Д.)

R

4 голосов
/ 02 февраля 2012

PortAudio также является отличным C API, который мы использовали в прошлом семестре в курсе аудио программирования. Он обеспечивает аудио обратный вызов ... что еще может понадобиться !?

Я еще не пытался включить это в Objective-C, но сообщу, когда это сделаю.

4 голосов
/ 03 октября 2011

Вы смотрели на инструментарий синтеза ( STK )? Он написан на C ++ (я не думаю, что ObjC является подходящим языком для синтеза звука, на самом деле аудиоустройства, собственный способ Apple делать аудио, включая генераторы / фильтры / эффекты ... на C ++).

STK будет работать на Mac OS X и iOS без проблем (CoreAudio поддерживается), но также будет работать на Linux и Windows (Direct sound и ASIO), используя RtAudio. Это действительно красиво сделано и легко, эти парни потратили много времени на размышления об этом, и это определенно даст вам хороший старт. Он может обрабатывать множество различных форматов аудиофайлов + MIDI (и, надеюсь, OSC скоро ...).

Существует также Create и CLAM, которые огромны, они включают в себя компоненты GUI и многие другие вещи, которые вы можете или не хотите. Если вы заинтересованы только в синтезе звука, я действительно рекомендую STK.

2 голосов
/ 29 августа 2011

Написание алгоритмов синтеза звука на C / obj-C, на мой взгляд, довольно сложно. Я бы порекомендовал написать свои алгоритмы обработки сигналов, используя PureData , а затем использовать ZenGarden или libpd для встраивания и интерпретации патчей pd в вашем приложении.

1 голос
/ 30 марта 2012

Другая библиотека C ++ - nsound:

http://nsound.sourceforge.net

Можно генерировать любой вид модулированного сигнала, используя класс Generator или предоставленный класс Sine. Каждый временной шаг может иметь свою собственную мгновенную частоту и сдвиг фазы.

Вы также можете поэкспериментировать с модулем Python, чтобы быстро создать прототип вашего алгоритма, а затем реализовать его на C ++. Он может создавать симпатичные сюжеты matplotlib из Python и даже из C ++!

0 голосов
/ 10 августа 2009

Вы смотрели на CSound ? Это невероятно гибкая платформа для генерации звука, которая может обрабатывать все, от простого генерирования сигналов до синтеза FM и всевозможных фильтров. Он также обеспечивает поддержку MIDI, и вы можете расширить его, написав собственные коды операций. Существует также полный C API и несколько C ++ API.

...