主要内容

反射器

在音频信号中添加混响

描述

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

在你的输入中添加混响:

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

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

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

混响=反射器创建一个System对象,混响,它在音频信号中添加了人工混响。

混响=反射器(名称,值每个属性集的名字到指定的价值.未指定的属性具有默认值。

例子:混响=反射镜(预延迟,0.5,“WetDryMix”,1)创建一个System对象,混响,预延时0.5秒,干湿混合比为1。

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

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

Pre-delay对混响是听到直接声音和第一次反射之间的时间。的价值预延迟与被建模房间的大小成正比。

可调:是的

数据类型:|

低通滤波器截止频率为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。一个udioFileReaderaudioDeviceWriter系统对象。使用读者的抽样率作为作者的抽样率。

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

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

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

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

混响=反射器
混响器属性:PreDelay: 0 HighCutFrequency: 20000 Diffusion: 0.5000 DecayFactor: 0.5000 highfrequency - damping: 5.0000e-04 WetDryMix: 0.3000 SampleRate: 44100

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

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

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

~isDone(fileReader)音频= fileReader();audioWithReverb =混响(音频);deviceWriter (audioWithReverb);范围([audioWithReverb(: 1),音频(:1)))结束发行版(fileReader)发布(deviceWriter)发布(范围)

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

frameLength = 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)发布(混响)

提示

createAudioPluginClassconfigureMIDI属性的可调属性压缩机面向用户的参数:

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

算法

全部展开

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

该算法有五个阶段。

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

参考文献

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

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

扩展功能

另请参阅

介绍了R2016a