Sound Blaster Live 混音器 / 默认 DSP 代码¶
EMU10K1 芯片有一个 DSP 部分,可以对其进行编程以支持各种采样处理方式,这里对此进行了描述。(本文不涉及 EMU10K1 芯片的整体功能。有关更多详细信息,请参阅手册部分。)
ALSA 驱动程序默认使用代码(以后可以更改)对此芯片的这一部分进行编程,该代码提供以下功能
IEC958 (S/PDIF) 原始 PCM¶
这个 PCM 设备(它是给定声卡的第 3 个 PCM 设备(索引 2!)和第一个子设备(索引 0))允许转发 48kHz、立体声、16 位小端流,而无需对数字输出(同轴或光纤)进行任何修改。通用接口允许创建多达 8 个以 48kHz、16 位小端运行的原始 PCM 设备。将多声道设备支持添加到当前代码很容易,但此时转换例程仅适用于立体声(2 声道流)。
有关更多详细信息,请参见 lowlevel/emu10k1/emufx.c 中的 tram_poke 例程。
数字混音器控件¶
这些控件是使用 DSP 指令构建的。 它们提供扩展的功能。 这里仅描述 ALSA 驱动程序中的默认内置代码。 请注意,这些控件用作衰减器:最大值是不改变信号的中性位置。 请注意,如果在多个控件中提到相同的目标,则信号会累积并可能被削波(设置为最大值或最小值而不检查溢出)。
使用的缩写的说明
- DAC
数字到模拟转换器
- ADC
模拟到数字转换器
- I2S
Philips Semiconductors 的单向三线串行总线,用于数字声音(此标准用于连接独立的 D/A 和 A/D 转换器)
- LFE
低频效果(用作低音炮信号)
- AC97
包含模拟混音器、D/A 和 A/D 转换器的芯片
- IEC958
S/PDIF
- FX-总线
EMU10K1 芯片有一个效果总线,其中包含 16 个累加器。 每个合成器声音都可以将其输出馈送到这些累加器,并且 DSP 微控制器可以使用生成的总和进行操作。
name='Wave Playback Volume',index=0
¶
此控件用于衰减来自左右 PCM FX 总线累加器的采样。 ALSA 使用累加器 0 和 1 用于左右 PCM 采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='Wave Surround Playback Volume',index=0
¶
此控件用于衰减来自左右 PCM FX 总线累加器的采样。 ALSA 使用累加器 0 和 1 用于左右 PCM 采样。 结果采样被转发到后置 I2S DAC。 这些 DAC 独立运行(它们不在 AC97 编解码器内)。
name='Wave Center Playback Volume',index=0
¶
此控件用于衰减来自左右 PCM FX 总线累加器的采样。 ALSA 使用累加器 0 和 1 用于左右 PCM 采样。 结果被混合为单声道信号(单通道)并转发到 AC97 编解码器的 ??rear?? 右 DAC PCM 插槽。
name='Wave LFE Playback Volume',index=0
¶
此控件用于衰减来自左右 PCM FX 总线累加器的采样。 ALSA 使用累加器 0 和 1 用于左右 PCM。 结果被混合为单声道信号(单通道)并转发到 AC97 编解码器的 ??rear?? 左 DAC PCM 插槽。
name='Wave Capture Volume',index=0
, name='Wave Capture Switch',index=0
¶
这些控件用于衰减来自左右 PCM FX 总线累加器的采样。 ALSA 使用累加器 0 和 1 用于左右 PCM。 结果被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='Synth Playback Volume',index=0
¶
此控件用于衰减来自左右 MIDI FX 总线累加器的采样。 ALSA 使用累加器 4 和 5 用于左右 MIDI 采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='Synth Capture Volume',index=0
, name='Synth Capture Switch',index=0
¶
这些控件用于衰减来自左右 MIDI FX 总线累加器的采样。 ALSA 使用累加器 4 和 5 用于左右 MIDI 采样。 结果被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='Surround Playback Volume',index=0
¶
此控件用于衰减来自左右后置 PCM FX 总线累加器的采样。 ALSA 使用累加器 2 和 3 用于左右后置 PCM 采样。 结果采样被转发到后置 I2S DAC。 这些 DAC 独立运行(它们不在 AC97 编解码器内)。
name='Surround Capture Volume',index=0
, name='Surround Capture Switch',index=0
¶
这些控件用于衰减来自左右后置 PCM FX 总线累加器的采样。 ALSA 使用累加器 2 和 3 用于左右后置 PCM 采样。 结果被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='Center Playback Volume',index=0
¶
此控件用于衰减中心 PCM FX 总线累加器的采样。 ALSA 使用累加器 6 用于中心 PCM 采样。 结果采样被转发到 AC97 编解码器的 ??rear?? 右 DAC PCM 插槽。
name='LFE Playback Volume',index=0
¶
此控件用于衰减中心 PCM FX 总线累加器的采样。 ALSA 使用累加器 6 用于中心 PCM 采样。 结果采样被转发到 AC97 编解码器的 ??rear?? 左 DAC PCM 插槽。
name='AC97 Playback Volume',index=0
¶
此控件用于衰减来自 AC97 编解码器的左右前置 ADC PCM 插槽的采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
注意
对于标准操作,此控件应为零,否则会激活数字环回。
name='AC97 Capture Volume',index=0
¶
此控件用于衰减来自 AC97 编解码器的左右前置 ADC PCM 插槽的采样。 结果被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
注意
此控件应为 100(最大值),否则无法捕获(录制)AC97 编解码器的任何模拟输入。
name='IEC958 TTL Playback Volume',index=0
¶
此控件用于衰减来自左右 IEC958 TTL 数字输入(通常由 CDROM 驱动器使用)的采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='IEC958 TTL Capture Volume',index=0
¶
此控件用于衰减来自左右 IEC958 TTL 数字输入(通常由 CDROM 驱动器使用)的采样。 结果采样被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='Zoom Video Playback Volume',index=0
¶
此控件用于衰减来自左右缩放视频数字输入(通常由 CDROM 驱动器使用)的采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='Zoom Video Capture Volume',index=0
¶
此控件用于衰减来自左右缩放视频数字输入(通常由 CDROM 驱动器使用)的采样。 结果采样被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='IEC958 LiveDrive Playback Volume',index=0
¶
此控件用于衰减来自左右 IEC958 光纤数字输入的采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='IEC958 LiveDrive Capture Volume',index=0
¶
此控件用于衰减来自左右 IEC958 光纤数字输入的采样。 结果采样被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='IEC958 Coaxial Playback Volume',index=0
¶
此控件用于衰减来自左右 IEC958 同轴数字输入的采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='IEC958 Coaxial Capture Volume',index=0
¶
此控件用于衰减来自左右 IEC958 同轴数字输入的采样。 结果采样被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='Line LiveDrive Playback Volume',index=0
, name='Line LiveDrive Playback Volume',index=1
¶
此控件用于衰减来自左右 I2S ADC 输入(在 LiveDrive 上)的采样。 结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='Line LiveDrive Capture Volume',index=1
, name='Line LiveDrive Capture Volume',index=1
¶
此控件用于衰减来自左右 I2S ADC 输入(在 LiveDrive 上)的采样。 结果采样被转发到 ADC 捕获 FIFO(因此转发到标准捕获 PCM 设备)。
name='Tone Control - Switch',index=0
¶
此控件打开或关闭音调控制。 前置、后置和中心/LFE 输出的采样会受到影响。
name='Tone Control - Bass',index=0
¶
此控件设置低音强度。 没有中性值!! 激活音调控制代码后,始终会修改采样。 最接近纯信号的值是 20。
name='Tone Control - Treble',index=0
¶
此控件设置高音强度。 没有中性值!! 激活音调控制代码后,始终会修改采样。 最接近纯信号的值是 20。
name='IEC958 Optical Raw Playback Switch',index=0
¶
如果此开关打开,则 IEC958 (S/PDIF) 数字输出的采样仅取自原始 FX8010 PCM,否则取标准前置 PCM 采样。
name='Headphone Playback Volume',index=1
¶
此控件衰减耳机输出的采样。
name='Headphone Center Playback Switch',index=1
¶
如果此开关打开,则中心 PCM 的采样将放入左耳机输出(适用于没有单独的中心/LFE 输出的 SB Live 声卡)。
name='Headphone LFE Playback Switch',index=1
¶
如果此开关打开,则中心 PCM 的采样将放入右耳机输出(适用于没有单独的中心/LFE 输出的 SB Live 声卡)。
手册/专利¶
ftp://opensource.creative.com/pub/doc¶
请注意,该站点已失效,但这些文档可从各种其他位置获得。
- LM4545.pdf
AC97 编解码器
- m2049.pdf
EMU10K1 数字音频处理器
- hog63.ps
FX8010 - 用于音频效果的 DSP 芯片架构
WIPO 专利¶
- WO 9901813 (A1)
具有多个异步流的音频效果处理器(1999 年 1 月 14 日)
- WO 9901814 (A1)
具有音频效果指令集的处理器(1999 年 1 月 14 日)
- WO 9901953 (A1)
具有解耦指令执行和音频数据排序的音频效果处理器(1999 年 1 月 14 日)
美国专利 (https://www.uspto.gov/)¶
- US 5925841
采用缓存存储器的数字采样乐器(1999 年 7 月 20 日)
- US 5928342
集成了音频效果处理器的单芯片,带有可并发加载多个异步数字声音样本的多端口内存(1999年7月27日)
- US 5930158
带有音频效果指令集的处理器(1999年7月27日)
- US 6032235
内存初始化电路(Tram)(2000年2月29日)
- US 6138207
在连接到系统总线的缓存中对音频样本进行插值循环,根据循环结束和最小块大小对总线传输进行优先级排序和修改(2000年10月24日)
- US 6151670
一种使用短期内存寄存器池来节省内存存储的方法(2000年11月21日)
- US 6195715
通过将程序与GP寄存器关联、定义中断寄存器、轮询GP寄存器以及调用与定义的中断寄存器关联的回调例程,来实现与通用中断通信的多个程序的的中断控制(2001年2月27日)