主要内容

使用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设备] = MIDIID移动您希望识别的控制;键入^ c中止。等待控制留言......完成
ctl =
1002.
设备=
nanoKONTROL

实际价值CTL.这取决于你移动了哪个控制器。

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

>> SetPref('midi','defaultdevice','nanokontrol')

此功能对Linux特别有帮助,其中控制表面可能无法立即识别为默认设备。

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

例子

接下来,将提供几个示例用例。每个例子都使用基本的MIDI控制阻止完成不同的任务。在每个示例中查看适当块的掩码,以查看如何完成使用情况。要重新使用这些模型,请将所需块的副本拖到模型中。

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

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

示例2:MIDI控件调整单个信号的级别

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

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

在此示例中,我们看到一个示例,其中信号被分成两个流:$ \ Alpha U $$ \ left(1- \ alpha \右)u $在哪里$ \ Alpha $可以由用户与控制表面相互作用地控制。

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

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

实施例5:MIDI控件以产生具有任意阶段的正弦曲线

最后,示例5允许用户用控制表面输入所需的阶段。然后产生具有该阶段的正弦曲线。当模型运行时,该阶段可以相互作用。

结论

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