Difference between revisions of "Open Sound System (简体中文)"

From ArchWiki
Jump to: navigation, search
(use i18n template)
Line 6: Line 6:
 
{{translateme}}
 
{{translateme}}
  
= 简介 =
+
这篇文章讲述如果在你的电脑上安装和配置'''O'''pen '''S'''ound '''S'''ystem (OSS)
Open Sound System (OSS)[http://www.opensound.com www.opensound.com]是一个[http://4front-tech.com 商业支持的]可以工作在一些类unix系统,POSIX兼容系统上的声音驱动,包括了 Linux, FreeBSD, 和 Solaris.
 
  
请注意这里说的不是老的OSS驱动,那是距现在有10年时间的linux内核包含的驱动。
+
[http://en.wikipedia.org/wiki/Open_Sound_System Open Sound System] 是一个类Unix和POSIX兼容系统上一个可选的声音架构。OSSv3是Linux下原始的声音系统并集成在内核里,但是OSSv4在2002年OSS成为商业软件时它地位被ALSA所取代。OSSv4在2007年又成为了开源软件 ,[http://www.opensound.com/ 4Front Technologies] 以GPL协议发布了它的源码。
 
 
这篇文章是关于新的OSS版本,也叫OSSv4。这些版本仍然属于前所有者,但是在2007年7月再次开放了源代码,并且在GPL, BSD和CDDL协议下发行。
 
  
 
= 与ALSA驱动对比 =
 
= 与ALSA驱动对比 =

Revision as of 12:15, 31 March 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Open Sound System (简体中文)#)

这篇文章讲述如果在你的电脑上安装和配置Open Sound System (OSS)。

Open Sound System 是一个类Unix和POSIX兼容系统上一个可选的声音架构。OSSv3是Linux下原始的声音系统并集成在内核里,但是OSSv4在2002年OSS成为商业软件时它地位被ALSA所取代。OSSv4在2007年又成为了开源软件 ,4Front Technologies 以GPL协议发布了它的源码。

与ALSA驱动对比

(对用户来说)OSS的优点

  • 在内核空间(kernel space)里面包含了一个透明软件混音器(vmix)。这样多个程序就可以同时使用声音设备而且没有任何问题。
  • 这个混音器可以让你单独调节各个程序的音量。
  • 对某些声卡有着更好的支持比如创新(Creative)的X-Fi。
  • 一般来说声音质量更好。
  • 对使用OSS的应用程序接口(API)的程序有更好的支持(废话。。),很多程序都支持OSS的API,然而ALSA的OSS虚拟方式是有很多问题的。

(对开发者来说)OSS的优点

  • 清晰的API,更简单的应用。
  • API本身也更好,相关文档.
  • 支持用户空间的声音驱动(oss_userdev)。
  • 可移植性强,如果程序在Linux下支持OSS,那么它也可以在FreeBSD,Solaris下运行。
  • 本身可以跨平台,可以更方便移植到新的操作系统。

OSS的缺点

  • USB声卡驱动支持目前在linux下还是试验性质的。
  • 蓝牙声音设备目前还不支持。
  • AC'97和HDAudio dial-up soft-modems (比如Si3055)目前还不支持
  • MIDI支持目前还未完成。但是你可以通过软件合成器(如timidity和fluidsynth)来使用MIDI。
  • 待机目前还不支持。你需要在待机前使用soundoff来停止OSS驱动,在恢复后使用soundon来启动OSS。
  • 自动jack检测目前在某些HDAudio-powered主板上不能正常工作。也就是说在某些型号的主板上,你可能需要在插入耳机的时候手动关闭外置扬声器。

安装

  • 运行下面的命令安装oss:
# pacman -S oss
  • 运行下面的命令启动oss:
# /etc/rc.d/oss start
  • oss加到你的 /etc/rc.conf文件的 DAEMONS 列中,这样启动时会自动加载oss。

注意:

  • 最好能把alsa删除了也就是alsa-utils
  • 上面的步骤用于安装oss 4.1,如果你想安装oss 4.0,你依旧可以在这找到它 AUR
  • 请注意,如果是从oss-linux-free升级来的用户,请注意删除/usr/lib/oss文件夹。现在配置文件特别是里面定义的模块有很大变化。最好删除。否则会出现找不到模块,没有声音之类的问题。如果不幸遇到,就删除OSS后,删除/usr/lib/oss文件夹,然后重启再安装OSS,再次重启。

测试

  • 运行以下命令测试OSS:
$ osstest

在测试过程中你应该能听到音乐。


混音器

基于命令行到混音器叫 ossmix,它很像BSD声音混音器(mixerctl)。 还有一个更友好的基于图形界面的混音器 ossxmix。运行需要依赖gtk2。 ossxmix的控制功能解释如下:

  ______________________________
 / High Definition Audio ALC262 \    ----------------------------------> 声卡的标签
/________________________________\_______________________________
|
| [x] vmix0-enable [vmix0-rate: 48.000kHz]      vmix0-channels     \     The vmix (virtual mixer) special configurations
|                                               [ Stereo [v] ]      |--> appear at the top. These include sampling rate
|                                                                  /     and mixer priority. They are provided by OSS.
|  __codec1______________________________________________________  
| |  _jack_______________________________________________________  \     
| | |  _int-speaker____________________  __green_________________   |
| | | |                                | |                          |    
| | | |  _mode______   | |             | |  _mode______   | |       |    这儿是你的声卡的配置。
| | | | [ mix   [v] ]  o o [x] [ ]mute | | [ mix   [v] ]  o o [x]   |--> 这儿显示的控制器都是根据你的声卡配置的。
| | | |                | |             | |                | |       |    
| | | |________________________________| |_______________________   |
| | |____________________________________________________________   |
| |______________________________________________________________  /
|
| ___vmix0_______________________________________________________  \
| |  __mocp___  O O   _firefox_  O O  __pcm7___  O O                |    Here are the vmix mixer controls. These are
| | |         | O O  |         | x x |         | O O                |    virtual mixer controls provided by OSS. Each
| | | | |     | x O  | | |     | x x | | |     | O O                |    slider is the volume control of a different
| | | o o [x] | x x  | o o [x] | x x | o o [x] | O O                |--> application. When one application uses the
| | | | |     | x x  | | |     | x x | | |     | O O                |    sound card, its name is shown in the place of
| | |_________| x x  |_________| x x |_________| O O                |    the 'pcm#' labels. There are also sound level
| |______________________________________________________________   |    meter levels for each application.
|________________________________________________________________  /

保存和恢复混音器设置

如果你希望手动保存混音器设置,运行savemixer。这样做你需要文件/usr/lib/oss/etc/save.mixer的写权限或者使用-f选择另外一个文件。使用savemixer -L重置混音器的设置。初始脚本通过在关闭前和启动后运行下列命令来在不同的会话间保存混音器的设置:

savemixer


配置程序来使用OSS

如果可能,把所有依赖alsa-lib的软件全部重新编译一次去掉ALSA支持是使用OSS驱动最完美的方案。查询什么软件依赖alsa-lib:

$ pacman -Qi alsa-lib

然后到AUR上搜索-oss结尾的软件包,下载然后运行makepkg,替代系统里面现有的包就可以了。如果AUR里面没有的,就自己下载相关PKGBUILD,去掉alsa-lib,然后makepkg并且安装,别忘记把成功的包上传到AUR上去哦

Flash插件无声

安装libflashsupport-oss,前提是你的系统是Arch i686.

pacman -S libflashsupport-oss

如果是Arch x86_64,你就需要从AUR安装lib32-libflashsupport-oss

Skype 问题

有一个特殊版本的Skype 1.4 for OSS(QT静态编译),你可以从这里获得AUR. 一个2进制程序包可以从 skype's 下载页获取[1].

KDE Phonon

原始的 Qt Phonon应该默认就可以在OSS驱动下正常工作。

但是,如果你用KDE并且使用Xine后台作为声音输出,你就可能会遇到问题。你可以用过修改默认Phonon后台来解决这个问题,如使用gstreamer

编辑 ~/.kde4/share/config/servicetype_profilerc

[PhononBackend]
Entry0_Preference=2
Entry0_Service=phononbackends/gstreamer.desktop
Entry1_Preference=1
Entry1_Service=phononbackends/xine.desktop
NumberOfEntries=2

Wine

  • 运行winecfg.
winecfg
  • 选择Audio选项卡.
  • 选种OSS Driver.


其他程序

如果你不能让其他程序发出声音,试试看[2]这里

问题以及解决

HDAudio硬件的问题解决

问题如何产生

如果你有一个HDAudio声音设备,有可能你必须调整一些设置你的声卡才能正常工作。

HDAudio devices are very powerful in the sense that they can contain a lot of small circuits (called widgets) that can be adjusted by software at any time.(参考翻译:任何时间软件都可以调整强大的HDAudio上包含的很多小器件)。这些控制对混音器是外露的,例如,可以被用来把耳机声音输出功能改到声音输入功能。

但是,这可能导致问题,主要因为HDAudio标准比理想中应该有的标准来说太灵活了,也因为计算机开发商经常支持关注怎么让官方驱动正常工作。

所以你才会在使用HDAudio设备的时候,发现控制是混乱的,必须自己尝试手动调整每一个控制条直到可以工作,因为默认根本不会正常工作。你需要在前台调整ossxmix混音器设定的时候,后台有个程序录制/播放声音(比如 ossrecord - | ossplay - 来录制或者 osstest -lV来播放)。

如何解决

打开ossxmix,尝试改变每个控制条到中间位置,这包含在声卡特殊设定,就如上面"混音器"说到的一样。

  • 把每个音量控制条往上调整Raise every volume control slider.
  • 在每个选择框里面,尝试改变选项,一定要尝试每个可能的选项
  • 如果你听到有噪音,一个一个尝试把某些控制往下调整或者静音,直到你找到噪音的来源。

请注意,你不必调整顶部区域和底部区域的有关虚拟vmix混音器控制的部分控制条。

解决其他问题

  • 类似ALSA的,你需要降低main音量和PCM音量来一定程序上减少噪音(这根据你芯片情况而定。我使用vol=65,pcm=65,芯片为via8237)
  • 这里了解如何设定默认声卡,因为默认的选择不是最优的。
  • 如果一个程序播放声音遇到困难, 4front的wiki里面可能有解决办法.

提示和小技巧

多媒体键

If your multimedia keys don't work by default, read the Using multimedia keys with OSS page.

简单的系统托盘小工具

这是一个不依赖任何桌面环境的小工具,就类似gnome和xfce下的音量调节工具,使用鼠标滚轮直接滚动调整声音。来源于[http:/bbs.archlinux.org/viewtopic.php?id=77440 论坛],从这里下载,下载后改名为你喜欢的名字,如ossvolctl,然后赋予执行权限,复制到系统或者个人程序文件夹:

$chmod +x ossvolctl
#cp ossvolctl /usr/bin/

或者执行下面的:

#install -Dm755 ossvolctl /usr/bin/ossvolctl

之后直接运行ossvolctl就可以看到了。如果你愿意,可以添加到自启动目录~/.config/autostart 或者添加到启动脚本

其他提示

ALSA虚拟机

介绍

你可以让alsa-lib使用OSS作为它的声音输出系统,这对很多ALSA虚拟机有效。

注意:这个方法可能在你声音输出的时候造成额外的延迟,而且虚拟机也不完善,无法保证能让所有程序发声。例如如果软件通过ALSA选择设备,这个软件就不能正常工作。如last.fm

以后,更完善的方法将出现用来虚拟ALSA,如libsalsa以及cuckoo.

OSS为ALSA提供了2个兼容层(layers):内核和ALSA lib。内核模块("cuckoo")是100%兼容所有程序,但是不能和最新的OSS版本;oss里面的alsa虚拟库已经过时,我也不知道到哪里去获得最新版本。

方法

  1. 安装alsa-plugins
pacman -S alsa-plugins
  1. Edit /etc/asound.conf:
pcm.oss {
    type oss
    device /dev/dsp
}

pcm.!default {
    type oss
    device /dev/dsp
}

ctl.oss {
    type oss
    device /dev/mixer
}

ctl.!default {
    type oss
    device /dev/mixer
}

System-wide (software) equalizer effects

NOTES: This requires the use of the old softoss module (the predecessor of vmix) which may not be as good as vmix, wine and gstreamer do not play nice with softoss, and the module will not work with sample rates higher than 48khz.

We must do a few things to gain access to these effects.

  • If you're running the oss-linux-free daemon right now, stop it by running (as root):
/etc/rc.d/oss-linux-free stop
    • On builds 1015 and older, in /usr/lib/oss/etc/installed_drivers remove
vmix
    • On 1016 and newer, you should instead pass "vmix_disabled=1" parameter to osscore (via /usr/lib/oss/conf/osscore.conf) to disable vmix.
  • in /usr/lib/oss/etc/installed_drivers add
softoss
  • in /etc/rc.d/oss-linux-free comment out lines 15 through 20 so that it looks kinda like this
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
 start)
   stat_busy "Starting OSS/Open source driver"
   # start
   /usr/sbin/soundon
   if [ $? -gt 0 ]; then
     stat_fail
   else
     grep '^softoss' /proc/modules >/dev/null 2>/dev/null
#      if [ $? -eq 0 ]; then
#        stat_busy "Replacing old \"softoss\" module with \"vmix\""
#        rmmod softoss
#        modprobe vmix
#        sed -i 's/^softoss.*$/vmix/' /usr/lib/oss/etc/installed_drivers
#      fi
     add_daemon oss4
     stat_done
   fi
   ;;
 stop)
   stat_busy "Saving OSS mixer"
   /usr/sbin/savemixer
   if [ $? -gt 0 ]; then
     stat_fail
   else
     stat_done
   fi
   grep '^"cuckoo"' /proc/modules >/dev/null 2>/dev/null
   if [ $? -eq 0 ]; then
     stat_busy "Removing \"cuckoo\" module"
     rmmod \"cuckoo\"
   fi
   stat_busy "Stopping OSS/Open source driver"
   /usr/sbin/soundoff
   if [ $? -gt 0 ]; then
     stat_fail
   else
     rm_daemon oss4
     stat_done
   fi
   ;;
 restart)
   $0 stop
   sleep 1
   $0 start
   ;;
 *)
   echo "usage: $0 {start|stop|restart}"
esac

This keeps the oss-linux-free daemon from replacing softoss with vmix. (Very useful if you wish to switch between softoss and vmix.)

  • start the daemon again (as root of course)
/etc/rc.d/oss-linux-free start
  • If no errors are reported, then you may now see/use the effects with either ossmix or ossxmix with
ossmix -d1

or

ossxmix
  • you must turn off bipass to actually use the effects
ossmix -d1 effects.eq.bypass OFF

or just uncheck bypass in ossxmix

  • enjoy