主要内容

audioOscillator

生成正弦波、方波和锯齿波

描述

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

要产生可调谐波形:

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

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

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

创建

描述

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

osc= audioOscillator (signalTypeValue)设置SignalType财产signalTypeValue

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

osc = audioOscillator (___名称,值)每个属性集的名字到指定的价值.未指定的属性具有默认值。

例子:osc = audioOscillator(“SignalType”、“正弦”,“频率”,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]范围内的标量。

方波占空比为波形高于中值振幅的一个周期的百分比。一个DutyCycle的1或0等效于直流偏置。

可调:是的

依赖关系

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

数据类型:|

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

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

可调:是的

依赖关系

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

数据类型:|

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

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

可调:是的

数据类型:||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 确定系统对象在使用
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象
一步 运行系统对象算法

createAudioPluginClassconfigureMIDI属性的可调属性audioOscillator面向用户参数的系统对象:

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

例子

全部折叠

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

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

osc = audioOscillator;

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

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

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

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

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

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

笔记=结构(“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);

创建audioOscillatoraudioDeviceWriter对象。使用默认设置。

osc = audioOscillator;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;抽搐我< numel(melody) tone = osc();aDW(音);如果toc >= noteDuration i = i + 1;osc。频率=旋律(i);抽搐结束结束发布(osc)发布(aDW)

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

创建dsp。一个udioFileReaderaudioDeviceWriter用于从音频文件读取并写入音频设备的系统对象。创建一个双四滤波器对象来对音频信号应用低通滤波。

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

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

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

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

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

作为一种最佳实践,一旦完成就发布对象。

发行版(osc)发布(fileReader)发布(deviceWriter)

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

扩展功能

介绍了R2016a