經過前 15 節的學習,我們已掌握 Bass.dll 在 Delphi 中的核心用法:初始化、打開音頻、播放/暫停/停止、音量控制、均衡器、混響、頻譜繪製、播放速度調節等。本文作為系列總結,梳理關鍵知識點、部署注意事項與進階方向。
| 功能 | 關鍵函數/結構 | 備註 |
|---|---|---|
| 初始化 | BASS_Init, BASS_Free | 程式啟動/結束成對調用 |
| 版本檢查 | BASS_GetVersion, BASSVERSION | 防止 DLL 版本不匹配 |
| 創建流 | BASS_StreamCreateFile, BASS_StreamFree | 支援 MP3/WAV/OGG/FLAC 等 |
| 播放控制 | BASS_ChannelPlay, BASS_ChannelPause, BASS_ChannelStop | |
| 音量/平衡 | BASS_ChannelSetAttribute(BASS_ATTRIB_VOL/PAN) | 0.0~1.0 / -1.0~1.0 |
| 播放速度 | BASS_ChannelSlideAttribute(BASS_ATTRIB_FREQ) | 配合 TrackBar 實現變速 |
| 均衡器 | BASS_ChannelSetFX(BASS_FX_DX8_PARAMEQ), BASS_FXSetParameters | 多頻段獨立控制 |
| 混響 | BASS_ChannelSetFX(BASS_FX_DX8_REVERB), BASS_DX8_REVERB | fReverbTime 等參數 |
| 頻譜/FFT | BASS_ChannelGetData(BASS_DATA_FFT1024), 繪製柱狀/峰值 | Timer 定時刷新 |
| 同步/回調 | BASS_ChannelSetSync(BASS_SYNC_END/BASS_SYNC_META) | 播放結束、元數據觸發 |
| 錄音 | BASS_RecordStart, BASS_RecordGetInputName | 未在系列中演示,可自行擴展 |
| 網絡流 | BASS_StreamCreateURL | 在線播放、下載邊播 |
bass.dll,版本號可通過 BASS_GetVersion 驗證。\mp3-free\bass.dll,商業項目需購買授權。.exe),避免系統路徑衝突;若多應用共用,考慮 Side-by-Side 組件或私有目錄。bass.dll,安裝時勿覆蓋系統目錄,採用應用程式目錄私有部署。\delphi\dynamic\Dynamic_Bass.pas 運行時 LoadLibrary/GetProcAddress。| 現象 | 可能原因 | 解決 |
|---|---|---|
| 初始化失敗(返回 False) | 音訊設備被佔用、驅動異常、參數錯誤 | 檢查 BASS_ErrorGetCode,嘗試 device=-1 自動選擇 |
| 播放無聲音 | 音量屬性為 0、設備靜音、流創建失敗 | 檢查 BASS_ChannelSetAttribute、系統音量混合器 |
| FFT 數據全零 | 流未播放、未啟用 BASS_SAMPLE_FX、緩衝區未就緒 | 確認 BASS_ChannelIsActive = BASS_ACTIVE_PLAYING |
| 均衡器/混響無效果 | 創建流時缺少 BASS_SAMPLE_FX 標誌 | BASS_StreamCreateFile(..., BASS_SAMPLE_FX) |
| 程式結束崩潰 | 未調用 BASS_Free、未釋放流句柄 | 在 FormDestroy/FormClose 成對釋放 |
BASS_Mixer_StreamCreate、BASS_Mixer_StreamAddChannel 實現 DJ 混音台。BASS_Encode_Start 支援 MP3/OGG/FLAC/OPUS 編碼輸出。Bass.pas(隨 DLL 發布)\delphi\examples\ 目錄Bass.dll 功能極其強大且輕量,掌握其核心 API 後,幾百行代碼即可構建專業級音頻播放/處理應用。建議從簡單播放器起步,逐步加入均衡器、頻譜、網絡流等功能,享受聲音程式設計的樂趣!