此示例演示如何使用MIDI控件界面作为Simulink®模型的物理用户界面,允许您使用旋钮、滑块和按钮与该模型交互。它可以在Simulink中使用,也可以在工作站上运行生成的金宝app代码。
虽然MIDI最为人所知的是它在音频应用程序中的使用,但这个例子说明了MIDI控制面在音频以外的许多其他应用程序中都有使用。在本例中,我们使用MIDI控制器来提供用户可配置的值,该值在运行时可能会发生变化,我们使用它来控制信号的幅度,并用于其他一些说明性目的。此示例并不全面,但可以为其他创造性地使用控制曲面与模型交互提供灵感。
所谓“MIDI控制面”,我们指的是
有旋钮、滑块和按钮,
并使用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控件(在DSP源块库中)输出0到1之间的值。我们还创建了一个稍加修改的块,方法是在原始块上放置一个掩码,以输出一个包含用户定义范围的值的源。
在本例中,MIDI控制块的直接应用使用0到1范围作为给定信号的振幅控制。
在本例中,我们看到一个信号被分成两个流的示例:和哪里可以由用户通过控制面交互控制。
在本例中,我们创建两个输入的任意线性组合:具有由用户与控制面交互设置。
最后,示例5允许用户使用控制面输入所需的相位。然后生成具有该相位的正弦曲线。该相位可以在模型运行时以交互方式变化。
提供此模型是为了启发人们如何使用MIDI控件块与模型交互。其他用途是可能的,并鼓励使用,包括与生成的代码一起使用。