Sound Blaster Live 混音器/默认 DSP 代码¶
EMU10K1 芯片有一个 DSP 部分,可以对其进行编程以支持各种采样处理方式,此处对此进行描述。(本文不涉及 EMU10K1 芯片的整体功能。有关更多详细信息,请参阅手册部分。)
ALSA 驱动程序默认使用代码(以后可以更改)对芯片的这一部分进行编程,该代码提供以下功能
IEC958 (S/PDIF) 原始 PCM¶
此 PCM 设备(它是给定声卡的第 3 个 PCM 设备(索引 2!)和第 1 个子设备(索引 0))允许在没有任何修改的情况下将 48kHz、立体声、16 位小端流转发到数字输出(同轴或光纤)。通用接口允许创建多达 8 个以 48kHz、16 位小端运行的原始 PCM 设备。将对多声道设备的支持添加到当前代码中会很容易,但此时转换例程仅适用于立体声(2 通道流)。
有关更多详细信息,请查看 lowlevel/emu10k1/emufx.c 中的 tram_poke 例程。
数字混音器控制¶
这些控制是使用 DSP 指令构建的。它们提供扩展的功能。此处仅描述 ALSA 驱动程序中的默认内置代码。请注意,这些控制充当衰减器:最大值是不改变信号的中性位置。请注意,如果在多个控件中提到同一目的地,则会累积信号并可能被削波(设置为最大值或最小值而不检查溢出)。
使用的缩写说明
- DAC
数模转换器
- ADC
模数转换器
- I2S
飞利浦半导体用于数字声音的单向三线串行总线(此标准用于连接独立的 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 编解码器的 ??后??右 DAC PCM 插槽。
name='Wave LFE Playback Volume',index=0
¶
此控制用于衰减来自左右 PCM FX 总线累加器的样本。ALSA 使用累加器 0 和 1 分别用于左右 PCM 样本。结果混合为单声道信号(单声道),并转发到 AC97 编解码器的 ??后??左 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 编解码器的 ??后??右 DAC PCM 插槽。
name='LFE Playback Volume',index=0
¶
此控制用于衰减中心 PCM FX 总线累加器的样本。ALSA 使用累加器 6 用于中心 PCM 样本。结果样本将转发到 AC97 编解码器的 ??后??左 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
¶
此控制用于衰减来自左右 Zoom 视频数字输入的采样(通常由 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
¶
此控制用于衰减来自 LiveDrive 上左右 I2S ADC 输入的采样。结果采样被转发到 AC97 编解码器的前置 DAC PCM 插槽。
name='Line LiveDrive Capture Volume',index=1
, name='Line LiveDrive Capture Volume',index=1
¶
此控制用于衰减来自 LiveDrive 上左右 I2S ADC 输入的采样。结果采样被转发到 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/)¶
- 美国专利 5925841
采用缓存存储器的数字采样乐器(1999 年 7 月 20 日)
- 美国专利 5928342
集成在单个芯片上的音频效果处理器,该芯片具有一个多端口存储器,多个异步数字声音样本可以同时加载到该存储器上(1999 年 7 月 27 日)
- 美国专利 5930158
具有用于音频效果的指令集的处理器(1999 年 7 月 27 日)
- 美国专利 6032235
存储器初始化电路 (Tram)(2000 年 2 月 29 日)
- 美国专利 6138207
缓存中音频样本的插值循环,该缓存连接到系统总线,并根据循环结束和最小块大小对总线传输进行优先级排序和修改(2000 年 10 月 24 日)
- 美国专利 6151670
使用短期内存寄存器池来节省内存存储的方法(2000年11月21日)
- 美国专利号 6195715
通过将程序与通用寄存器关联、定义中断寄存器、轮询通用寄存器,以及调用与定义的中断寄存器关联的回调例程,来实现与公共中断通信的多个程序的中断控制(2001年2月27日)