主要内容

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

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

介绍

虽然MIDI最为人所知的是它在音频应用程序中的使用,但这个例子说明了MIDI控制面在音频以外的许多其他应用程序中都有使用。在本例中,我们使用MIDI控制器来提供用户可配置的值,该值在运行时可能会发生变化,我们使用它来控制信号的幅度,并用于其他一些说明性目的。此示例并不全面,但可以为其他创造性地使用控制曲面与模型交互提供灵感。

所谓“MIDI控制面”,我们指的是

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

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

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

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

>>[ctl device]=MIDID移动要识别的控件;键入^C以中止。正在等待控制消息。。。完成
ctl=
1002
装置=
纳米康特罗

实际价值ctl取决于您移动的控件。

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

>>setpref('midi'、'DefaultDevice'、'nanoKONTROL')

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

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

例子

接下来,将提供几个示例用例MIDI控件阻止以完成不同的任务。查看每个示例中相应块的掩码,以了解用例是如何完成的。要在您自己的模型中重用这些块,只需将所需块的副本拖动到您的模型中。

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

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

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

在本例中,MIDI控制块的直接应用使用0到1范围作为给定信号的振幅控制。

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

在本例中,我们看到一个信号被分成两个流的示例:$\alpha u$$\left(1-\alpha\right)u$哪里$\alpha$可以由用户通过控制面交互控制。

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

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

示例5:MIDI控件生成具有任意相位的正弦曲线

最后,示例5允许用户使用控制面输入所需的相位。然后生成具有该相位的正弦曲线。该相位可以在模型运行时以交互方式变化。

结论

提供此模型是为了启发人们如何使用MIDI控件块与模型交互。其他用途是可能的,并鼓励使用,包括与生成的代码一起使用。