Вопрос

Я порылся в сети, но ничего интересного не нашел.Возможно, я делаю что-то не так.

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

Это было полезно?

Решение

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

ссылка1 ссылка2

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

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

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

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

р

Другие советы

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

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

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

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

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

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

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

http://nsound.sourceforge.net

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top