Chapter 16. 音效

Table of Contents
16.1. 基本的硬體需求
16.2. BIOS 設定
16.3. 設定音效裝置
16.4. 設定核心中的音效裝置
16.5. 進階的指令

由 Manolo De Santis 所貢獻

這一章是簡短的介紹在 NetBSD 上音效裝置的使用(誰想要一台 不會說話的電腦?)

16.1. 基本的硬體需求

The NetBSD kernel can recognize many chipsets and a quick look at dmesg is enough most of the times. 為了使你的系統能發出聲音,你必須知道安裝了什麼樣的音效卡。 很遺憾地,我們常常無法得知卡的品牌和型號,因為許多卡使用了 其他公司製造的晶片。因此,了解在卡上所使用的晶片是很有用的。

鍵入以下指令:

# dmesg | more
    

檢查音效卡和晶片。如果你夠幸運,你不需要做任何事,因為 NetBSD 自動地偵測和設定許多種的音效卡。

某些音效卡並不能工作,因為卡並沒有被支援或是你必須執行 一些工作使得卡被 NetBSD 偵測得到。現在很多音效卡都很便 宜,所以可以考慮另外購買一張,但在這麼做之前,你可以試 試一些簡單的步驟,看是否能使它們在 NetBSD 底下工作。

16.2. BIOS 設定

這一段對 i386 PCs 的使用者是很有用的;在其他的架構(如 Amiga)則沒有這些特徵。為了讓 NetBSD 使用音效卡,最重要 的事是決定卡所使用的匯流排類型。

常見的介面是 ISA 和 PCI。

ISA 卡大部分需要更仔細地設定因為和電腦的 BIOS 有關。

在較新的機器上(1997 以後生產的)有一個 BIOS 選項會導致在 設定 ISA 音效卡上令人頭痛的問題(不只是音效卡):這個選項 通常名為 "PNP OS Installed" 和大部份被發現在 "PNP/PCI Configuration"(名稱可能與你的 BIOS 不同)。在 NetBSD 底下,原則上最好關掉這個選項(例如,將 它設為 "NO")。

Note: 在許多系統底下,在這個選項被開啟時,仍能正常運作。這與 系統有很大的關聯性。

16.3. 設定音效裝置

在 NetBSD 安裝完成後,許多裝置被建立在 dev 目錄。我們有興趣的是:

/dev/audio
/dev/sound
/dev/mixer
    

如果不存在,則建立:

# cd /dev
# ./MAKEDEV all
    

這個指令建立所有的裝置,包括音效裝置。

現在可以使用音效卡了。

你可以做簡單的測試,送一份音效檔案給音效裝置(音效檔案 通常有 .au 的副檔名),但如果你沒有 音效檔案,你可以隨意送一份文件檔或可執行檔(當然,你不會 任何聽到有用的聲音...)。 使用 /dev/audio/dev/sound

# cat filename > /dev/audio
    

# cat filename > /dev/sound
    

如果你能聽到聲音,那就表示卡以已經被 NetBSD 所支援並且被 承認,在開機時已經被設定好了,否則,你必須為安裝在系統上的 音效裝置設定核心(假定卡/晶片已經被支援)。

16.4. 設定核心中的音效裝置

NetBSD 支援各式各樣的音效卡並且在 GENERIC 核心中已經做了 適當的設定。

許多 PC 並沒有音效卡但卻有一顆整合性的音效晶片:這表示 晶片被安裝在主機板上了。你必須在 GENERIC 核心設定檔中 做適當的設定並且重新編譯一個個人化的核心來使用它們。 在 GENERIC 核心設定檔中,檢查以下(或相似的)數行:

# Plug-and-Play BIOS and attached devices
 
#pnpbios*       at mainbus?
  
# mainboard audio chips 
#ess*           at pnpbios? index ?     # ESS AudioDrive
#sb*            at pnpbios? index ?     # NeoMagic 256AV in sb mode
#wss*           at pnpbios? index ?     # NeoMagic 256AV in wss mode
#ym*            at pnpbios? index ?     # OPL3-SA3
    

解除 "pnpbios" 這行的註解,和在你主機板上 所安裝音效裝置的那一行。

Note: 當你建立個人化核心時,最好是複製一份 GENERIC 核心 設定檔,如 Chapter 7 所述。

有時候手動地設定 IRQ 和 DMA 是必要的。

如果你仍然有問題,你可以試著建立所有的裝置,因為某些音效卡 只能模擬其他廠牌的卡。

許多晶片都被當作 SoundBlaster 和 OPL 相容來使用,但它們 大多數都要利用 WSS 模擬。

OPL 是 Yamaha 製造的 MIDI 合成器;有許多種 OPL 的變體( 例如,OPL2, OPL3SA, OPL3SA2,等)。許多音效卡依賴這個元件 或是相容的。例如,Crystal 所製造的晶片(常見的是 CS423x) 都有這個晶片組,這就是為什麼它們在 NetBSD 底下工作的原因。

WSS 不是一顆微晶片;它是 Windows Sound System 三個字的開頭 縮寫。Wss 是 NetBSD 核心驅動程式的名稱,用來支援微軟視窗的 音效系統。許多音效卡被 Windows 支援,因為它們遵從這個標準 (WSS) 而且 NetBSD 也能做相同的處理。

我在 NetBSD 底下測試過許多音效卡,有一定數目的卡必須 在核心中設定 opl*wss* 才能正常工作。

在 NetBSD 下使用 Creative SoundBlaster 應該沒有問題:它們 幾乎全被支援,包括 Sound Blaster Live 1024!

一旦能正常工作,你可以在核心設定檔中取消不必要的裝置。

16.5. 進階的指令

NetBSD 有許多處理音效裝置的指令。它們是:

16.5.1. audioctl

Audioctl 出現在 NetBSD 1.3,被用來手動地處理一些關於 音效 I/O 的變數,像是播放或是紀錄的頻率。有效的參數 可由以下的指令得知:

# audioctl -a | more
      

例如,要聆聽 CD 品質的音樂,你可以使用以下的指令。

# audioctl -w play=44100,2,16,slinear_le
      

這個指令設定頻率為 44100Hz,2 聲道,16 位元, slinear_le 編碼。

你可以查看支援的編碼:

# audioctl encodings
      

這個指令展示了被音效卡所支援的所有編碼。

16.5.2. mixerctl

這個指令被用來設定音效的混音功能,並且有和 audioctl 相似 的介面。

16.5.3. audioplay

使用這個指令,你可以播放音效檔案。如果需要更完善的功能, 可以從 package 系統安裝許多程式,讓你播放許多不同格式的 音效檔案(例如,MP3,等)。

16.5.4. audiorecord

這是用來錄製音效的指令。