主要内容

使用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]=midiid移动要识别的控件;类型^C中止。等待控制消息…完成
ctl =
1002
设备=
nanoKONTROL

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

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

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

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

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

例子

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

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

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

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

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

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

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

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

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

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

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

结论

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