Создание простых форм сигнала с CoreAudio

Я плохо знаком с CoreAudio, и я хотел бы произвести простую гармоническую волну и прямоугольную волну с данной частотой и амплитудой через динамики, использующие Приблизительно. Я не хочу использовать звуковые файлы, как я хочу синтезировать звук.

Что я должен сделать это? И можно ли дать мне пример или учебное руководство?Спасибо.

10
задан 10 June 2010 в 21:01
поделиться

1 ответ

Вы новичок в программировании аудио в целом? В качестве отправной точки я бы посмотрел

http://www.audiosynth.com/sinewavedemo.html

Это минимальная реализация sinewave на osx от легендарного James Harkins. Обратите внимание, он вообще не использует CoreAudio.

Если вы хотите использовать CoreAudio для вашей синусоиды, вам нужно создать выходной блок (RemoteIO на iphone, AUHAL на osx) и обеспечить обратный вызов входного сигнала, где вы можете использовать код из примера выше. Посмотрите

http://developer.apple.com/mac/library/technotes/tn2002/tn2091.html

Преимущества CoreAudio заключаются в следующем: цепочка других эффектов с вашей синусоидой, написание плагинов для хостов типа Logic & предоставление интерфейсов для них, написание хоста (типа Logic) для плагинов, которые могут быть соединены вместе.

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

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

Вот некоторая помощь по настройке графов http://timbolstad.com/2010/03/16/core-audio-getting-started-pt2/

Это не так сложно, как кажется. Apple предоставляет вспомогательные классы C++ для многих вещей (/Developer/Examples/CoreAudio/PublicUtility), и даже если вы не хотите использовать C++ (а вы и не обязаны!), они могут стать полезным руководством по CoreAudio API.

1
ответ дан 3 December 2019 в 20:02
поделиться