2009-06-30 14 views
5

में .wav का औसत आयाम क्या किसी को सी # का उपयोग करके .wav फ़ाइल का औसत आयाम प्राप्त करने का कोई तरीका पता है (भले ही इसका मतलब है बाहरी आउट लाइन लाइन प्रोग्राम को कॉल करना और आउटपुट को पार्स करना)? धन्यवाद!सी #

+0

कि .wav, मोनो यह है कि अगर स्थिति किसी भी आसान/अलग बनाता है उल्लेख करने के लिए भूल (मोनो और एक चलती औसत की गणना करने के लिए परिवर्तित) है। – BarrettJ

उत्तर

3

यहां एक स्निप है जो स्टीरियो वाव में पढ़ता है और डेटा को दो सरणी में रखता है। यह अपरीक्षित क्योंकि मैं कुछ कोड को दूर करने के लिए किया था

/// <summary> 
    /// Read in wav file and put into Left and right array 
    /// </summary> 
    /// <param name="fileName"></param> 
    private void ReadWavfiles(string fileName) 
    { 
     byte[] fa = File.ReadAllBytes(fileName); 

     int startByte = 0; 

     // look for data header 
     { 
      var x = 0; 
      while (x < fa.Length) 
      { 
       if (fa[x]  == 'd' && fa[x + 1] == 'a' && 
        fa[x + 2] == 't' && fa[x + 3] == 'a') 
       { 
        startByte = x + 8; 
        break; 
       } 
       x++; 
      } 
     } 

     // Split out channels from sample 
     var sLeft = new short[fa.Length/4]; 
     var sRight = new short[fa.Length/4]; 

     { 
      var x = 0; 
      var length = fa.Length; 
      for (int s = startByte; s < length; s = s + 4) 
      { 
       sLeft[x] = (short)(fa[s + 1] * 0x100 + fa[s]); 
       sRight[x] = (short)(fa[s + 3] * 0x100 + fa[s + 2]); 
       x++; 
      } 
     } 

     // do somthing with the wav data in sLeft and sRight 
    } 
+0

यदि Wav फ़ाइल मोनो है, तो क्या मैं केवल sRight [x] = (लघु) (fa [s + 3] * 0x100 + fa [s + 2]) पर टिप्पणी करने में सक्षम हूं; लाइन और एस = एस + 4 से एस = एस +2 बदलें? मैं WAV प्रारूप से बहुत परिचित नहीं हूं। धन्यवाद! – BarrettJ

+0

मुझे या तो नहीं, लेकिन मुझे लगता है कि आप सिर्फ sright छोड़ सकते हैं। – Nifle

+2

मैंने ऊपर सूचीबद्ध परिवर्तनों को और एसएलईएफटी को "var sLeft = new short [fa.Length/2]" के रूप में घोषित किया है; वास्तव में मोनो फाइलों के लिए काम करता है। – BarrettJ

1

आम तौर पर root-mean-squared विधि का उपयोग पाप (x)-जैसे सिग्नल के "माध्य" आयाम की गणना करने के लिए किया जाता है।

+0

मुझे लगता है कि ओपी समस्या के व्यावहारिक पहलू के संबंध में और पूछ रहा है। हालांकि वास्तव में, वह आरएमएस मूल्य की गणना करना चाहता है। – Noldorin

+0

इस जानकारी के लिए धन्यवाद क्योंकि मुझे इस बारे में पता नहीं था और इससे वास्तव में बहुत मदद मिली। – BarrettJ

3

NAudio .NET के लिए लाइब्रेरी आपकी सर्वश्रेष्ठ शर्त की तरह लगता है। यह एक ऑडियो फ़ाइल के तरंगों तक पहुंच की इजाजत देता है, जो औसत ampltiude के मूल्य की गणना करने के लिए लूप कर सकते हैं।