2017-02-14 23 views
8

पर TAAE2 माइग्रेट करना मेरे पास The Amazing Audio Engine 2 के साथ निर्मित एक बड़ी परियोजना है। मैंने इंटर-ऐप-ऑडियो एकीकृत करने के लिए संघर्ष किया है और ऑडियोकिट 3 पर माइग्रेट करना चाहता हूं।ऑडियोकिट 3

स्ट्रगल, जिसका अर्थ है, यह एकीकृत करता है, लेकिन जैसे ही मैं इसे जनरेटर के रूप में चुनता हूं, प्रतिपादन बस बंद हो जाता है, इंजन चालू है एक अक्षम राज्य

ऑडियो सिस्टम के साथ मुख्य अंतर क्या हैं? टीएएई 2 मॉड्यूल का उपयोग करता है, प्रत्येक रेंडर ब्लॉक के साथ, जो रेंडर स्टैक से ऑडियो बफर को धक्का देता है और पॉप करता है।

ऑडियोकिट ऑडियो कैसे प्रस्तुत करता है? ऑडोकिट ऑब्जेक्ट्स में एमोड्यूल माइग्रेट करने में, उच्च स्तर पर, क्या शामिल होगा?

उत्तर

3

ऑडियो प्रतिपादन के लिए, यह अनिवार्य रूप से चारों ओर AVAudioEngine, AUAudioUnit, AVAudioUnit, और AVAudioNode एक आवरण है। यह एक ढेर की बजाय रेंडर श्रृंखला के रूप में अवधारणाबद्ध है, लेकिन अंतिम परिणाम वही है। आप सिस्टम ऑडियो इकाइयों का उपयोग कर सकते हैं, या आप AUAudioUnit सबक्लास बनाकर अपना पंजीकरण कर सकते हैं।

रेंडर श्रृंखला एक ही तरीके से काम करती है, लेकिन ब्लॉक आधारित एपीआई के साथ। AEAudioUnitModule subclassing के बजाय और प्रक्रिया को सेट करना एक सी फ़ंक्शन में फ़ंक्शन जहां आप अपने रेंडरर से बफर सूचियां और टाइमस्टैम्प खींचते हैं, आप AUAudioUnit को उपclass और internalRenderBlock लागू करते हैं जहां आप अपने ब्लॉक पर तर्क के रूप में बफर और टाइमस्टैम्प के साथ बुलाए जाने वाले ब्लॉक को वापस करते हैं। यह ब्लॉक वह जगह है जहां आप अपने अधिकांश पोर्टिंग कर सकते हैं।

+0

धन्यवाद डेव, तो यह टीएएई 1 के समान लगता है। चेन सेटअप का क्रम कैसा है? जैसे कई ओसीलेटर के साथ पॉलीफोनिक आवाज, एलएफओ और लिफाफा जेनरेटर द्वारा मॉड्यूल किया जा रहा है, टीएएई 2 विशेष रूप से मॉड्यूल पर प्रक्रिया को कॉल करने की अनुमति देता है, यह ऑडियोकिट के साथ कैसे किया जाता है? – jarryd

+1

यदि मैं आपके प्रश्न को सही तरीके से समझता हूं, तो सबसे बड़ा अंतर यह है कि एक प्रक्रिया को कॉल करने में सक्षम होने के बजाय _on_ एक मॉड्यूल आपको उस प्रक्रिया को नोड के रूप में जोड़ना होगा जिसे ऑडियो _through_ पास करेगा। इसलिए यदि आप केवल अपने कुछ ऑसीलेटर पर प्रक्रिया करना चाहते हैं, तो आपको अपने लिफाफा फ़िल्टर के माध्यम से कुछ ऑसीलेटर के आउटपुट को "रूट" करना होगा। AVAudioEngine परिवार प्रकार एक बफर मैनिपुलेशन मॉडल की बजाय एक भौतिक मॉडल (जनरेटर -> पैच केबल -> प्रभाव) का पालन करता है। – dave234

+0

मैं यह समझने की कोशिश कर रहा हूं कि AVAudioEngine का डिज़ाइन पॉलीफोनिक आवाजों का समर्थन कैसे कर सकता है। आइए कहें कि हमारे पास 1 आवाज है, जिसमें 1 ऑसीलेटर है, जिसमें 1 एलएफओ और 1 लिफाफा है, टीएएईई 2 में मुख्य रेंडर फ़ंक्शन आवाज पर रेंडर कर सकता है, जिसे तब ऑसीलेटर.रेंडर, lfo.render, envelope.render कहते हैं। नोड कनेक्शन के साथ AVAudioEngine में यह सेटअप कैसा है? क्या यह ऑडियोइंजिन.कनेक्ट होगा (वॉयस 1, टू: ऑडियोइंजिन.माइन मिक्सर नोड, प्रारूप: ऑडियोफॉर्मैट) और फिर वॉइस ऑब्जेक्ट में ऑडियोइंजिन.कनेक्ट (ऑसीलेटर, टू: सेल्फ, फॉर्मेट: ऑडियोफॉर्मैट), ऑडियोइंजिन.कनेक्ट (एलएफओ, टू: ऑसीलेटर। इत्यादि। – jarryd

3

मुझे बिल्कुल यकीन नहीं है कि यह सही जवाब नहीं है। लेकिन क्या यह हमारे डॉक्टर में इस चर्चा के समान हो सकता है?

migrating to AudioKit

+0

की तरह, मैं टीएएई 2 से माइग्रेट करते समय आर्किटेक्चर में रूचि रखता हूं, ऑडियोकिट में कॉलबैक और स्टैक सिस्टम प्रस्तुत करता हूं। मैं जानना चाहता हूं कि ऑडियोकिट में इंजन का प्रसंस्करण डिज़ाइन कैसे काम करता है। प्लेबैक के लिए बफर कैसे पारित किए जा सकते हैं और यह कई मॉड्यूल का उपयोग करके सिस्टम के साथ कैसे काम करता है, सभी आवश्यक ऑडियो बफर संसाधित और जंजीर किए जाने के लिए। – jarryd

संबंधित मुद्दे