频率响应(FR)是表征音频设备或元件保真度的重要工具。
本例需要一个能够录制和播放音频的音频设备和一个适当的音频驱动程序。要了解有关示例如何记录和播放音频数据的更多信息,请参见audioDeviceReader
和audiodevicewriter.
.
FR测量将音频设备的输出电平与已知输入电平进行比较。基本FR测量由两种或三个测试音调组成:中间,高,低。
在该示例中,您可以通过从范围内的最低频率扫描正弦波来执行可听范围FR测量。平面响应表示与所有频率同样响应的音频设备。
在这个例子中,您通过播放音频信号来测量FRaudiodevicewriter.
然后记录下信号audioDeviceReader
.使用环回电缆将声卡的音频输出端口物理连接到音频输入端口。
首先,使用audioDeviceReader
System Object™和audiodevicewriter.
系统对象连接到音频设备。此示例使用STEINBERG UR44音频设备具有48 kHz采样率和1024个样本的缓冲区大小。
Samplere = 48E3;设备=“雅马哈斯坦伯格USB ASIO”;adr = audiodevicereader(......'采样率',采样率,......'设备',设备,......'司机'那'asio'那......“bitdepth”那'16 -bit Integer'那......“ChannelMappingSource”那'财产'那......'channelmapping',1);adw = audiodevicewriter(......'采样率',采样率,......'设备',设备,......'司机'那'asio'那......“bitdepth”那'16 -bit Integer'那......“ChannelMappingSource”那'财产'那......'channelmapping',1);
测试信号是每个帧的1024个样本的正弦波和0 Hz的初始频率。频率以50 Hz增量增加,以扫描可听范围。
samplesPerFrame = 1024;sineSource = audioOscillator (......“频率”,0,......'signerype'那'正弦'那......'采样率',采样率,......'samplesperframe',样品普通话);
使用dsp.spectrumanalyzer.
可视化您音频I / O系统的FR。在整个实验中使用频谱估计的20个平均值,分辨率带宽设定为50Hz。采样频率设定为48 kHz。
RBW = 50;Navg = 20;= dsp范围。简介(......'方法'那'过滤银行'那......'采样率',采样率,......'rbwsource'那'财产'那“RBW”RBW,......'spectralaverages'Navg,......'rusiancyspan'那'开始和停止频率'那......'Startfice',0,......“StopFrequency”,samplerge / 2,......'refernplotrate'假的,......“PlotAsTwoSidedSpectrum”假的,......'验证'那'日志'那......“PlotMaxHoldTrace”,真的,......'陈旧',真的,......'ylimits'20 [-110],......“YLabel”那'力量'那......“标题”那'音频设备频率响应');
为了避免设置时间对FR测量的影响,预运行您的音频循环5秒。
一旦实际的FR测量开始,通过可听频率范围扫描测试信号。使用Spectrum Analyzer可视化FR。
Tic.而toc <5 x = sinesource();adw(x);Y = ADR();范围(y);结尾count = 1;ReaderDrops = 0;作主= 0;而真正的如果newFreq = sineSource. count == Navg。频率+ RBW;如果newFreq > sampleRate / 2休息结尾sineSource。频率= newFreq;count = 1;结尾x = sinesource();作家runs = adw(x);[y,Readeroverruns] = ADR();ReaderDrops = ReaderDrops + Readeroverruns;作战= Writerdrops +作家;范围(y);count = count + 1;结尾释放(ADR)释放(ADW)释放(范围)
频谱分析仪显示两个图。第一绘图是最后记录数据的频谱估计。第二图是为每个频率仓库计算的频谱分析仪的最大功率,因为正弦波扫过频谱。要获得最大保持绘图数据和频率向量,可以使用对象功能getspectrumdata.
并仅绘制最大保持跟踪。
数据= getSpectRumData(范围);freqvector = data.frequencyvector {1};freqresponse = data.maxholdtrace {1};semilogx(freqvector,freqresponse);Xlabel('频率(Hz)');ylabel(“权力(dBm)”);标题('音频设备频率响应');
频率响应曲线表明在该示例中测试的音频设备在可听范围内具有平坦的频率响应。