2010-07-24 14 views
7

जब ऑडियो इकाइयों का उपयोग कर अलग अलग तरीकों से iPhone, पर ऑडियो के प्लेबैक गति बदलने के लिए क्या हैं? प्रत्येक समाधान के फायदे/नुकसान क्या हैं?iPhone: ऑडियो इकाइयों के साथ प्लेबैक गति बदलें

मेरे पास एक मिक्सर इकाई और आईओ इकाई है। क्या मुझे एक और इकाई (उदाहरण कनवर्टर इकाई) जोड़ने की ज़रूरत है? मुझे कौन से ऑडियो यूनिट पैरामीटर सेट करना चाहिए, जिस पर ऑडियो इनपुट (ओं) पर (इनपुट या आउटपुट) बस है?

मेरे मौजूदा सेटअप:

 -------------------------    ------------------------- 
     |  mixer unit  | -----------> |  IO unit  | 
     -------------------------    ------------------------- 

उत्तर

8

नीचे समाधान के सभी को बदल देगा आपके ऑडियो के पिच (प्लेबैक गति के साथ)। प्लेबैक गति बदलने के बाद आपके ऑडियो के पिच को सही करने के लिए आपको तृतीय पक्ष ऑडियो लाइब्रेरी (जैसे SoundTouch, जिसमें एक एलजीपीएल लाइसेंस है, का उपयोग करने की आवश्यकता होगी, ताकि आप इसे अपने ऐप में इस्तेमाल कर सकें इसे ओपन-सोर्स, या DiracLE या मुफ्त smbPitchShift) बनाते हैं। एक ऑडियो यूनिट (AUPitch) है, जो आपके ऑडियो की पिच बदल सकती है, लेकिन यह आईफोन के लिए उपलब्ध नहीं है; केवल मैक के लिए।

नीचे समाधान के सभी परीक्षण कर रहे हैं, और काम ...

समाधान # 1[बेस्ट समाधान]

3D मिक्सर इकाई: एक मल्टीचैनल के बजाय मिक्सर इकाई एक 3 डी मिक्सर इकाई का उपयोग करें और इनपुट स्कोप पर k3DMixerParam_PlaybackRate सेट करें।

लाभ: k3DMixerParam_PlaybackRate वास्तविक समय सेट किया जा सकता है, जबकि आप ऑडियो बज रहे हैं, बिना किसी क्लिपिंग ध्वनियों या अन्य दुष्प्रभावों के। ऑडियो इकाइयों के जाने के बाद इसे लागू करना भी आसान है।

नुकसान: आपके ऑडियो की पिच को प्रभावित करता है, लेकिन पिच में अंतर वास्तव में ध्यान देने योग्य नहीं है यदि आपको केवल प्लेबैक दर +/- 8% में बदलने की आवश्यकता है।

समाधान # 2

बदलने नमूना दर: मिक्सर इकाई के उत्पादन में बस में नमूना दर परिवर्तित करें। नमूना दर बदलना नमूने जोड़ने और हटाने के लिए बहुत समान काम करता है।

लाभ: यदि आप प्लेबैक गति को एक पूर्णांक के अंश (उदाहरण के लिए 1.2x) से गुणा करना चाहते हैं तो अच्छी तरह से काम करता है।

नुकसान: मिक्सर आउटपुट की नमूना दर बदलना मक्खी पर सेट नहीं किया जा सकता है; केवल मिक्सर इकाई शुरू करते समय। आपके ऑडियो की पिच को प्रभावित करता है, लेकिन पिच में अंतर वास्तव में ध्यान देने योग्य नहीं है यदि आपको केवल प्लेबैक दर को +/- 8% में बदलने की आवश्यकता है।

audioDescriptionMixerOutput.mSampleRate = 1.2*kGraphSampleRate; 

समाधान # 3

जोड़ें/निकालें नमूने: केवल अपनी ऑडियो इकाई (मिक्सर इकाई के इनपुट के लिए हर दूसरा, तीसरा, ... ऑडियो नमूना पारित मेरा मामला) आपके रेंडर कॉलबैक फ़ंक्शन में।

लाभ: यदि आप 2x, 3x, 4x, आदि द्वारा अपने ऑडियो प्लेबैक को तेज़ या धीमा करना चाहते हैं तो यह अच्छी तरह से काम करता है। इसे कार्यान्वित करना भी आसान है।

नुकसान: आप केवल प्लेबैक गति को एक पूर्णांक कारक से गुणा कर सकते हैं। उदाहरण के लिए 1.2x द्वारा ऑडियो प्लेबैक को तेज़ करना नमूना जोड़कर या हटाकर संभव नहीं है। आपके ऑडियो की पिच को प्रभावित करता है।

+0

अरे क्या मुझे इसके लिए कोई उदाहरण कोड मिल सकता है? – Tornado

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