2017-02-14 26 views
8

Mam duży projekt zbudowany z The Amazing Audio Engine 2. Starałem się zintegrować Inter-App-Audio i chciałbym przenieść się do AudioKit 3.migracja TAAE2 do AudioKit 3

Zmagam się, to oznacza, że ​​się integruje, ale jak tylko wybiorę go jako generator, renderowanie się zatrzymuje, silnik jest włączony państwo niepełnosprawne.

Jakie są główne różnice w systemach audio? TAAE2 używa modułów, każdy z blokiem renderowania, który przesuwa i wydziela bufory audio ze stosu renderowania.

W jaki sposób AudioKit renderuje dźwięk? Co byłby zaangażowany na wysokim poziomie w migrację AEModułów do obiektów Audiokit?

Odpowiedz

3

Do renderowania dźwięku, to zasadniczo owinięcie wokół AVAudioEngine, AUAudioUnit, AVAudioUnit i AVAudioNode. Jest konceptualizowany jako łańcuch renderowania, a nie stos, ale wynik końcowy jest taki sam. Możesz użyć systemowych jednostek audio lub możesz zarejestrować własne, tworząc podklasę AUAudioUnit.

Łańcuch renderowania działa w podobny sposób, ale z interfejsem API opartym na blokach. Zamiast podklasy AEAudioUnitModule i ustawiania funkcji processFunction na C, w której przeciągasz listy buforów i znaczniki czasu z renderera, podklasę AUAudioUnit i implementuj internalRenderBlock, gdzie zwracasz blok, który jest wywoływany z buforami i znacznikami czasowymi jako argumenty twojego bloku. W tym bloku możesz wykonać większość przenoszenia.

+0

Dzięki Dave, brzmi to podobnie do TAAE1. Jaka jest kolejność konfiguracji łańcucha? Na przykład. głosy polifoniczne z wieloma oscylatorami, modulowane przez LFO i generatory obwiedni, TAAE2 pozwala na specyficzne wywoływanie procesu na module, jak to robi się z AudioKit? – jarryd

+1

Jeśli dobrze rozumiem twoje pytanie, największą różnicą jest to, że zamiast wywoływać proces _on_ w module, musisz dodać ten proces jako węzeł, przez który audio przechodzi przez _. Więc jeśli chcesz przetwarzać tylko niektóre z twoich oscylatorów, będziesz musiał "skierować" wyjście niektórych oscylatorów przez filtry kopert. Rodzina AVAudioEngine podąża za modelem fizycznym (generator -> kabel połączeniowy -> efekt) zamiast modelu manipulacji buforami. – dave234

+0

Próbuję zrozumieć, w jaki sposób projekt AVAudioEngine może wspierać głosy polifoniczne. Powiedzmy, że mamy 1 głos, z 1 oscylatorem, który ma 1 LFO i 1 Koperta, W TAAE2 główna funkcja renderowania może wywoływać render na głosie, który następnie wywołuje oscillator.render, lfo.render, envelope.render. W jaki sposób jest to ustawienie w AVAudioEngine z połączeniami węzłów? Czy byłoby to audioEngine.connect (voice1, to: audioEngine.mainMixerNode, format: audioFormat), a następnie w obiekcie głosowym audioEngine.connect (oscylator, do: self, format: audioFormat), audioEngine.connect (lfo, do: oscylatora. itd.? – jarryd

3

Nie jestem do końca pewien, czy to nie jest właściwa odpowiedź. ale czy to może być ta sama dyskusja w naszym dokumencie?

migrating to AudioKit

+0

W pewnym sensie interesuję się architekturą związaną z migracją z systemu zwrotnego wywołania TAAE2 do systemu AudioKit. Chciałbym wiedzieć, jak projekt przetwarzania silnika działa w AudioKit. W jaki sposób można przekazać bufory do odtwarzania i jak to działa z systemem wykorzystującym wiele modułów, wszystkie potrzebne bufory audio do przetworzenia i połączenia. – jarryd