主要内容

使用MIDI控制面与Simulink模型交互

本示例展示了如何使用MIDI控制面作为Simulink®模型的物理用户界面,允许您使用旋钮、滑块和按钮与该模型交互。它可以在Simulink中使用,也可以在工作站上使用生成的代码。

简介

尽管MIDI最广为人知的用途是在音频应用程序中,但这个示例说明了MIDI控制面除了在音频应用程序中还有许多其他用途。在本例中,我们使用MIDI控制器提供一个用户可配置的值,该值可以在运行时变化,我们使用它来控制信号的幅度,并用于其他几个示例目的。这个例子并不全面,但是可以为控制面与模型交互的其他创造性使用提供灵感。

通过“MIDI控制面”,我们指的是物理设备

  1. 有旋钮,滑块和按钮,

  2. 并使用MIDI(乐器数字接口)协议。

许多MIDI控制器插入计算机的USB端口,并利用现代操作系统内置的MIDI支持。我们使用的特定MIDI控制面包括Korg nanoktrol和Behringer BCF2000。Korg设备的一个优势是它的成本:它在网上很容易买到,价格与一个好的鼠标相当。Behringer设备更昂贵,但具有增强的发送和接收MIDI信号的能力(Korg只能发送信号)。此功能可用于从模型发回数据,以保持控制面与模型的更改同步。我们使用此功能使控制面与模型的起点同步,以便最初对特定控件的更改不会在块输出中产生突然的变化。

要在本例中使用您自己的控制器,请将其插入计算机上的USB端口并运行模型audiomidi.请确保在插入控制设备时模型未运行。模型最初被配置为响应默认MIDI设备上任何控件的移动。这种结构是为了使这个示例更容易、更有可能为所有用户开箱即用。在实际用例中,您可能希望将单独的控件绑定到模型的每个子部分。为此,您可以使用midiid函数在模型中的适当块上显式设置MIDI设备参数,以识别特定的控件。例如,跑步midiid使用Korg nanokcontrol设备产生以下信息:

>> [ctl device]=midiid移动要标识的控件;类型^C中止。等待控制消息…完成
ctl =
1002
设备=
nanoKONTROL

的实际值细胞毒性t淋巴细胞这取决于你移动的是哪个控件。

如果要重复使用某个特定的控制器,则可能需要使用setpref命令设置该控制器为默认MIDI设备:

> > setpref(“midi”、“DefaultDevice”,“nanoKONTROL”)

这种功能在Linux上特别有用,因为您的控制面可能不会立即被识别为默认设备。

插入控制器后,点击audiomidi上的播放按钮。现在移动任何旋钮或滑块。当您移动任何旋钮或滑块时,您应该看到在模型的各个作用域中绘制的信号的变化。模型最初被配置为响应任何控件。

例子

接下来,将提供几个示例用例。每个例子都使用了基本的MIDI控制块来完成不同的任务。查看每个示例中适当的块的掩码,看看用例是如何完成的。要在您自己的模型中重用它们,只需将所需块的副本拖到您的模型中。

例1:MIDI控件作为用户定义的源

在模型的示例1中,我们看到了该控件的最简单用法。它可以充当用户控制下的源。原始块MIDI控件(在DSP源块库中),输出一个0到1之间的值。我们还创建了一个稍微修改过的块,通过在原始块上放置一个掩码来输出一个包含用户定义范围的值的源。

例2:调整单个信号电平的MIDI控件

在本例中,MIDI控件块的一个简单应用程序使用0到1范围作为给定信号的振幅控制。

例3:用用户控制的相对振幅将信号分割成两个流的MIDI控件。

在这个例子中,我们看到一个信号被分成两个流的例子:α\ u美元而且$\left (1-\alpha\right) u$在哪里\α美元用户可以通过控制面进行交互控制。

例4:MIDI控件将两个信号混合成一个

在这个例子中,我们创建了两个输入的任意线性组合:$y = u_1 + (1-) u_2$\α美元由用户与控制面交互设置。

例5:MIDI控制生成任意相位的正弦信号

最后,示例5允许用户使用控制面输入所需的相位。然后生成具有该相位的正弦信号。随着模型的运行,阶段可以交互地变化。

结论

提供这个模型是为了给如何使用MIDI Controls块与模型交互提供灵感。也可以使用其他的方法,包括与生成的代码一起使用。

Baidu
map