ACM कनवोल्यूशन
ACM कनवोल्यूशन FMOD के बँटे हुए रिवर्ब को CPU पर चलाता है। साझा-इनपुट बैच एक सूखे सिग्नल को बदलते हैं, फ़्लोट या हाफ़-फ़्लोट इम्पल्स भाग लागू करते हैं, और गीले नतीजे को ओवरलैप-ऐड करते हैं।
10 अक्टूबर 2026 तक के रिपॉज़िटरी नोट्स
जो बग इसने बंद किया
Subnautica: Below Zero चटक के साथ शुरू होकर मौन हो सकता था और मिनटों बाद ठीक होता था। होस्ट डिवाइस तक पहुँचने वाले PCM में असीमित फ़्लोट थे। FMOD के DSP कॉलबैक के मेमोरी-भीतर ट्रेस ने दिखाया कि सीमित ऑडियो कनवोल्यूशन रिवर्ब में जाता है और कचरा बाहर आता है। HLE फ़ंक्शन sceAcm_ConvReverb_SharedInput, बैच सबमिट और sceAcmBatchWait कोई आउटपुट लिखे बिना सफलता लौटा रहे थे।
फिर FMOD उस बिना लिखे गीले बफ़र को ग्राफ़ में मिलाता था। NaN बाद के इफ़ेक्ट में फैल जाते थे। AudioOut की सफ़ाई उन्हें मौन से बदल देती थी और विषाक्त फ़िल्टर इतिहास ठीक नहीं कर पाती थी। दूसरी ग़लती ने शुरुआती बैच पहचानकर्ता -1 पर प्रतीक्षा को सफल बना दिया था। FMOD विफल शुरुआती प्रतीक्षा को 'अभी कोई पिछला गीला बफ़र नहीं है' मानता है और केवल असली पूरे काम के बाद मिलाता है।
बँटा हुआ कनवोल्यूशन
डिस्क्रिप्टर लेआउट FMOD के ACM बैकएंड में देखे गए से मेल खाता है। इम्पल्स-रिस्पॉन्स भाग इंटरलीव्ड जटिल बिन हैं। B बिन का ब्लॉक 2B लंबाई के रूपांतरण का है। इनपुट, आउटपुट और ओवरलैप बफ़र अलग और प्लेनर हैं। केवल देखे गए शून्य-ऑफ़सेट float32 और float16 स्पेक्ट्रम लेआउट स्वीकार होते हैं।
बैच CPU पर चलता है। इनपुट इतिहास ग्रेन के पार और रिंग के घूमने पर भी बना रहता है, और ओवरलैप अगले आउटपुट ग्रेन में ले जाया जाता है। कई आउटपुट एक इनपुट रूपांतरण और एक इतिहास प्रगति साझा कर सकते हैं। मोनो इनपुट एक से ज़्यादा चैनल भर सकता है। व्युत्क्रम रूपांतरण नॉर्मलाइज़ होता है। एक असली इम्पल्स भाग के स्वतंत्र व्युत्क्रम ने अपनी ऊर्जा शून्य-भरे ब्लॉक के पहले आधे में रखी, जो स्पेक्ट्रम के चिह्न की पुष्टि करता है। गेम द्वारा इस्तेमाल पैक्ड इम्पल्स नाइक्विस्ट बिन छोड़ देता है।
प्रतीक्षाएँ, सीमाएँ और पुनःपरीक्षण
बिल्डर पॉइंटर ऐरे और गेन को एक सीमित कमांड रिकॉर्ड में लेते हैं। PCM ख़ुद बैच शुरू होने पर पढ़ा जाता है। प्रतीक्षा केवल उसी बैच के लिए सफल होती है जिसे इस कॉन्टेक्स्ट ने सच में पूरा किया। कॉन्टेक्स्ट नष्ट करने से इतिहास मुक्त होता है। अमान्य सीमाएँ, अज्ञात कमांड एनकोडिंग और असमर्थित लेआउट त्रुटि लौटाते हैं।
स्वतंत्र ACM FFT, IFFT और पैनर ऑपरेशन लागू नहीं हैं। चैनल की सीमा 8, आउटपुट की 32 और ब्लॉक की 1024 है। इतिहास स्टोरेज सीमित है। साइन किए रनर पर हर सेकंड लिए 90 PCM स्नैपशॉट में कोई असीमित सैंपल नहीं था, शिखर 0.1255 था और 0.001 से ऊपर का पहला ऑडियो 11.03 सेकंड पर आया। मेंटेनर ने आवाज़ की पुष्टि की। सैंपल एक प्रोब हैं, गेम द्वारा निकाला हर सैंपल नहीं।
क्या लागू है
- FMOD के साझा-इनपुट और साझा-IR रिवर्ब बैच के लिए बँटा हुआ FFT कनवोल्यूशन।
- Float32 और float16 जटिल स्पेक्ट्रम, ओवरलैप-ऐड और ग्रेन के पार इतिहास।
- केवल उस कॉन्टेक्स्ट के पूरे बैच के लिए सफल प्रतीक्षाएँ। शुरुआती -1 पहचानकर्ता विफल होता है।
- Subnautica पुनःपरीक्षण में सीमित PCM, चटक और बाद की चुप्पी ख़त्म।
क्या अब भी बाक़ी है
- स्वतंत्र ACM FFT, IFFT और पैनर कॉल लागू नहीं हैं।
- शून्य से अलग स्पेक्ट्रम ऑफ़सेट और न मापे गए रूटिंग लेआउट अस्वीकार होते हैं।
- कनवोल्यूशन CPU पर चलता है। कोई GPU FFT पथ नहीं है।
संबंधित तंत्र
ये पेज क्या हैं