主要内容

audioOscillator

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

描述

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

生成可调谐波形:

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

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

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

创建

描述

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

osc= audioOscillator (signalTypeValue设置SignalType财产signalTypeValue

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

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

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

属性

全部展开

除非另有说明,否则属性是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,192000]。

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

可调:是的

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

生成波形的采样率,单位为Hz,表示为大于2倍的正标量频率

可调:是的

数据类型:|

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

可调:是的

数据类型:字符|字符串

使用

语法

描述

例子

波形= 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 = audioooscillator;

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

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

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

计数器= 0;(counter < 1e4) counter = counter + 1;sininewave = 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);

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

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 < nummel(旋律)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 = audioooscillator (“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中引入