FPGA中的DSP
Hammerfall DSP系列包含了许多DSP功能,却没有安装DSP。自从我们的第一块音频卡(Digi24),RME就选择了FPGA。我们没有使用由制造商决定并提供功能的硬接线芯片,我们使用了完全由自己设计的电路。这可以用FPGA来实现,与ASIC(根据用户需要来制作的芯片)不同,它是可再编程的。在过去,为了这个目的,需要改变音频卡上的EPROM。Hammerfall DSP在FPGA中的的硬件配置甚至可以通过软件/驱动升级而升级。
近些年FPGA越来越强大。用于Hammerfall DSP(Xilinx Spartan 2)的最新版本允许在FPGA中进行计算指令,以前这只能通过DPS实现。更好的是,多亏了优化的自适应,我们再次在所需要的功能上超越预配置设备(Motorola、Sharc等)的性能!例如,我们的混音器在内部100MHz,最多可以处理1456个通道,使用的存储带宽远远高于500MByte/s,单纯这一点,就让Motorola DSP完全忙起来了。另一方面,我们的FPGA可以同时计算52通道的峰值电平和有效值电平。此外,还包含了3个ADAT接收器和发射器,以及1个完全数字的SPDIF接收器和发射。
下面将对Hammerfall DSP混音器的基本技术进行简要介绍,包括在硬件中通过比特和字节的实现。关于软件用户界面的详细信息,可以参阅TotalMix:软件、特性和操作。
为什么在输入/输出音频卡中需要混音器?
下面列出了一些情况:
- 设置无延迟子级混音(耳机)
- 输入和输出的无限制路由 (自由分配、跳线功能)
- 同时将信号分送到多个输出
- 用一对立体声通道同时重放不同项目
- 将输入信号混音到重放信号(完全ASIO直接监听)
起初,将输入信号混音到重放信号中对我们来收是最重要的。我们现在的硬件(DIGI96和Hammerfall系列)由于没有混音器只能在替换模式下工作,例如,刚刚将输入音轨路由的输出,你就只能听到输入信号,而不是整体的重放信号。这种“磁带录音机模式”在当时是向前迈进了一大步,但是它需要外部连接一个调音台。随着计算能力的提高,软件的快速发展,更多的用户想要使用由软件本身提供的混音器。为了能够同时监听到输入信号和重放信号,只有两种方法:一是音频卡的延迟/缓冲区要小些(理想为6ms以下),使得软件可以完整计算数据;二是将音频卡输入信号和本身的重放信号混到一起,这样可以无延时监听(因为信号直接从输入走到硬件的内部输出)。
理论上,只要你有足够完美的ASIO 2.0直接监听,混音器应该能够将每个输入混音到任何一个重放音轨。但是仔细想想,这种方式还不能满足我们想达到的效果。如果这样的话,应该实现将任何输入通道混音到任意数目的重放通道,当然灵活性越高越好。
基于这点,很容易就提出了下面的要求:混音器中的重放音轨应该完全可混音和可路由。这需要创建多个完全独立的子级混音,并可自由路由的重放通道。把几个音轨相加会出现一个很高的电平:数字过载。因此物理输出的电平必须要降低。由于重放音轨总是通过混音器,所以必然需要有一个“整体增益”的设置,以保证重放的比特精度。你已经能明白:技术不需要效果和EQ,还是很需要有一个混音器的。
内部
数字混音器的基本要求就是在可以同时处理多个通道以及内部分辨率。例如Digiface,有26个输入音轨、26个重放音轨,可以以任何顺序混音到28个物理输出。也就是(26 + 26) x 28 = 1456个组合的同时处理成为可能。混音器必须能够计算1456个通道。
只要监听是唯一的目的,那么16bit的分辨率肯定是不够的。因为它们通常在混音器内被路由,不仅需要高于24bit的分辨率以避免增益变化的舍入误差,还需要为增益提升和多个通道加和提供额外的动态余量。
但如果分辨率过高也没什么意义,还会在FPGA内部引起高度资源消耗。因此我们定制了下面几个基本的定点运算值:
- 乘法器40bit分辨率。最大音频分辨率24bit+可以用推子改变的增益分辨率16bit(65563点)=40bit。
- 加法器36bit分辨率。用于必备的动态余量7bit(最多52个带有6dB增益的通道可以被混音到一个通道)+音频信号24bit+用于LSB减小舍入误差5bit=36bit。
- 不加抖动的输出信号减小到24bit。
- 推子: 16bit=65536点。输入和输出通道的增益变化:+6dB至最大衰减。输出:0dB至最大衰减。由于屏幕的显示,用鼠标点击的设置值与屏幕像素有关,为137。切换到细节模式(shift键),这个值就会被乘以8,得到1096不同的增益值。
- Pan: 6 dB,即中间位置时信号被衰减6dB,从中间到左或右,两边个50级变化。从L1.00至C0.5再到R1.00都是线性处理和显示。
总体过载
像上面提到的,混音器应该具备两个基本性质:不能过载并提供整体增益比特精度,例如它通过24bitCRC测试。
为了通道加和(带有+6dB增益的52通道相加)时避免内部过载,输入信号24bit是不够的。信号混合意味着相加,即新产生的信号一定比单独的输入信号电平高。最坏的情况就是相加的信号完全相关,换句话说就是完全相同的信号:输出电平就是2倍(+6dB)。
TotalMix的过载安全,即使没有外部硬件的大负载条件下也可以很容易证明。下面的例子中,用到的有HpW Works软件(产生和分析测试信号)、一个Digiface和一个DIGI96/8。示波器使用的是Tektronix TDS 210,与Digiface的模拟输出相连。
首先,我们我们数字生成一个有趣的测试信号,由多个正弦信号组成,总体为0dBFS,也就是能达到的最高数字电平。录制的信号被发送到Hammerfall DSP的所有26个音轨,重放不变。用于本测试的Digiface的输入和输出被连接到一起,将重放信号也送给所有26个输入。
依靠TotalMix,所有的重放和输入通道现在全部被路由到ADAT1的左通道(1+2)。这样,52个通道相加成为了一个整体。为了分析,输出信号ADAT1通过DIGI96/8被路由。在这个截图中可以看到,输出通道1已经完全过载了,但是经过推子使输出电平衰减40dB,信号无失真地显示出来了。
这个测试很容易进行,但并不是完全准确的,因为输入的信号有2个采样点的延迟,这是由于加法过程不是完全理想的。添加相同的信号则遵循一个简单的数学规律:对通道数目取以10为底的对数,再乘以20(与音频领域计算其他dB的方法相同)。这样,34.3dB+最大增益6dB=40.3dB。TotalMix的过载动态余量为7bit,7 x 6 dB = 42 dB,因此覆盖了理论的最大值。在实际应用中,电平上升没有这么多,因为将两个完全相同的信号相叠加是不常见的。
信号质量
当然,信号质量在增益变化中也是非常重要的。理想情况下,不管电平变化得有多大,源信号应该没有任何变化。但这样的可能性很小。对于减小的电平,信号中最低的成分会自动消失,因为分辨率的限制。这种情况下,我们说的24bit就是电平值低于-144dBFS的意思。
如下图所示,24bit在低于-144dBFS时可以很好地创建和显示。例如测试信号的二次谐波在-160dBFS。TotalMix可以毫不费力地将信号没有改变(没有可见失真、电平关系无变化)地衰减10dB。即使在-170dBFS时,二次谐波还是可以清楚地显示。
将信号衰减30dB,使其低于FFT的测量极限,例如低于本底噪声。本底噪声(即现实中的量化失真)由在24bit处截断而产生,在这种情况下,是由于输出经由ADAT端口的测试信号而引起的。
综上,我们可以说:多亏了简单的定点运算,TotalMix可以不改变信号。原信号的信噪比(SNR)和总谐波失真(THD)都没有发生任何变化。
但是,如果用户在屏幕上看不到过载,尽管在输出有动态余量,信号还是削波了,会是什么情况?如果设计得不好,这可能会导致计算错误,显示为原始波形在整个削波段向下折叠。甚至最短的脉冲,都会引起很大的失真。
TotalMix再次有出色的表现,信号限制地非常干净,没有引起进一步干扰。左图显示了一个由多个输入混合成一个输出的满刻度正弦信号。又吐为TotalMix在音乐中限制峰值,像一个数字峰值削波器一样工作。
软件
所有功能都是由软件决定的,不是由硬件决定的。软件可控制硬件的功能。它们包括:
- 储存所有设置
- 热键:推子置0、两两配置、细节模式等
- 静音和独唱功能
- 不同的显示模式
更多信息请查看TotalMix: 软件、特性和操作。
术语解释
16-Bit: 65、536电平级或96dB理论动态范围
24-Bit: 16、777、200电平级或144dB理论动态范围
ADAT光纤: 使用Alesis协议的TOSLINK接口。最多允许8通道24bit/48kHz。
音频字长:数字信号的比特分辨率
Bit: 最小的数字分辨率单位,1 bit相当于6dB动态范围。
dB: 分贝, 用对数值显示数值关系更直观
dBFS: dB满刻度。相对于最大数字电平的对数电平值
DR: 动态范围。-60dB刺激信号时最大电平与噪声电平的关系。
FFT分析:快速傅里叶变换。对给定信号的频谱分析。
LSB: 最低有效比特。
采样率: 1s音频信号的采样点的数目。
SNR: 信噪比。信号电平与噪声电平的比值。
THD: 总谐波失真。第二谐波到第十谐波的总和与第一谐波的比值。
截断: 将音频信号中不太重要的比特去掉。
介绍完TotalMix: 硬件和技术,本文将对软件方面进行描述。我们已经尽力将硬件混音器的所有功能以简单而有效的方式通过一个用户界面全部呈现出来。
概念
正如第一部分中讲述的,TotalMix几乎没有任何限制。将所有通道同时混音,并将一个通道多次发送其他不同通道、总线和内链结构,通常模拟调音台是无法达到的。混音器的界面应该简单易操作,以减少适应时间。设计成传统一系列子群组和路由按键吗?模拟至模拟的调音台,通道路由应该是双份的,主控部分应该含有28个子群组推子。TotalMix没有EQ、辅助发送,只有推子、pan和一些其他按键,所以并不是传统调音台的样子。
失去众多概念后,我们最终选择了Steinberg公司的Cubase。事实上,这个著名的Cubase混音器(几乎)已经能够实现无限制路由了。TotalMix第一眼看上去有点像Cubase混音器的简化版(没有效果、没有插件等),但是在内部我们还是采用了不同的方式,这点稍后来讲。另一个重点是最大的尺寸:整个混音器应该适合1024屏幕,这很大程度上决定了软件的外观。
软件界面
混音器的可视化设计主要决定与HDSP系统的结构:
- 最上面一行:硬件输入。显示的是输入信号的电平,也就是推子独立控制。每个推子和路由窗口、任何一个输入通道可以被路由和混音到任意硬件输出(第三行)。
- 中间一行:重放通道(软件的重放音轨)。每个推子和路由窗口,任何重放通道可以被路由和混音到任意硬件输出(第三行)。
- 最下面一行:硬件输出。因为它们更适于子群组的输出,电平在这里被衰减(为了避免过载),不能路由。这一行有两个额外的模拟输出通道。
最下面一行的两个额外输出,会在右侧的上面出现一些自由空间,用于快速访问面板
每个通道都有很多个元素:
每个输入和重放通道都有静音(mute)和独唱(solo)按键。
每个通道下面都有pan-pot,为了节省空间,所以以指示条形式(左/右)显示。
下面的窗口,显示的是有效值电平或峰值电平,每隔0.5s更新一次。过载时会在此出现一个红点。
接着是带有电平表的推子。这个电平表既显示用黄色线表示的峰值电平(1个采样点足够显示满刻度),也显示用绿色柱表示的数学声精确的有效电平值。有效值显示的时间常数相对较短,这样可以更好地显示平均响度。
这个推子下面,显示了当前的增益和全景电平。
白色区域显示的是通道名字,黑色区域显示的是当前的路由目标。
Tour de TotalMix
下面我们将一步一步地解释界面的所有功能。开启TotalMix,会自动加载上次的设置。第一次使用时,加载默认设计:将所有的重放通道1:1地发送到响应的硬件输出,增益为0dB。上面一行的推子设置到最大衰减,所以没有对输入通道进行监听。
你会为模拟耳机输出建立一个小的子混音。打开一个多轨重放,将耳机与模拟输出相连。在重放通道1(标签为“Out 1”)中点击进入标签下的路由窗口。会弹出一个菜单,在“1+2”前面显示选择目录。点击成“Analog(模拟)”。菜单消失,路由窗口不再显示“1+2”,而是显示“Analog”。现在用鼠标移动推子,当推子推至最大衰减值时,当前的状态就会被储存同时路由也被激活。将推子推至大约0dB时,当前的增益值就会在推子下面以绿色字体显示。下面的一行,在通道27和28(模拟左和模拟右),你可以看到你耳机里正在播放的电平。硬件输出的电平表显示的是流出的电平。在推子上面的区域点击,拖动鼠标,来设置全景,这是路由是在通道27和28之间。当前pan的值也会显示在推子下方。
对“Out 2”进行同样的设置步骤可把其路由成模拟输出。
通常信号时立体声的,也就是一对通道。因此同时对两个通道进行路由是很有用的。按下“Ctrl”键,同时点击路由窗口中的“Out 3”。路由菜单就会弹出显示“3+4”的选择目录,点击成“Analog”。现在,通道4也已经被设置成模拟的了。
当你想要将推子很精确地设置到0dB,这有些难度,因为这取决于鼠标的配置。但是直接将推子推至0dB附近然后按下Shift键,即可精准地推到0dB。同时这样会激活细节模式,细节模式将鼠标的移动放大了8倍,此时增益设置的精确度可毫无难度地达到0.1dB。
高级用户可能想跳过这一部分,因为这些操作都太显然太普通了。但接下来要将的就有趣多了。请将“Out 4”设置成增益大约为-20dB,pan大约在中心位置。现在点击进入路由窗口,你讲看见两个选项目录,一个是“3+4”,一个是“Analog”。点击成“SPDIF”,窗口消失,这时推子和pan都跳到初始值,信号现在可以被路由到SPDIF输出。你可以继续对所有的输入设置,即你以及将信号同时发送到所有的输出。这是与Cubase混音器众多不同之一,Cubase不支持多选。
你肯定会发现当你将通道路由到其他输出并设置不同的增益值时,耳机混音却没有改变。所有的模拟调音台和几乎所有数字调音台,推子的设置将影响每一条路由总线的电平,但TotalMix不会。TotalMix允许对所有的推子独立设置,这是很多昂贵数字台厂商希望在他们的产品中实现的功能。因此只要你选择了另一个路由,推子和pan会马上跳到对应的设置。
回到“Out 4”。怎样避免选择目录,也就是路由呢?只需将推子推至最大衰减值。设置就会使路由无效了。在路由窗口点击至“3+4”,将推子推下来,再次打开路由窗口,选择目录就没有了。
这样庞大的功能使得保持好的窗口显示变得困难。因为就像图中所示,实际上多有的硬件输出都会用于不同的子混音。打开路由窗口,你就会看见一大群选择目录,但你无法概览,也就是不知道信号怎样合到一起,在哪合到一起的?这个问题可以由十分巧妙的“子混音模式”解决。这种模式下,所有(!)路由窗口都跳到所选的路由对。如图所示,你可以立即看到哪些通道、哪些推子和pan的设置形成了一个子混音。(这里是“Analog”)
静音是在推子前的,因此会将所有通道的有效路由全部静音。只要任何一个“Mute”(静音)键被按下,快速访问区域中 “Master Mute”(主控静音)键就会亮起来。它可以将所有选定的静音关闭或再次打开。你可以随心建立一个静音组,通过这种方法打开或关闭。这也同样适用于“Solo”(独奏)和“Master Solo”(主控独奏)。只要有一个独奏键被按下,其他所有的静音键就会被激活并亮起来。TotalMix是十分智能的。如果你将“Out 1”和“Out 4”设置成静音,再将“Out 5”设置成独奏,那么这时所有的静音键就会全部亮起来了。如果你将“Out 5”的独奏关闭,就会只剩下“Out 1”和“Out4”的静音键亮着。如果你将静音编组里的一个通道设置成独奏,那么静音就会失效了,但如果你将独奏关闭,就会立即恢复到之前的静音状态。
热键
TotalMix只有少数但非常有效的快捷键组合(请阅读:混音器设置),十分简单和快捷。之前已经提到了,Shift键用来打开推子和pan的细节模式。而Ctrl键的功能远远不止是能成对改变路由:
- 按住Ctrl键,点击推子区域的任意位置,可以设置硬件输出的推子至0dB和-6dB。
- 按住Ctrl键,点击pan的任意位置,将全景设置成“Center”(中心)位置。
与立体声路由设置一样,推子也可以成对绑定移动。这可以通过Alt键来实现,尤其是设置SPDIF和模拟输出电平时非常好用。同时,TotalMix也支持以下组合键:如果你同时按下Ctrl键和Alt键,并点击鼠标,使推子成对跳至0dB,可以在细节模式下用Shift+Alt键设置绑定成对。
推子有两个鼠标区域:第一个区域是推子按钮,用来锁定,这样可以避免不小心改变数值。第二个区域是整个推子的设置区域,在该区域点击,推子会立即跳到鼠标所点击的位置。如果你想将一些推子设置到最大衰减值,你可以直接点击推子的最底端。如果按下Alt键再执行此操作,就会成对跳到最大衰减值。
快速访问区域
你可以在这里看到一些选项,这些选项使TotalMix用起来十分简单,是对监听模式的一种革新。我们已经介绍了Master Mute和Master Solo键,它们可以对一组通道起作用。
在视图区域,可以将每一排设置成可见或不可见。对于一个单纯的重放混音,那么就不需要输入,点击输入键后,整个上面输入一排就会不见。如果你也不想看见硬件输出,界面会只剩下重放通道,以节省空间。可以任意组合。
子混音设置所有路由窗口,像之前介绍的一样。将子混音关闭会自动恢复到先前的视图。
混音器还可以被横向和纵向缩小。如果你只需监听或设置少数通道,那么TotalMix可以大大节省桌面/屏幕的空间。
预设是TotalMix最强大最有用的功能。在8个按钮的后面有了8个文件,包括了完整的混音器状态。可以试一下:只要鼠标一点,所有的推子和其他设置都会实时地根据预设而变化。“Save”(保存)按钮用来将当前的状态存储为预设。你可以来回改变信号的分配,完成输入监听和众多子混音。
在这里,也可以看到RME对细节的重视。如果在加载一个预设之后,有一个参数改变了(例如移动了推子),就会蹦出提示,告知当前状态被改变了,并一直显示。
如果预设按钮是点亮的,就说明已经有另外一个预设通过文件菜单和“Open file”(打开文件)加载了。混音设置可以通过常规方法进行保存,文件名可以很长。
最多可以同时使用3个Hammerfall DSP系统。通过音频卡按钮可以在系统之间切换。音频卡1可以使Digiface,但是音频卡2也可以是一个Multiface。
需要提醒一下,当选择双速操作(88.2或96kHz)时,ADAT通道的数目会自动减半。相应显示也会改变,推子的设置还是通过复杂算法保存。
电平表
既然DIGICheck的电平表有新的标准,我们就不必迁就Hammerfall DSP。然而,这时为了使它可以与软件之间相互独立,电平表应该由硬件实现。另外,计算52通道的有效值电平引起的CPU负载会成为问题。
TotalMix中的电平表在尺寸上不能与真正的电平表桥相比。但是,我们已经加入了我们知道的所有有用的功能。
每个通道显示峰值电平和有效值电平。电平表设置有很多选项:
- 显示范围40dB或60dB
- 可调的峰值保持时间
- 数字显示可以选择为峰值电平或有效值电平
- 用于过载显示的连续样本数目(1至15)
- 有效值显示为绝对0dBFS和相对dBFSB
后者虽然很重要,但是是经常被忽略的一点。对正弦信号来说,有效值的显示会减低3dB。这只是数学上的精确值,但对电平表来说并不合理。因此,我们将DIGICheck的有效值修正了3dB,这样满刻度的正弦信号峰值和有效值都显示为0dBFS。信噪比值也采用了这样的设置,其他应用程序(像WaveLab)显示的比实际要高出3dB(因为参考值不是0dB,而是-3dB)。
文本区域显示的数值是与设置40/60dB的设置是独立的,它显示的是有效值测量全24bit范围,因此是信噪比测量的“不加权有效值”成为可能,这是在及其昂贵的测量设备上才能找到的。ADI-8 DS连接到Digiface,8个通道都将显示为大约-113dB。
我们意识到,这样的显示可能会引起一些不习惯,可能会经常把你的设备也可能是整个工作室的动态范围(数值显示)降低。值得高兴的是所有都是24bit,但大约-90dB范围的时候还是有噪音和哼声,甚至更糟。很抱歉,但这是事实。好的一面是TotalMix允许对信号质量持续地监测。因此它可以作为工作室内声音优化和错误消除的值得拥有的工具。
总结
TotalMix的文件只有200kB(包括了所有位图、图形元素和精心设计的功能),它是根据资源的需要来设置的。我们很确信:TotalMix会激起你的热情,使我们的竞争对手紧张,在基于DSP的输入/输出经典音频卡的领域内设立一个新标准。现在只是1.0版本,以后会有进一步更新。
版权 © Matthias Carstens.
在这个技术信息说明的所有条目都已彻底检查,但不能保证没有任何错误。RME不为此文章中任何误导或错误的信息负责。借用或复制整个文档或部分内容需得到RME的书面许可。