2012-10-18 12 views
5

Buduję syntezator MIDI za pomocą CoreAudio. Obecnie mam następujący wykres audio:Niestandardowy efekt audio w CoreAudio Wykres audio - Renderowanie zwrotne

Sampler -> Reverb -> IO 

muszę dodawać efekt chorus na wykresie, jak również pogłos. Problem polega na tym, że nie ma efektu chóru na iPhonie. Aby obejść ten problem, zamierzam wdrożyć własny efekt chóru. Aby to zrobić, potrzebuję dostępu do strumienia audio.

Pytanie brzmi: jaki jest najlepszy sposób uzyskania dostępu do strumienia audio na środku wykresu audio.

Sampler -> Reverb -> [Custom processing] -> IOUnit 

Czy istnieje sposób mogę zmienić strumienia audio za pomocą coś jak zwrotnego AudioUnitAddRenderNotify? lub czy muszę złamać wykres audio w następujący sposób:

Sampler -> Reverb -> [AudioUnitAddRenderNotify callback] -> buffer -> [RenderCallback] -> IOUnit 

Każda rada byłaby doceniona.

Odpowiedz

2

Najprostszym sposobem jest dodanie wywołania zwrotnego powiadomienia o renderowaniu (AudioUnitAddRenderNotify) do jednostki AU węzła Reverb i przetworzenie dźwięku w wywołaniu kAudioUnitRenderAction_PostRender. Zrobiłem eksperyment i uruchomiłem to tak długo, dopóki wywołanie zwrotne zostało dodane po otwarciu AUGraph i żadne przetwarzanie nie zostało wykonane w wywołaniu prerender.

+0

To zadziałało. Okazuje się, że można modyfikować informacje dźwiękowe w locie za pomocą powiadomienia o renderowaniu. –