主要内容

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

这个例子展示了如何使用MIDI控制界面作为Simulink®模型的物理用户界面,允许您使用旋钮、滑块和按钮与模型进行交互。金宝app它可以在Simulink中使用,也可金宝app以与在工作站上运行的生成代码一起使用。

介绍

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

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

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

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

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

要使用您自己的控制器,请将其插入计算机的USB端口并运行模型audiomidi.当您插入控制装置时,确保模型没有运行。该模型最初被配置为对默认MIDI设备上的任何控件的移动做出响应。这种构造的目的是使这个示例更容易为所有用户提供开箱即用的服务。在真实的用例中,您可能想要将单个控件绑定到模型的每个子部分。为此,你可以使用midiid函数显式地在模型中的适当块上设置MIDI设备参数,以识别特定的控件。例如,跑步midiid使用Korg nanoKONTROL设备产生以下信息:

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

的实际价值细胞毒性t淋巴细胞这取决于你移动了哪个控制器。

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

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

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

插入控制器后,点击audiomidi上的play按钮。现在移动任何旋钮或滑块。当您移动任何旋钮或滑块时,您应该看到在模型中不同范围内绘制的信号的变化。模型最初被配置为响应任何控件。

例子

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

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

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

例2:MIDI控制调整单一信号的电平

在这个例子中,MIDI控制块使用0到1的范围作为给定信号的幅度控制。

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

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

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

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

示例5:MIDI控制生成任意相位的正弦波

最后,示例5允许用户使用控件界面输入所需的阶段。然后产生一个具有那个相位的正弦信号。这个阶段可以随着模型的运行而交互变化。

结论

提供这个模型是为了启发如何使用MIDI Controls块与模型交互。其他的使用是可能的,也鼓励使用,包括与生成的代码一起使用。