📄 sound-setup.html
字号:
<div class="NOTE"><blockquote class="NOTE"><p><b>注:</b>如果你用的是FreeBSD 5.0或更新,你可以放心略过剩下部份不看。这些版本都使用了<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span>来自动创建设备结点。</p></blockquote></div><p>如果先前的命令返回<tt class="DEVICENAME">pcm0</tt>,你必须以用户<ttclass="USERNAME">root</tt>运行下边的命令:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">cd /dev</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">sh MAKEDEV snd0</kbd></pre><p>如果先前的命令返回<tt class="DEVICENAME">pcm1</tt>,执行上边同样的命令,记得把<ttclass="DEVICENAME">snd0</tt>换成<tt class="DEVICENAME">snd1</tt>。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 上边的命令<span class="emphasis"><i class="EMPHASIS">不会</i></span>创建<tt class="FILENAME">/dev/snd</tt> 设备!</p></blockquote></div><p><tt class="COMMAND">MAKEDEV</tt>能创建一组设备结点,其中包括:</p><div class="INFORMALTABLE"><a id="AEN8260" name="AEN8260"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><thead><tr><th>设备</th><th>描述</th></tr></thead><tbody><tr><td><tt class="FILENAME">/dev/audio</tt></td><td>与<span class="TRADEMARK">Sparc</span>®兼容的音频设备</td></tr><tr><td><tt class="FILENAME">/dev/dsp</tt></td><td>数字声音设备</td></tr><tr><td><tt class="FILENAME">/dev/dspW</tt></td><td>和<tt class="FILENAME">/dev/dsp</tt>一样,只是采样率是16位(bit)</td></tr><tr><td><tt class="FILENAME">/dev/midi</tt></td><td>存取 Raw 和 midi 设备</td></tr><tr><td><tt class="FILENAME">/dev/mixer</tt></td><td>控制端口混音设备</td></tr><tr><td><tt class="FILENAME">/dev/music</tt></td><td>2阶音序接口</td></tr><tr><td><tt class="FILENAME">/dev/sequencer</tt></td><td>音序设备</td></tr><tr><td><tt class="FILENAME">/dev/pss</tt></td><td>可编程设备接口</td></tr></tbody></table></div><p>如果一切顺利,你的声卡应该能发声了。如果你的CD-ROM或者DVD-ROM光驱连接到了声卡,你现在就可以放一张CD到光驱里使用<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">cdcontrol</span>(1)</span>命令来播放了:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">cdcontrol -f /dev/acd0c play 1</kbd></pre><p>程序各不相同,如<ahref="http://www.FreeBSD.org/cgi/url.cgi?ports/audio/workman/pkg-descr"><ttclass="FILENAME">audio/workman</tt></a>提供了很好的界面。或许你会想安装一个像<ahref="http://www.FreeBSD.org/cgi/url.cgi?ports/audio/mpg123/pkg-descr"><ttclass="FILENAME">audio/mpg123</tt></a>一样的程序来听MP3。</p><div class="SECT3"><h3 class="SECT3"><a id="TROUBLESHOOTING" name="TROUBLESHOOTING">7.2.2.1.常见问题</a></h3><div class="INFORMALTABLE"><a id="AEN8321" name="AEN8321"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><thead><tr><th>错误信息</th><th>解决方法</th></tr></thead><tbody><tr><td>``<tt class="ERRORNAME">unsupported subdevice XX</tt>''</td><td><p>一个或多个设备结点没有正确地建立。重复上面的步骤。</p></td></tr><tr><td>``<tt class="ERRORNAME">sb_dspwr(XX) timed out</tt>''</td><td><p>I/O端口没有设置正确。</p></td></tr><tr><td>``<tt class="ERRORNAME">bad irq XX</tt>''</td><td><p>IRQ设置不正确。确信设定的IRQ和声卡的IRQ是一样的。</p></td></tr><tr><td>``<tt class="ERRORNAME">xxx: gus pcm not attached, out of memory</tt>''</td><td><p>没有足够的内存空间供设置使用。</p></td></tr><tr><td>``<tt class="ERRORNAME">xxx: can't open /dev/dsp!</tt>''</td><td><p>使用命令<tt class="COMMAND">fstat | grepdsp</tt>进行检查是否有其它的程序打开了设备。值得注意的是<bclass="APPLICATION">esound</b>和<bclass="APPLICATION">KDE</b>提供的声卡支持造成麻烦。</p></td></tr></tbody></table></div></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN8356" name="AEN8356">7.2.3. 利用多个声源</a></h2><i class="AUTHORGROUP"><span class="CONTRIB">贡献者</span>Munish Chopra.</i> <p>同时有多个声源的声音在播放,这是完全可能的,例如当<bclass="APPLICATION">esound</b>或者<bclass="APPLICATION">artsd</b>不支持与其它程序共享音频设备时。</p><p>FreeBSD可以通过<span class="emphasis"><i class="EMPHASIS">虚拟声道(Virtual SoundChannels)</i></span>来达到,具体设置用工具<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">sysctl</span>(8)</span>。虚拟的声道可以能过在内核里混合声音来混合声卡里播放的声道。</p><p>使用两条sysctl命令来设置虚拟声道的数目。如果你是<ttclass="USERNAME">root</tt>用户,照此做:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">sysctl hw.snd.pcm0.vchans=4</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">sysctl hw.snd.maxautovchans=4</kbd></pre><p>上面的实例设定了4个虚拟声道,这也是实际上所使用的数目。<varclass="VARNAME">hw.snd.pcm0.vchans</var> 是<ttclass="DEVICENAME">pcm0</tt>的虚拟声道数,一当链接上一个设备它就可配置了。 <varclass="LITERAL">hw.snd.maxautovchans</var>是分配给新的音频设备的虚拟声道数,此时这个设备要用<span class="CITEREFENTRY"><span class="REFENTRYTITLE">kldload</span>(8)</span>来链接。因为<ttclass="DEVICENAME">pcm</tt>模块可以独立装载许多硬件驱动程序,因此<varclass="VARNAME">hw.snd.maxautovchans</var>也就可以存储分配给以后链接到的设备的虚拟声道数。</p><p>如果不使用<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span>,你就不得不把你的应用程序指向 <ttclass="FILENAME">/dev/dsp0</tt>。<var class="REPLACEABLE">x</var>,这里<varclass="REPLACEABLE">x</var>为0到3,因为在上面的例子里<varclass="VARNAME">hw.snd.pcm.0.vchans</var>被设为了4。在使用<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span>的系统里,上边那些会自动分配给用户。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN8399" name="AEN8399">7.2.4. 如何设置混音器通道值</a></h2><i class="AUTHORGROUP"><span class="CONTRIB">这一节的作者是</span> Josef El-Rayes.</i> <p>不同的混音通道的默认音量是硬编码进 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">pcm</span>(4)</span> 驱动程序的。同时,也有很多应用或服务程序提供了允许用户直接设置并记住这些值的功能。不过这并不是一个很好的解决方案, 您可能希望在驱动一级有一个可以设置的默认值。这可以通过在 <tt class="FILENAME">/boot/device.hints</tt> 定义适当的值来实现。 例如:</p><pre class="PROGRAMLISTING">hint.pcm.0.vol="100"</pre><p>当 <span class="CITEREFENTRY"><span class="REFENTRYTITLE">pcm</span>(4)</span>加载时,这一设置将改变音量通道原本是100的默认值。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 只有 FreeBSD 5.3 和更高版本才支持这一功能。</p></blockquote></div></div></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="multimedia.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起点</a></td><td width="33%" align="right" valign="top"><a href="sound-mp3.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">多媒体</td><td width="34%" align="center" valign="top"><a href="multimedia.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">MP3音频</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -