怎麼用
- 滑鼠:直接點琴鍵,按住的時候聲音持續,放開就收音。按住滑鼠在琴鍵上拖過去,可以刷出滑音。
- 手機、平板:用手指按,多根手指同時按就是和弦。琴鍵區可左右滑動;寬度約 600 像素以上的手機橫放可以一次看到完整 3 個八度(實測 667 像素寬時每個白鍵約 27 像素寬)。
- 電腦鍵盤:下排 Z S X D C V G B H N J M 是最低八度的 C 到 B;上排 Q 2 W 3 E R 5 T 6 Y 7 U 是高一個八度;再往右 I 9 O 0 P 是再高一個八度的 C 到 E,[ = ] 是 F、F♯、G。對應的按鍵會標在琴鍵上,按住不放不會重複發聲。
- 延音:按「延音」按鈕切換開關,或在電腦上按住空白鍵。
- 音域:用「低一個八度」「高一個八度」切換,範圍 C1 到 C8。電腦按鍵永遠對應目前畫面最低的 C 往上。
- 標示:琴鍵上可以顯示音名(C4)、唱名(Do Re Mi,固定唱名法,C=Do)或不顯示。黑鍵太窄不放文字,按下去時上方會顯示它的音名與頻率。中央 C 是 C4。
音高:十二平均律,A4=440 Hz
現代鋼琴普遍採用十二平均律:把一個八度(頻率差一倍)平均分成 12 個半音,每升高一個半音,頻率乘以 2 的十二次方根(約 1.059463)。以 A4=440 Hz 為基準,第 m 號 MIDI 音符的頻率是:
f = 440 × 2(m − 69) ⁄ 12 Hz (A4=69,C4=60)
本頁每個琴鍵的頻率都是用這條公式算出來的,我們也用程式把全部琴鍵逐一與公式對照過(見下方「測試」)。A4=440 Hz 是國際標準音高(ISO 16)。
合成音色怎麼做
- 音色(加法合成):每個音由一組泛音疊成,泛音強度大致隨次數遞減,並依「琴槌打在弦長約 1⁄8 處」的想法,讓某些次泛音特別弱,聽起來比單純的方波、鋸齒波更接近鋼琴。每個音用兩條頻率只差 ±2 音分(cent)的聲音疊在一起,模擬鋼琴多條琴弦略微失諧的厚度。
- 音量包絡(ADSR):起音 4 毫秒(避免爆音);按住時音量依指數曲線自然衰減,低音衰減慢(時間常數約 4.5 秒)、高音衰減快(約 0.8 秒),不會像風琴一樣永遠不停;放開琴鍵後約 0.09 秒的時間常數收音(釋音),開著延音時則等到延音結束才收。
- 音色亮度:每個音經過低通濾波,剛敲下去較亮、隨後變柔,濾波範圍依音高調整。
- 音量保護:最後接一個限幅器,多音同時彈時不容易破音。同時發聲數量上限 24 個,超過時最早的音會被收掉。
以上參數是為了「聽起來接近鋼琴」憑經驗調的,沒有拿真實鋼琴錄音做頻譜比對,所以只能說是模擬,不是還原。
測試
用 Chromium 自動化測試驗證過:
- 5 種音域共 185 次琴鍵點按,每一次的音名、顯示頻率與實際送進 Web Audio 的振盪器頻率,都與十二平均律公式(A4=440 Hz)一致,最大相對誤差約 5.6×10⁻⁸(瀏覽器內部以 32 位元浮點數儲存頻率,這是它的精度極限)。
- 電腦鍵盤 32 個按鍵與琴鍵的對應正確;按住鍵不放(keydown 重複事件)不會重複發聲。
- 放開琴鍵後聲音收掉,用完的節點全部釋放(建立的振盪器數=結束的振盪器數)。
這些測試驗的是頻率與程式行為;真實喇叭、耳朵聽起來像不像鋼琴,沒有由機器驗證。
限制
- 音色是合成的,與真實鋼琴有差距;沒有力度感應(每個音一樣大聲),也沒有踏板共鳴、弱音踏板等效果。
- 延遲取決於裝置與音訊輸出,藍牙耳機尤其明顯,我們無法保證數字。
- 手機鎖螢幕或切到背景時,瀏覽器可能暫停聲音。
- 電腦鍵盤同時按多鍵的數量受硬體限制;非 QWERTY 鍵盤的鍵帽標示可能和琴鍵上標的字母不同。
- 一次顯示 37 個鍵,電腦按鍵只涵蓋其中最低的 32 個,更高的幾個鍵要用滑鼠或觸控,或切換音域。
常見問題
這是真的鋼琴聲嗎?
不是。聲音是瀏覽器用程式即時合成的,沒有載入任何鋼琴錄音。做法是加法合成:把許多不同頻率的正弦波疊在一起,配合「起音、衰減、釋放」的音量包絡,再加上隨音高變化的濾波,模擬鋼琴「敲下去亮、然後變柔」的感覺。聽起來是「像鋼琴的合成音色」,跟真實鋼琴或專業取樣音源相比會比較單薄、缺少琴槌與共鳴的細節。如果你需要真實的鋼琴音色,請用專業的音源或電鋼琴。
音準準嗎?是用什麼標準?
用十二平均律,國際標準音 A4=440 Hz。每個音的頻率是 440 × 2^((m − 69) ÷ 12),m 是 MIDI 音符編號(A4=69、中央 C=C4=60),相鄰半音的頻率比是 2 的十二次方根(約 1.0595)。例如 C4 是 261.63 Hz,A3 是 220 Hz。你按下琴鍵時,上方會顯示該音的實際頻率。實際聽到的音準還取決於你的喇叭或耳機。
電腦鍵盤怎麼彈?
用兩排按鍵當鋼琴鍵:下排 Z S X D C V G B H N J M 是最低八度的 C 到 B(Z=C,S=C♯,X=D……),上排 Q 2 W 3 E R 5 T 6 Y 7 U 是高一個八度的 C 到 B,再往右 I 9 O 0 P 是再高一個八度的 C、C♯、D、D♯、E,最後 [ = ] 是 F、F♯、G。對應的按鍵會直接標在琴鍵上。按住按鍵不放不會重複發聲,放開才會結束。這是依鍵盤上的實體位置判斷,不受輸入法影響;但如果你的鍵盤不是 QWERTY 排列,琴鍵上標的字母可能和你鍵帽上的字不同。
怎麼彈和弦?手機可以多指同時按嗎?
電腦上可以同時按多個鍵,數量取決於你的鍵盤(有些鍵盤同時按太多鍵會被硬體忽略,這叫鍵盤幽靈鍵限制)。手機和平板可以多指同時按琴鍵,同時能辨識幾根手指由裝置決定。滑鼠一次只能按一個鍵,要彈和弦可以開「延音」,一個一個按,前面的音會一直延續。
延音是什麼?
鋼琴右腳的踏板叫延音踏板,踩住之後,放開琴鍵聲音也不會立刻停,會繼續自然衰減。本頁的「延音」按鈕按一下是開、再按是關;在電腦上也可以按住空白鍵暫時延音,放開空白鍵時,已經放開的琴鍵才會收音。不開延音時,放開琴鍵約 0.5 秒內聲音會收掉(釋音)。
怎麼切換音域?可以彈更高或更低的音嗎?
鍵盤一次顯示 3 個八度加最上面的一個 C(共 37 個鍵),用「低一個八度」「高一個八度」切換,最低從 C1 開始、最高到 C8(標準 88 鍵鋼琴的最高音),共 5 種音域。標準鋼琴最低的 A0 到 B0 這幾個音沒有收在內。
按下去到發聲的延遲有多少?
按下的瞬間就會要求瀏覽器發聲,程式本身沒有額外等待(起音只有 4 毫秒的淡入,避免爆音)。實際延遲主要取決於你的裝置與音訊輸出:內建喇叭通常很短,藍牙耳機常有 100 到 300 毫秒的延遲,這不是網頁能改善的,要即時彈奏請用有線耳機或內建喇叭。我們無法替你的裝置保證一個延遲數字。
為什麼沒有聲音?
常見原因:第一,瀏覽器要等你第一次點擊或按鍵才允許發聲,請先點一下琴鍵;第二,iPhone 側邊靜音開關打開時,網頁聲音可能被靜音;第三,頁面上的音量太低,或裝置輸出接到沒開的藍牙裝置。
會收集我的資料嗎?
不會記錄你彈的音。聲音全部在你的瀏覽器裡合成,不用麥克風。網站的統計只記錄你按了哪個控制按鈕(例如切換音域、延音)這類匿名使用事件;琴鍵本身不記錄。
相關工具
資料來源
- 十二平均律與琴鍵頻率公式 f(n)=2(n−49)⁄12×440 Hz(以第 49 鍵 A4 為基準;MIDI 編號換算為 m=n+20):Wikipedia〈Piano key frequencies〉(二手整理):en.wikipedia.org/wiki/Piano_key_frequencies。
- 標準音高 A4=440 Hz(ISO 16):Wikipedia〈A440 (pitch standard)〉(二手整理):en.wikipedia.org/wiki/A440_(pitch_standard)。
- Web Audio API 規格(W3C):w3.org/TR/webaudio。
- Pointer Events(W3C,滑鼠、觸控、多點觸控的統一事件):w3.org/TR/pointerevents。
- 全部在瀏覽器內執行;工具本身不載入外部程式庫與音檔(全站的統計與廣告腳本除外)。