主要内容

audioOscillator

生成正弦,方形和锯齿波形

描述

audioOscillator系统对象™生成可调波形。典型的用途包括为试验台生成测试信号,以及为音频效果生成控制信号。的属性audioOscillator对象指定生成的波形类型。

生成可调波形:

  1. 创建audioOscillator对象并设置其属性。

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

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

创建

描述

osc= audioOscillator创建一个音频振荡器系统对象,osc,使用默认属性值。

osc= audioOscillator (signalTypeValue设置SignalType财产signalTypeValue

osc= audioOscillator (signalTypeValuefrequencyValue设置频率财产frequencyValue

osc = audio振荡器(___名称,值设置每个属性的名字到指定的价值.未指定的属性有默认值。

例子:osc = audioooscillator ('SignalType','sin ','Frequency',8000,'DCOffset',1)创建一个System对象,osc,产生8 kHz正弦波,直流偏置为1。

属性

全部展开

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

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

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

波形类型由您的audioOscillator对象,指定为的正弦“广场”,或“锯齿”

波形是使用指定的算法生成的广场,锯齿波功能。

可调:没有

数据类型:字符|字符串

生成波形的频率(以Hz为单位),指定为大于或等于0的实标量或实标量的矢量。

  • 对于正弦波形,请指定频率作为标量或长度向量NumTones

  • 对于方波,请指定频率作为一个标量。

  • 对于锯齿波形,请指定频率作为一个标量。

可调:是的

数据类型:|

生成的波形的振幅,指定为大于或等于0的实标量或实标量的矢量。

  • 对于正弦波形,请指定振幅作为长度的向量NumTones

  • 对于方波,请指定振幅作为一个标量。

  • 对于锯齿波形,请指定振幅作为一个标量。

所生成的波形乘以所指定的值振幅在输出前DCOffset应用。

可调:是的

数据类型:|

生成波形的归一化相位偏移,指定为值在[0,1]范围内的实标量或实标量的矢量。范围是一个归一化的2π-弧度区间。

  • 对于正弦波形,请指定PhaseOffset作为长度的向量NumTones

  • 对于方波,请指定PhaseOffset作为一个标量。

  • 对于锯齿波形,请指定PhaseOffset作为一个标量。

可调:没有

数据类型:|

添加到生成的波形的每个元素的值,指定为实标量或实标量的向量。

  • 对于正弦波形,请指定DCOffset作为长度的向量NumTones

  • 对于方波,请指定DCOffset作为一个标量。

  • 对于锯齿波形,请指定DCOffset作为一个标量。

可调:是的

数据类型:|

纯正弦波音调数求和,然后由音频振荡器产生。

所指定的值生成单个音调频率振幅PhaseOffset,DCOffset

可调:没有

依赖关系

若要启用此属性,请设置SignalType的正弦

数据类型:|

方形波形占空比,指定为范围[0,1]中的标量。

方形波形占空比是波形高于中值振幅的一个周期的百分比。一个DutyCycle1或0的误差相当于直流偏置。

可调:是的

依赖关系

若要启用此属性,请设置SignalType“广场”

数据类型:|

锯齿宽度,指定为范围[0,1]中的标量。

锯齿的宽度确定锯齿波形周期中最大值出现的点。

可调:是的

依赖关系

若要启用此属性,请设置SignalType“锯齿”

数据类型:|

每帧的采样数,指定为范围为[1,MaxSamplesPerFrame]。

这个属性决定了向量的长度audioOscillator对象输出。

可调:是的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

每帧的最大采样数,指定为正整数。在使用代码生成时,将此属性设置为较低的值可以节省内存。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

生成的波形的采样率(以Hz为单位),指定为大于指定值的两倍的正标量频率

可调:是的

数据类型:|

生成的波形的数据类型,指定为“双”“单一”

可调:是的

数据类型:字符|字符串

使用

语法

描述

例子

波形= osc ()生成波形输出,波形.波形的类型由System对象的算法和属性指定,osc

输出参数

全部展开

类所指定长度的列向量返回SamplesPerFrame财产。

数据类型:|

对象的功能

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

发行版(obj)

全部展开

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

createAudioPluginClass而且configureMIDI属性的可调属性audioOscillator面向用户参数的系统对象:

财产 范围 映射 单位
频率 (0.1, 20000) 日志 赫兹
振幅 [0, 10] 线性 任何单位
DCOffset (-10年,10) 线性 任何单位
DutyCycle(设置时可用SignalType“广场” [0, 1] 线性 任何单位
宽度(设置时可用SignalType“锯齿” [0, 1] 线性 任何单位

例子

全部折叠

使用audioOscillator产生一个可变频率的正弦波。

创建一个音频振荡器来产生正弦波。使用默认设置。

osc = audioooscillator;

创建一个时间范围来可视化音频振荡器产生的可变频率正弦波。

Scope = timescope(“SampleRate”osc。SampleRate,“TimeSpanSource”“属性”“时间间隔”, 0.1,“YLimits”[-1.5, 1.5],“TimeSpanOverrunAction”“滚动”“ShowGrid”,真的,“标题”“变频正弦波”);

将音频振荡器置于音频流循环中。以50赫兹为增量增加正弦波的频率。

计数器= 0;(counter < 1e4) counter = counter + 1;sineWave = osc();范围(sineWave);如果国防部osc(计数器,1000)= = 0。频率= osc。频率+ 50;结束结束

以有规律的间隔调整音频振荡器的频率以创建旋律。播放旋律到您的音频输出设备。

创建一个结构来保存旋律中音符的频率值。

注释= struct(“C4”, 261.63,E4的, 329.63,“G4sharp”, 415.30,“A4”, 440,“B4”, 493.88,“C5”, 523.25,“D5”, 587.25,“D5sharp”, 622.25,“E5”, 659.25,“沉默”, 0);

创建audioOscillator而且audioDeviceWriter对象。使用默认设置。

osc = audioooscillator;aDW = audioDeviceWriter;

用Fur Elise的初始旋律创建一个矢量。

旋律=[音符。沉默的笔记。沉默,笔记。E5笔记。D5sharp笔记。E5笔记。D5sharp笔记。E5笔记。B4笔记。D5笔记。C5笔记。A4笔记。A4笔记。沉默笔记。C4笔记。E4的笔记。A4笔记。B4笔记。B4笔记。沉默笔记。E4的笔记。G4sharp笔记。B4笔记。C5笔记。C5笔记。沉默];

指定以秒为单位的音符持续时间。在音频流循环中,调用音频振荡器并将声音写入音频设备。更新音频振荡器的频率noteDuration时间的脚步跟着旋律走。作为最佳实践,一旦完成就释放对象。

noteDuration = 0.3;I = 1;抽搐I < numel(旋律)tone = osc();aDW(音);如果toc >= noteDuration i = i + 1;osc。频率=旋律(i);抽搐结束结束发布(osc)发布(aDW)

创建一个低频振荡器(LFO)低通滤波器,使用audioOscillator作为控制信号。

创建dsp。一个udioFileReader而且audioDeviceWriter从音频文件读取并写入音频设备的系统对象。创建一个双方滤波器对象,应用低通滤波到您的音频信号。

fileReader = dsp。AudioFileReader (“文件名”“Engine-16-44p1-stereo-20sec.wav”);deviceWriter = audioDeviceWriter(“SampleRate”, fileReader.SampleRate);lowpassFilter = dsp。BiquadFilter (“SOSMatrixSource”输入端口的“ScaleValuesInputPort”、假);

创建一个音频振荡器对象。音频振荡器控制音频流环路中低通滤波器的截止频率。

osc = audio振荡器(“SignalType”“锯齿”“DCOffset”, 0.05,“振幅”, 0.03,“SamplesPerFrame”, fileReader。SamplesPerFrame,“SampleRate”, fileReader。SampleRate,“频率”5);

在循环中,通过低通滤波器对音频信号进行滤波。将输出信号写入音频设备。

~isDone(fileReader) audioIn = fileReader();ctrlSignal = osc();[B,A] = designVarSlopeFilter(48,ctrlSignal(end));audioOut = lowpassFilter(audioIn,B,A);deviceWriter (audioOut);结束

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

release(osc) release(fileReader) release(deviceWriter)

有关LFO过滤器的更完整实现,请参见audiopluginexample。LFOFilter音频插件示例库

扩展功能

版本历史

在R2016a中引入

全部展开