सिर्फ चर्चा के लिए, मैं JUCE से AudioSampleBuffer नामक एक क्लास लाऊंगा । अब यह वर्ग ऑडियो के स्निपेट (या शायद लंबे समय तक स्निपेट) रखने के लिए मौजूद है। यह चैनलों की संख्या, नमूनों की संख्या (प्रति चैनल) जानता है, ऐसा लगता है कि 32-बिट IEEE फ़्लोट करने के बजाय एक वैरिएबल संख्यात्मक प्रतिनिधित्व या शब्दबद्ध होने के लिए प्रतिबद्ध है (लेकिन यह मेरे साथ कोई समस्या नहीं है)। ऐसे सदस्य कार्य हैं जो आपको किसी विशेष चैनल के अंक या अंक और अंक प्राप्त करने की अनुमति देते हैं। आप एक AudioSampleBuffer को लंबा या छोटा कर सकते हैं। मैं पूर्व के शून्य-पैड को बफर मान लेता हूं जबकि बाद वाला ट्रंकसेट करता है।
इस वर्ग के कुछ निजी सदस्य हैं जो JUCE द्वारा उपयोग किए जाने वाले विशेष ढेर में जगह आवंटित करने के लिए उपयोग किए जाते हैं।
लेकिन यह वही है जो AudioSampleBuffer गायब है (और मैंने इसके बारे में जूल्स से कई चर्चाएं की हैं): एक सदस्य SampleRate
। यह कैसे याद किया जा सकता है?
एक ऑडियोसम्प्लबफ़र को पूरा करने के लिए एकल जिम्मेदारी को उस भौतिक ऑडियो का पर्याप्त रूप से प्रतिनिधित्व करना है जो एक सुनता है कि उसके नमूने प्रतिनिधित्व करते हैं। जब आप किसी साउंडफाइल या किसी स्ट्रीम से पढ़ते हुए किसी AudioSampleBuffer को इनपुट करते हैं, तो एक अतिरिक्त पैरामीटर होता है जिसे आपको प्राप्त करना होगा और इसे AudioSampleBuffer के साथ प्रसंस्करण विधियों (इसे एक फ़िल्टर है) के साथ पास करना होगा, जिसे नमूना दर जानने की आवश्यकता है या, अंत में, एक विधि है कि करने के लिए खेलता है बफर बाहर सुना जा (या कोई अन्य किसी ऐसे स्थान के लिए यह धाराओं)। जो कुछ।
लेकिन आपको जो करना है, वह इस नमूनाट्रेड को पारित करना जारी रखता है, जो कि ऑडियोस्प्लायफर बफ़र में रहने वाले विशिष्ट ऑडियो में निहित है, हर जगह। मैंने कोड देखा है जहां एक समारोह में एक निरंतर 44100.0f पास किया गया था, क्योंकि प्रोग्रामर को यह नहीं पता था कि क्या करना है।
यह अपनी एकल जिम्मेदारी को पूरा करने में विफल रहने का एक उदाहरण है।