2011-07-14 26 views
0

由於目前沒有通用的方法來從JavaScript中的音軌中讀取實時數據,我正在使用一個小的library/API來從離線轉換的文本文件中讀取音量數據。Unicode中數字93的意義是什麼?

的字符串看起來像

!!!!!!!!!!!!!!!!!!!!!!!!!!###"~{~||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是什麼意思?

按位|的用途是什麼?

這是一種移植信息的常用手段(即它是否有名稱),還是有更好的方法來做到這一點?

回答

1

3393用於歸一化!~之間的值。

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 

|0是由於sampleIndex*2sampleIndex*2+1傳遞非整數時產生非整數值的事實sampleIndex|0截去小數部分以防萬一有人發送格式不正確的sampleIndex(即非整數)。

0

用零進行按位或運算將會將LHS上的數字截斷爲整數。不知道你的問題的其餘部分,對不起。

93和33是字符「]」和「!」的ASCII代碼(而不是unicode)分別。希望有點幫助。

2

看起來該文件中字符的範圍是從!~!有33 ASCII碼和~有126 126-33 = 93

相關問題