主要内容

wavetableSynthesizer

从单周期波形生成周期信号

描述

wavetableSynthesizer系统对象™生成一个周期信号与可调特性。单周期波形的周期信号定义缓存的波表你的属性wavetableSynthesizer对象。

生成一个周期信号:

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

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的<一个href="//www.tatmou.com/es/es/es/help/matlab/matlab_prog/what-are-system-objects.html" class="a">系统对象是什么?

创建

描述

waveSynth= wavetableSynthesizer创建一个波表合成仪系统对象,waveSynth默认的属性值。

waveSynth= wavetableSynthesizer (wavetableValue)设置<一个href="//www.tatmou.com/es/es/es/help/audio/ref/wavetablesynthesizer-system-object.html" class="intrnllnk">波表财产wavetableValue

waveSynth= wavetableSynthesizer (wavetableValue,frequencyValue)设置<一个href="//www.tatmou.com/es/es/es/help/audio/ref/wavetablesynthesizer-system-object.html" class="intrnllnk">频率财产frequencyValue

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

例子:waveSynth = wavetableSynthesizer(“振幅”2“DCOffset”, 2.5)创建一个系统对象,waveSynth,生成默认的正弦波形的振幅2和2.5的直流偏置。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,<一个href="//www.tatmou.com/es/es/es/help/matlab/ref/matlab.system.releasesystemobject.html">释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅<一个href="//www.tatmou.com/es/es/es/help/matlab/matlab_prog/system-design-in-matlab-using-system-objects.html" class="a">系统设计在MATLAB使用系统对象。

单周期波形,指定为一个向量的值。该算法的wavetableSynthesizer索引单循环波形合成周期波。

可调:是的

数据类型:|

生成的信号的频率在赫兹,指定为一个真正的标量大于或等于0。

可调:是的

数据类型:|

生成的信号幅度,指定为一个真正的标量大于或等于0。

生成的信号乘以所指定的值振幅在输出中,<一个href="//www.tatmou.com/es/es/es/help/audio/ref/wavetablesynthesizer-system-object.html" class="intrnllnk">DCOffset应用。

可调:是的

数据类型:|

归一化相位偏移生成的信号,指定为一个真正的标量值的区间[0,1]。是一个规范化的2π弧度间隔范围。

可调:没有

数据类型:|

每个元素值添加到生成的信号,指定为一个真正的标量。

可调:是的

数据类型:|

样品每帧的数量,指定为一个正整数的范围(1,<一个href="//www.tatmou.com/es/es/es/help/audio/ref/wavetablesynthesizer-system-object.html" class="intrnllnk">MaxSamplesPerFrame]。

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

可调:是的

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

最大数量的样品每帧,指定为一个正整数。这个属性设置为一个较低的值可以使用代码生成时节省内存。

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

在赫兹生成信号的采样率,指定为一个真正的积极的标量。

可调:是的

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

可调:没有

数据类型:字符|字符串

使用

描述

例子

波形= waveSynth ()生成一个周期信号,波形。信号的类型和属性的指定的算法wavetableSynthesizer系统对象,waveSynth

输出参数

全部展开

波形的输出波表合成仪,作为一个列向量返回与指定的长度<一个href="//www.tatmou.com/es/es/es/help/audio/ref/wavetablesynthesizer-system-object.html" class="intrnllnk">SamplesPerFrame指定的属性和数据类型<一个href="//www.tatmou.com/es/es/es/help/audio/ref/wavetablesynthesizer-system-object.html" class="intrnllnk">OutputDataType财产。

数据类型:|

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

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

createAudioPluginClassconfigureMIDI函数映射的可调谐特性wavetableSynthesizer系统对象面向用户的参数:

财产 范围 映射 单位
频率 (0.1,20000) 日志 赫兹
振幅 [0,10] 线性 没有一个
DCOffset (-10年,10) 线性 没有一个

例子

全部折叠

定义一个单循环波形和情节。

值= 1:0.1:1;singleCycleWave =(100 1) *的值;singleCycleWave =重塑(singleCycleWave元素个数(singleCycleWave), 1);情节(singleCycleWave)包含(“指数”)ylabel (“振幅”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

创建一个波表合成仪,waveSynth,使用单周期波形生成阶梯波。指定一个10赫兹的频率。

waveSynth = wavetableSynthesizer (singleCycleWave 10);

创建时间范围可视化生成的阶梯波waveSynth

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

波表合成仪放置在一个音频流循环。增加你的阶梯波的频率在10 Hz增量。

counter = 0;(柜台< 1 e4) counter = counter + 1;staircaseWave = waveSynth ();范围(staircaseWave)如果国防部waveSynth(计数器,1000)= = 0。频率= waveSynth。频率+ 10;结束结束

一个音频文件并将其保存到样品波表财产的wavetableSynthesizer系统对象™。使用波表合成器来操纵你的音频样本。

在整个音频文件。从音频剪辑出一个有趣的声音,然后玩它。

(音频、fs) = audioread (“MainStreetOne-16-16-mono-12secs.wav”);aSound =音频(2.5 e4:5e4);声音(aSound fs)

创建一个波表合成器使用您的音频剪辑。的持续时间引擎音频剪辑元素个数(aSound) / fs秒。在wavetableSynthesizer,设置频率属性1 /(剪辑时间)。现在生成的信号回放以同样的速度记录。

时间=元素个数(aSound) / fs;waveSynth = wavetableSynthesizer (“波表”aSound,“SampleRate”fs,“频率”1 /持续时间);

创建一个audioDeviceWriter写信给你的音频设备。

deviceWriter = audioDeviceWriter (“SampleRate”fs);

在一个循环中,弹波表合成仪设备。三秒后,开始增加波表的频率合成器。6秒后,开始减少波表的频率合成器。

timeElapsed = 0;timeElapsed < 9 audioWave = waveSynth ();deviceWriter (audioWave);如果(timeElapsed > 3) & & (timeElapsed < 6) waveSynth。频率= waveSynth。频率+ 0.001;elseif6 waveSynth timeElapsed >。频率= waveSynth。频率- 0.002;结束timeElapsed = timeElapsed + waveSynth.SamplesPerFrame * (1 / fs);结束

修改波表财产的wavetableSynthesizer对象流处理。可视化波表,生成的音频。

创建一个单循环的波形wavetableSynthesizer索引。创建一个波表合成器对象。

t = 0:0.001:1;指数= 5;波表= [t。^指数,fliplr ^指数(t)) - 0.5;waveSynth = wavetableSynthesizer (“波表”、波表);

创建一个dsp.ArrayPlot对象图的波表被修改。创建一个audioDeviceWriter对象听波表合成器输出信号。

arrayPlotter = dsp.ArrayPlot (“YLimits”[1],“PlotType”,“行”);deviceWriter = audioDeviceWriter;

在一个音频流循环,逐步修改波表财产的波表合成器和情节。调用合成器输出波形和波形音频设备。

抽搐toc < 10指数=指数- 0.01;waveSynth。波表=(t.^abs(exponent),fliplr(t.^abs(exponent))] - 0.5; arrayPlotter(waveSynth.Wavetable') deviceWriter(waveSynth());结束

发行版(deviceWriter)

创建一个wavetableSynthesizer生成一个波形。创建一个timescope可视化的波形。创建一个audioDeviceWriter写音频你的声卡。

fs = 44.1 e3;wvSynth = wavetableSynthesizer (“SampleRate”fs);范围= timescope (“SampleRate”wvSynth.SampleRate,“TimeSpanSource”,“属性”,“时间间隔”,1“YLimits”(2,2),“TimeSpanOverrunAction”,“滚动”,“ShowGrid”,真正的);deviceWriter = audioDeviceWriter (“SampleRate”,wvSynth.SampleRate);

调用parameterTuner打开一个界面波表的调优参数合成器而流。

parameterTuner (wvSynth)

在一个音频流循环:

  1. 打电话给波表没有参数合成器输出一帧的数据。

  2. 可视化数据使用的时间范围。

  3. 写的音频帧为倾听您的音频设备。

而流、波表的调优参数合成器和听的效果。

时间= 15;numIterations =圆(wvSynth.SampleRate * / wvSynth.SamplesPerFrame持续时间);i = 1: numIterations audioOut = wvSynth ();范围(audioOut) deviceWriter (audioOut);drawnowlimitrate%更新所需参数结束

作为一项最佳实践,完成后释放对象。

发行版(deviceWriter)发布(wvSynth)发布(范围)

算法

全部展开

wavetableSynthesizer系统对象综合使用缓存的单周期信号波形,波形指定属性和阶段的记忆。

扩展功能

版本历史

介绍了R2016a

全部展开