2011-07-14 12 views
0

現在のところJavaScriptのオーディオトラックからライブデータを読み込む普遍的な方法はないので、小さなlibrary/APIを使用して、MP3からオフラインに変換したテキストファイルからボリュームデータを読み込んでいます。数字93の意味はUnicodeとは何ですか?

文字列は、この

!!!!!!!!!!!!!!!!!!!!!!!!!!###"~{~||ysvgfiw`gXg}i}|mbnTaac[Wb~v|xqsfSeYiV`R 
][\Z^RdZ\XX`Ihb\O`3Z1W*I'D'H&J&J'O&M&O%O&I&M&S&R&R%U&W&T&V&m%\%n%[%Y%I&O'P'G 
'L(V'X&I'F(O&a&h'[&W'P&C'](I&R&Y'\)\'Y'G(O'X'b'f&N&S&U'N&P&J'N)O'R)K'T(f|`|d 
//etc... 

のように見えるとアイデアが歌である時点で、テキストファイル内の対応する点にある文字のUnicodeの数が公称をもたらすことは基本的です値はボリュームを表します。

ライブラリは(ここでは単純化)以下で(この場合、ステレオトラックに)データを変換します。

getVolume = function(sampleIndex,o) { 
    o.left = Math.min(1,(this.data.charCodeAt(sampleIndex*2|0)-33)/93); 
    o.right = Math.min(1,(this.data.charCodeAt(sampleIndex*2+1|0)-33)/93); 
    } 

私は、ファイルがでエンコードされた方法をいくつかの洞察を希望最初の場所、そして私がここでそれをどのように利用しているかを示します。

9333の重要性は何ですか?

bitwise |の目的は何ですか?

これは情報を移植する一般的な方法ですか(名前が付いていますか)、それを行うには良い方法がありますか?

答えて

1

33および93は、!および~の値を正規化するために使用されます。

enter image description here

var data = '!'; 
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 0 

 

var data = '~'; 
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 1 

 

var data = '"'; 
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 0.010752688172043012 

 

var data = '#'; 
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 0.021505376344086023 

// ... and so on 

sampleIndex*2またはsampleIndex*2+1は、非整数sampleIndexが渡されたときに非整数値が返されるため、|0が存在します。 |0は、誰かが間違って書式設定したsampleIndex(つまり非整数)を送信した場合にのみ小数部分を切り捨てます。

0

0をビット単位でORすると、LHSの数値が整数に切り捨てられます。あなたの質問の残りについては確かに、申し訳ありません。

93および33は、文字「]」および「!」のASCIIコード(ユニコードではありません)です。それぞれ、それはちょっと役立つことを願っています。

2

このファイルの文字の範囲は、!から~までです。すべてのための

http://www.asciitable.com/

ASCIIIコードを:!は33と~のASCIIコードは、これは永遠にあなたを助ける126 126から33 = 93

0

のASCIIコードを持っています。

お楽しみください!

関連する問題