[分享] 舊菜重炒, ALSA dmix + aRts = 很棒的組合

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[分享] 舊菜重炒, ALSA dmix + aRts = 很棒的組合

文章wsun013 » 週四 10月 27, 2005 1:21 pm

小弟目前使用在 ALSA dmix 與 testing 內的 libarts
發現他們現在幾乎可以天衣無縫的配合

首先, 這是我 dmix 的設定, 於 /etc/asound.conf
代碼: 選擇全部
pcm.dmixer  {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:0,0"
        period_time 0
        period_size 1024
        buffer_size 4096
    }
    bindings {
        0 0
        1 1
    }
}

pcm.dsnooper {
    type dsnoop
    ipc_key 2048
    slave {
        pcm "hw:0,0"
        period_time 0
        period_size 1024
        buffer_size 4096
    }
    bindings {
        0 0
        1 1
    }
}

ctl.dmixer {
    type hw
    card 0
}
ctl.dsnooper {
    type hw
    card 0
}

pcm.duplex {
    type asym
    playback.pcm "dmixer"
    capture.pcm "dsnooper"
}

# for ALSA default
pcm.!default {
    type plug
    slave.pcm "duplex"
}

# for OSS default
pcm.dsp0 {
    type plug
    slave.pcm "dmixer"
}

ctl.mixer0 {
    type hw
    card 0
}


之後把所有能用 alsa 作output 的程式, 將其輸出的 device 改為 "dmixer" 不含 " ", eg :
1. xmms
圖檔
2. kaffeine
圖檔
3. mplayer
圖檔
4. 在 cedega 裡, 於 ~/.transgaming/config 下, 將 "Drivers" = "wineoss.drv", 改為
代碼: 選擇全部
"Drivers" = "winealsa.drv"

且將mmap 關閉, pcm0 改成 dmixer, 如下:
代碼: 選擇全部
[winealsa]
"UseMMap" = "N"
"pcm0" = "dmixer"

圖檔
上圖為 cedega 聲音使用無錯誤msg poping, 成功執行GBA 的 emulator


完成dmix之後, 加入
代碼: 選擇全部
artsd -d
於任一startup script, eg ~/.xinitrc
來使用 aRts 的 sound server
注:
1. -d 是開啟 duplex 對於同時要收音與錄音的程式很重要
2. 小弟習慣手動啟用 arts, 所以在 kcontrol 的 sound 中, 將 kde 的 sound server disable, 如下圖:
圖檔

3. 但是這樣要怎麼使用kde 的sound events ? 可以將 player 設為 artsplay 就可以啦! 如下圖:
圖檔

有哪些app 是用 artsd 呢? 大部份都是以使用 oss 且不使用alsa
API 為主, 有些kde/qt 的程式雖然也支援alsa, 但小弟發現他們在
artsd 下work 的比較好/正常. examples:
1.
代碼: 選擇全部
artsdsp -m skype

2.
代碼: 選擇全部
artsdsp -m krecord

3.
代碼: 選擇全部
artsdsp -m kwave

4.
代碼: 選擇全部
artsdsp -m teamspeak

著重點於 "-m" 這個選項啟動mmap

5. 最新的 wine 0.9 在 winecfg 中的 audio 也可以改成 aRts 的 plugin
圖檔

6. 為了讓 flash 在 mozilla/fire 上出聲, 所以使用 artsdsp
代碼: 選擇全部
artsdsp firefox

如果想嘗鮮, 可以從 kde.org 上取得最新的 arts 來build
有兩個branch在上面, 一個是1.4,另一為1.5
1.5 目前不支援非 binary 的 artsdsp wrapping, 所以建議使用1.4
不過debian 裡包的應該就夠用啦..
取得方法如下
代碼: 選擇全部
svn co svn://anonsvn.kde.org/home/kde/branches/arts/1.4/arts

之後進入 arts下
代碼: 選擇全部
make -f Makefile.cvs
./configure --with-alsa
make
sudo make install 或 sudo checkinstall 當然也可以 dpkg-buildpackage

目前最新的svn version 是 1.4.3, 而 testing 上的是1.3.0

此分享會不定期更新
歡迎大家題出上列方法不能work with 的app

以上

修正
****20051028
1. etch/testing 上面的 arts 是 1.3
2. 新增 disable sound in kcontrol
3. 新增 kde sounds notification with use of the artsplay
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章phyrster » 週六 10月 29, 2005 10:37 pm

小弟目前使用在 ALSA dmix 與 testing 內的 libarts
發現他們現在幾乎可以天衣無縫的配合


请教一下:

我都是用 alsa 的,在mplayer和xmms下没有问题。

为什么要用 dmix+libarts 呢? 有什么优势吗?为什么说天衣无缝呢?
phyrster
可愛的小學生
可愛的小學生
 
文章: 77
註冊時間: 週三 7月 27, 2005 1:03 am

文章wsun013 » 週日 10月 30, 2005 7:36 am

Hi,

使用 libarts 的原因是有些app 利用aoss 並不能達到預期的效果(eg, skype), 些有些甚至一定要artsd 才能跑 (eg. kwave). 要求一定要使用 esd 的也可以利用
artsdsp -m esd 來配合, 不過常見就是了.

dmixer+libarts 的優勢對我來說, 可能是可以達到較多的 app support coverage.
而"天衣無縫"也偏向"廣告用途"..因此前面有加上"幾乎"來避免不實廣告.

;-)
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客