🔊

啟動音訊引擎

瀏覽器規定必須由使用者操作才能播放聲音。按下按鈕後會建立 AudioContext,所有聲音都由振盪器即時運算產生,沒有使用任何音訊檔案。

建議使用耳機以聽出濾波器與效果器的差異
audio: idle
— Hz
0 voices
◆ 所有聲音皆由程式即時合成,專案不含任何音訊素材檔

用 Web Audio
把聲音算出來

複音合成器、ADSR 包絡、雙二階濾波器頻率響應曲線、FFT 頻譜分析、聲譜瀑布圖、16 步鼓機、加法合成與效果鏈——全部建立在原生 AudioContext 節點圖上,看得到也聽得到。

10功能模組
0音訊素材檔
2048FFT 解析度
16複音數上限
主輸出波形 · 即時取樣—

01複音合成器

每按一個音就動態建立一組振盪器 → 包絡增益 → 濾波器 → 主匯流排的節點鏈,放開後包絡釋放完畢自動回收節點。支援電腦鍵盤彈奏、unison 疊音與微分音離調。

OscillatorNodeGainNode 包絡unison 疊音16 複音管理
振盪器 sawtooth
演奏狀態
目前音高—
頻率—
發聲中0
節點數0
鍵盤對應:A W S E D F T G Y H U J = C~B,Z/X 切換八度,空白鍵觸發琶音。
節點鏈
osc ×3 ─▶ gain(ADSR) ─▶ filter ─▶ fx ─▶ master
示波器 + 頻譜
鍵盤 C3 – C5
滑鼠按住可持續發聲,也可直接用電腦鍵盤彈奏。按住 Shift 拖曳可連續滑過多個音。

02ADSR 包絡編輯器

可直接拖曳控制點的音量包絡。包絡以 setValueAtTime / linearRampToValueAtTime / setTargetAtTime 排程在精準的音訊時鐘上,不受畫面更新率影響。

AudioParam 自動化取樣級時間精度指數衰減
包絡參數
包絡預設
排程程式碼
—
包絡曲線拖曳圓點調整
橫軸為時間(總長依參數自動縮放),縱軸為增益。按下琴鍵時走 A→D→S,放開時進入 R。
實際輸出包絡(錄下的振幅包絡)

03雙二階濾波器與頻率響應

使用 BiquadFilterNode.getFrequencyResponse() 取得真實的幅度與相位響應,畫成對數頻率軸的波德圖。濾波器包絡可讓截止頻率隨每個音符掃動。

BiquadFilterNode幅度 / 相位響應對數頻率軸濾波器包絡
濾波器 lowpass
響應數據
−3dB 點—
峰值增益—
斜率—
取樣率—
幅度響應 (dB) 20 Hz – 20 kHz 對數軸
相位響應 (弧度)
濾波後即時頻譜

04頻譜分析與聲譜瀑布

同一個 AnalyserNode 同時提供時域與頻域資料:上方為示波器,中間為對數頻率軸頻譜(含峰值保持),下方為隨時間向左捲動的聲譜瀑布圖。

AnalyserNodeFFT 2048 點峰值保持聲譜瀑布
分析參數
即時量測
主頻率—
對應音名—
RMS 音量—
頻率解析度—
頻譜質心—
削波偵測OK
時域波形
頻譜(對數軸 + 峰值保持)
聲譜瀑布圖

0516 步鼓機音序器

八種打擊音色全部用振盪器與白噪音即時合成:底鼓是快速下滑的正弦波、小鼓是噪音加三角波、Hi-hat 是高通濾波後的噪音叢集。排程使用預看式(look-ahead)排程器,節奏不受畫面影響。

合成式鼓組look-ahead 排程swing 搖擺重音 / 力度
序列 pattern A
左鍵開關,右鍵設為重音。深色格線為每拍起點(1/4 拍)。
鼓組輸出波形
傳輸
音色參數 kick
排程狀態
目前步進—
排程誤差—
每步長度—
觸發次數0

06效果器鏈

延遲、殘響、破音、合唱四段效果可獨立開關。殘響的脈衝響應是用衰減白噪音即時算出來的 AudioBuffer;破音的轉移曲線也由公式產生並畫在右側。

DelayNode 回授程序化 IR 殘響WaveShaper 曲線LFO 合唱
延遲 Delay
殘響 Reverb
破音 Drive
合唱 Chorus
訊號路徑
亮起的節點代表目前啟用中的效果,訊號由左至右流動。
破音轉移曲線 f(x)
殘響脈衝響應(程序化生成)

07加法合成與自訂波形

調整 16 個諧波的振幅,系統會用 createPeriodicWave() 把傅立葉係數轉成振盪器波形,右側同步畫出由這些正弦波疊加出來的時域波形與頻譜柱狀圖。

PeriodicWave傅立葉級數即時波形合成
諧波振幅 16 harmonics
第 1 根是基頻,往右為 2×、3×…16× 倍頻。鋸齒波的係數為 1/n,方波只有奇次諧波。
預設波形
傅立葉係數
—
疊加後的時域波形(兩個週期)
諧波頻譜

08音階、和弦與琶音器

選定調性與音階後,系統會依音程公式算出所有音級與順階和弦,琶音器再用取樣級時鐘把音符排程出去,支援上行/下行/來回/隨機四種模式與跨八度範圍。

音程公式計算順階和弦取樣級排程
調性設定
音階資訊
音級數—
音程公式—
目前音—
BPM120
音階音名與頻率
音級音名MIDI頻率 (Hz)與主音音程比值
順階和弦
琶音鋼琴卷軸

09音高、音分與拍音

十二平均律與純律的比較:表格列出每個音程在兩種律制下的頻率差(以音分計),下方可同時播放兩個頻率,直接聽見「拍音(beating)」並看到振幅包絡的週期變化。

12-TET vs 純律音分計算拍頻視覺化
基準設定
比較結果
平均律—
純律—
差距—
拍頻—
拍音波形(兩個頻率疊加)
十二平均律 vs 純律對照
音程半音平均律 (Hz)純律比純律 (Hz)差 (cent)

10錄音與波形輸出

把主輸出接到 MediaStreamDestination 後交給 MediaRecorder 錄製。錄完可直接在頁面播放,並畫出整段的振幅包絡;也可把目前演奏寫成 WAV 位元組下載。

MediaRecorderMediaStreamDestinationWAV 編碼
錄音控制 待機
錄製長度0.0 s
資料大小0 KB
取樣數0
峰值0.00
提示:開始錄音後切到其他模組演奏,錄的是主輸出匯流排,包含所有效果。
輸出
WAV 匯出會把目前的加法合成波形以 44.1kHz / 16-bit 單聲道編碼成檔案。
錄音振幅包絡
主輸出電平表
L 峰值-inf
R 峰值-inf
延遲—
輸出聲道—