teensy midi控制器

Eight DIY controlling Ableton Live

介绍

在这个项目中,我们通过在Teensy控制器和计算机之间传输标准的MIDI信号,将现实世界中的传感信息映射到计算机的程序和事件中。同样,我们也可以通过计算机控制现实世界的物品,例如LED、小型电机和继电器等。

按钮、旋钮和滑块是常用的与计算机互动的传感器,你也可以使用测量光的光敏电阻,测量压力的压力传感器(FSR)或感应触摸和电容变化的导电线——有许多方法都可以来测量和感知这个世界。

尽管MIDI通常用于乐器,但它是一种标准的通信协议,也可用于交互式装置、现场视频表演和动态雕塑。MIDI信号可以映射到许多软件——Max/MSP,Ableton,Reaper,Mad Mapper,Processing等任何具有MIDI输入/输出的软件。

如果这是你第一次接触电子元件和微控制器,可以先从小的项目做起。


midi

Image result for midi logo
cool logo, MIDI!

(乐器数字接口/Musical Instrument Digital Interface) 是80年代早期开发的一种连接音乐合成器的协议。MIDI既快速又可靠,它可以配合许多不同的软件程序和硬件设备工作。虽然与串行通信相比,MIDI的分辨率较低,但它有助于我们快速处理所有问题,并为大多数项目提供足够的灵活性。

我们选择Teensy,而不是Arduino或其他微控制器,是因为它可以很容易地配置为可兼容的MIDI设备。当你插入它,你的电脑会自动识别出Teensy是一个midi设备,它可以立即映射到你正在使用的任何程序。


teensy

Teensy是一个完整的基于USB接口的微控制器开发系统,体积非常小,能够实现多种类型的项目。它的所有编程都是通过USB接口完成的。

Teensy LC

我分享一些代码,你将它上传到Teensy后,可以使用它成为可兼容的MIDI控制器。在不更改代码的情况下,Teensy LC能够接受6个模拟输入、12个数字输入和5个数字输出。你可以通过修改代码使它能够接受多达10个模拟输入,23个数字输入/输出、9个触摸/电容输入——你可以根据特定的要求更改/扩展代码。


软件

在开始前你需要安装一些免费的软件…

  • 首先,下载并安装最新的Arduino IDE(集成开发环境),并通过解压缩下载的zip文件,并将Arduino程序拖到应用程序文件夹中进行安装。
  • 确保将Arduino IDE安装在你应用程序所在的位置。不要将它安装到下载文件夹中。
  • 运行Arduino程序!在安装下面的Teensyduino库之前,运行该程序一次是很重要的。
  • 接下来,下载Teensyduino程序并按照安装说明进行操作。Teensyduino是一个附加组件,它允许我们将Arduino软件与Teensy微控制器一起使用。
  • 最后,在这里下载项目代码和max补丁:
    • 打包下载(ARDIIO草图+ MIdimax MAX补丁)
    • 只下载Arduino sketch

连接传感器

(你可以单击下面的图片并在新页面中打开,可以更清晰地看到大图!)

首先,在面包板上连接电源(VCC)和地面(Gnd)线。当你将微控制器连接到计算机时,电路板会通过usb电缆供电。记得用导线将在面包板两边的总线连接,这样面包板两侧都接入了电源和地线。

如果你的Teensy已经焊上了排针,你可以将它放置并按压到面包板边缘上(要小心)。确保usb接口像上图那样朝外。

注意Teensy上不同类型引脚的位置。许多引脚有多个功能,它们可以在代码中指定。在本课程中,我们将重点介绍四种不同的引脚类型——数字(digital)、模拟(analog)、触摸(touch)和pwm。数字引脚既能输入也能输出,具体可以在代码中指定。

我已经上传了一些起始代码到你的微控制器。起始代码允许各种输入和输出方案,你可以随时更改代码以添加、减少或更改引脚分配。起始代码引脚定义如下…

以下是代码片段:

int const numDigPins = 10; // number of digital pins to send note values

int currentDig[numDigPins];

int digitalpin[] = {
  0,1,2,3,4,5,6,7,8,9 // which digital pins to use for sending note values
};

int digitalpitch[] = {
  40,41,42,43,44,45,46,47,48,49}; // midi note values corresponding to the digital pins

上面的代码定义了10个数字输入引脚。它们是引脚0、1、2、3、4、5、6、7、8和9。每个引脚对应一个MIDI信号,您可以将其定义为任意数字,但起始代码中默认的MIDI信号为40到49。所以,引脚0发送的MIDI信号为40(E2),引脚6发送的MIDI信号为46(Bb2)。


数字输入

数字输入向计算机发送一个二进制信号,我们可以认为它是“开/关”。数字输入对于触发事件(如播放声音或视频文件)或触发按键(如在键盘上)或更改某事物的状态都很有用。在这里我们将连接一个按钮和一个开关,这是最常见的数字输入案例。

上图展示了如何使用一个瞬时按钮或一个开关(这两个都为数字输入,接线方式相同)。在Teensy网站中这个页面的下面有一个关于连接数字输入(这里是一个按钮)的详细说明。上图中的按钮和开关是与面包板适配的样式,但按钮和开关有各种形状和形式——连接方法是一样的!

在上图中,我们可以看到按钮或开关的一个支脚与电源相连,另一个支脚通过一个10K电阻接地(注意开关有三个支脚,但大部分场景下我们只使用其中两个支脚,不用最外面的那个)。第三根电线将按钮或开关连接到Teensy的数字输入引脚上。在这种情况下,按钮连接到D1,开关连接到D2。当您按下按钮或拨动开关时,teensy将向计算机发送MIDI信号。


模拟输入

与数字输入只传递两个值不同(开/关,或高/低)的是,模拟输入可用于输出连续值的传感器,可以发送一个区间的值。模拟输入非常适用于速度、音量、饱和度等可变参数。下图显示了如何连接电位计和光敏电阻,这些都是典型的模拟输入。模拟输入有很多不同类型,一些极度复杂的传感器很难通过MIDI连接和使用,但大多数模拟传感器可以。要了解更多详细信息,请参阅Teensy网站上的模拟输入教程(或搜索与该主题相关的arduino资源)。