主要内容

反射器

增加混响音频信号

描述

反射器系统对象™增加混响单声道或立体声音频信号。

添加混响到您的输入:

  1. 创建反射器对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

混响器创建一个System对象,混响这种方法在音频信号中加入了人工混响。

混响器(名称,值)设置每个属性名字到指定的价值。未指定的属性有默认值。

例子:reverb =混响器('PreDelay',0.5,'WetDryMix',1)创建一个System对象,混响,预延迟0.5秒,干湿混合比为1。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

混响的预延迟,以秒为单位,指定为范围[0,1]中的实标量。

混响预延迟是从听到直接声音到第一次早期反射的时间。的价值预延迟与正在建模的房间的大小成正比。

可调:是的

数据类型:|

低通滤波器截止频率(Hz),指定为0到范围内的正标量 年代 一个 p l e R 一个 t e 2 )

低通滤波器截止为混响器结构前部单极低通滤波器的-3 dB截止频率。它防止混响应用到输入的高频成分。

可调:是的

数据类型:|

混响尾的密度,指定为范围[0,1]内的实正标量。

扩散与混响尾在密度中建立的速率成正比。增加扩散使反射更接近,使声音变厚。减少扩散创建更多离散的回声。

可调:是的

数据类型:|

混响尾的衰减因子,指定为范围[0,1]内的实正标量。

DecayFactor与反射耗尽能量所需的时间成反比。要模拟一个大房间,使用长混响尾(低衰减因子)。要模拟一个小房间,使用短混响尾(高衰减因子)。

可调:是的

数据类型:|

高频阻尼,指定为范围[0,1]内的实正标量。

HighFrequencyDamping与混响输出中高频的衰减成正比。设置HighFrequencyDamping到较大的值使高频反射比低频反射衰减更快。

可调:是的

数据类型:|

干湿混合,指定为范围[0,1]中的实正标量。

Wet-dry混合湿(混响)和干(原始)的比例是你的信号吗反射器系统对象输出。

可调:是的

数据类型:|

输入采样率(以Hz为单位),指定为正标量。

可调:是的

数据类型:|

使用

描述

例子

audioOut=混响(audioIn)在输入信号中加入混响,audioIn,并返回混合信号,audioOut。混响的类型由混响器系统对象的算法和属性指定,混响

输入参数

全部展开

混响器的音频输入,指定为列向量或两列矩阵。矩阵的列被视为独立的音频通道。

数据类型:|

输出参数

全部展开

混响器的音频输出,以两列矩阵的形式返回。

数据类型:|

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

createAudioPluginClass 创建音频插件类,实现的功能系统对象
parameterTuner 在流处理时调优对象参数
configureMIDI 配置音频对象与MIDI控制器之间的MIDI连接
disconnectMIDI 从音频对象断开MIDI控件
getMIDIConnections 获取音频对象的MIDI连接
克隆 创建重复的系统对象
isLocked 确定系统对象正在使用中
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象
一步 运行系统对象算法

例子

全部折叠

使用反射器系统对象™为从文件中读取的音频信号添加人工混响。

创建dsp。一个udioFileReader而且audioDeviceWriter系统对象。使用读者的抽样率作为作者的抽样率。

fileReader = dsp。AudioFileReader (“FunkyDrums-44p1-stereo-25secs.mp3”,“SamplesPerFrame”, 1024);deviceWriter = audioDeviceWriter(“SampleRate”, fileReader.SampleRate);

通过您的设备播放10秒钟的音频信号。

抽搐toc < 10 audio = fileReader();deviceWriter(音频);结束发行版(fileReader)

构造一个反射器具有默认设置的系统对象。

混响器
混响=混响器属性:预延迟:0高剪切频率:20000扩散:0.5000衰减因子:0.5000高频阻尼:5.0000e-04湿干混合:0.3000采样率:44100

构造一个时间范围来可视化原始音频信号和添加了人工混响的音频信号。

Scope = timescope(...“SampleRate”, fileReader。SampleRate,...“TimeSpanOverrunAction”,“滚动”,...“TimeSpanSource”,“属性”,...“时间间隔”3,...“BufferLength”3 * fileReader。SampleRate * 2,...“YLimits”[1],...“ShowGrid”,真的,...“ShowLegend”,真的,...“标题”,“混响音频vs原始音频”);

播放带有人工混响的音频信号。视觉化混响音频和原始音频。

~isDone(fileReader) audio = fileReader();audioWithReverb =混响(音频);deviceWriter (audioWithReverb);范围([audioWithReverb(: 1),音频(:1)))结束释放(fileReader)释放(deviceWriter)

创建一个dsp。一个udioFileReader逐帧读取音频。创建一个audioDeviceWriter将音频写入声卡。创建一个反射器来处理音频数据。

framength = 1024;fileReader = dsp。AudioFileReader (“RockDrums-44p1-stereo-11secs.mp3”,...“SamplesPerFrame”frameLength,“PlayCount”2);deviceWriter = audioDeviceWriter(“SampleRate”, fileReader.SampleRate);混响器(“SampleRate”, fileReader.SampleRate);

调用parameterTuner来打开一个UI来调优的参数octaveFilter而流。

parameterTuner(混响)

在音频流循环中:

  1. 从文件中读入一帧音频。

  2. 应用混响。

  3. 将音频帧写入音频设备以供收听。

流媒体时,调整混响器的参数,听效果。

~isDone(fileReader) audioIn = fileReader();audioOut =混响(audioIn);deviceWriter (audioOut);drawnowlimitrate%需要更新参数结束

作为最佳实践,一旦完成就释放对象。

释放(deviceWriter)释放(fileReader)释放(reverb)

提示

createAudioPluginClass而且configureMIDI属性的可调属性压缩机对面向用户的参数:

财产 范围 映射 单位
预延迟 [0, 1] 线性 年代
HighCutFrequency [20000] 日志 赫兹
扩散 [0, 1] 线性 没有一个
DecayFactor [0, 1] 线性 没有一个
HighFrequencyDamping [0, 1] 线性 没有一个
WetDryMix [0, 1] 线性 没有一个

算法

全部展开

添加混响的算法遵循中描述的板级混响拓扑结构[1]并基于29761 Hz的采样率。

该算法分为五个阶段。

下面的算法描述是针对立体声输入的。单输入是一种简化的情况。

参考文献

[1] Dattorro, Jon。效果设计,第1部分:混响器和其他滤波器音频工程学会杂志。第45卷,1997年第9期,第660-684页。

[2] Dattorro, Jon。效果设计,第二部分:延迟线调制和合唱音频工程学会杂志。第45卷,1997年第10期,第764-788页。

扩展功能

版本历史

在R2016a中引入

另请参阅