Vectr - 3D手势控制器和音序器。

简介

Vectr是一种用于模块合成器的三维传感控制器和音序器。它是开源的,所以你可以用它来控制任何事情。它感觉你的手在它前面,并使用位置信息产生模拟控制信号,可以控制任何合成参数。它不仅仅是一个控制器。它可以记录序列、存储它们、加载它们、操作它们、向前、向后播放它们,等等。它可以同步记录、回放和对外部控制信号的重复配音,也可以用作模块合成器中的中心部件,生成控制信号来同步整个系统。我正在研究一些表演模式,比如抓拍、现场配音、冷冻等等。输出可按比例缩放、量子化、转速受限、反转。

该固件的2.0版本于2015年5月发布,包括时间量化和步骤排序等一系列新特性。

当我看到Microchip新的3D传感技术时,我立刻就知道了我想要构建的东西。我设想用全新的精度控制音频,具有巨大的动态可能性。我花了最后一年开发它,想出了扩大音乐的可能性和VECTR作为乐器有用的方法。但是,Vectr也是开源的硬件和软件,所以你可以使用它的任何功能来满足你自己的目的。我曾设想过这种技术的各种应用,时间是愿意的,总有一天我会创造出来的。玩起来很直观。你的行动结果是显而易见的。令人惊讶的是,这种新的接口技术变得多么自然。

VECTR使用Microchip的MGC31 30三维传感技术与定制开发的传感器电路板。它能够解决一个物体在传感器上的位置,其体积大约为3.5xx3.5xx6in,具有16位精度。我使用PIC32微控制器读取数据,它正在运行FRIERTOS。微控制器管理所有的系统任务,与所有外围集成电路进行交互并控制所有不同的操作模式。使用电容感应比电容式触摸屏敏感的几个数量级执行3D感测。使用多个电极都受到相同传输的影响,传感器能够检测在静态电场中的扰动位置。

VECTR使用四位16位DAC来产生模拟控制电压在-5V至+5V的范围内。对于3D感测的每个基本方向都有一个模拟输出。

VECTR使用36个LED来进行视觉反馈。它们相对于传感器前面的物体的位置而改变亮度。它们是安装在激光切割丙烯酸片周边的直角LED,其中激光点刻在前面,以产生3D浮动效果。LED使用由微控制器驱动的PWM信号驱动的移位寄存器和MOSFET多路复用。亮度算法和LED驱动实际上是一个相当密集的过程,但结果相当令人着迷。

LED也用于指示通过菜单系统的进展,允许用户改变各种参数和行为。每个模拟输出是独立可配置的。模拟输出范围可以被缩放并限制在0至+5V或-2.5V到+2.5V等范围内。模拟输出可以量化,使得电压在1伏每倍频程方案中的音符值下降。音符可以在不同的音阶上,如色、大、或五音调。将量程设置与量化相结合,可以播放不同倍频程长度的音阶。设置所有三个输出量化和播放多个振荡器可以有相当惊人的结果。

VECTR还可以记录手部运动序列。它包含串行SRAM以记录长达50秒。它存储来自3D传感器的原始数据,因此菜单系统中可用的任何参数都可以在记录序列之后被调整。这提供了大量的设施记录,然后操纵序列活。用户可以通过做圆形手势来加速和减慢顺序,顺时针以更快和逆时针为慢。

Vectr有一个重播能力,你可以重新记录每一个输出单独而不影响其他人,而他们正在播放。通过这种方式,您可以创建具有连续性的动态序列。然后,VECTR还具有闪存,用于存储序列以在断电后将其返回。VECTR可以保持多达5个记录序列,可以随时被召回。每个记录的序列用它存储所有的菜单设置。

然后,有性能模式。有序列器模式,你可以快速访问多达四个记录序列,并无缝切换它们之间。有快速静音模式,您可以打开和关闭个别输出。前面提到过的重播模式。最后,有一个“划痕”模式,你可以用手的动作来回地以不同的速度玩一个序列。

Vectr还可以读取一个模拟电压从0到+5V。这个电压输入可以用来操纵模拟输出并改变回放参数,比如回放速度、循环结束或循环中的当前位置。把振荡电压输入到这个输入中可能会产生一些惊人的音效。

所有先前提到的行为也可以与外部信号同步。使用上升沿触发器,例如记录的开始和结束,或重放或重排的开始和结束,都可以在外部精确控制,以形成完全同步的循环。VECTR具有类似的输出能力,以向其他模块发送定时信息,因此Vectr可以用作模块化合成器配置中的核心部件。它可以同步系统的其余部分和它的回放。

这里有一些关于Vectr硬件设计的信息。VECTR包含两个电路板。一个用于传感器和LED,另一个基本上是:微控制器、存储器、DAC、ADC、千斤顶、模拟电路、电源电路。

这个示意图显示了MGC31 30感测电路。它还具有一个良好的安静电源和一个通过电路板之间的信号连接器的低PSRR调节器。

这个示意图显示了LED复用方案。在三个移位寄存器上有36个LED。然后将LED分组成五个MOSFET的组。每个LED仅在1/5的时间和FET占空比是由PWM从微控制器驱动。

下面是包含上述两个电路的电路板的外观。传感器由围绕中心形成正方形的电极形成。传感器IC安装在传感器中部的背面。周围是所有的LED和所有的多路复用电路。

这个示意图显示了Vectr的模拟电路与四位16位DAC,ADC和信号调理电路,以获得模拟信号进出。模拟输出的范围可以从-5V到+5V,而其他输入是电平移位,以保护微控制器不被过电压。

这个示意图显示了Vectr的微控制器,一个PIC32微控制器。它还显示了RAM和闪存,以及照明开关和旋转编码器。

这是主板的样子。微控制器在底部附近。千斤顶都放在左边两列。在他们右边是所有模拟电路。

Vectr的固件是用C编写的,使用FreeRTOS。我喜欢使用RTOS作为基本的编程结构。不是所有的程序都需要一个程序,但是Vectr有很多的任务要处理接口、内存、数据转换和处理。

我已经构造了VECTR的软件,以包含每个主要功能的任务,并使中断系统相当大的使用,让系统知道硬件任务何时完成或某些硬件参数已经改变。例如,需要读取MGC31 30。当数据可用时,它向微控制器发出信号。该信号被馈送到微控制器上的外部中断,然后将信号量发送给MGC31 30任务,以通过I2C总线读取数据。在I2C过程中有许多阶段。VCETR不使用微控制器等待每个阶段完成,而是使用信号量的RTOS功能,使任务等待,将处理器控制分配给其他任务。这种设计方法贯穿于Vectr的固件,用于处理任务、DAC和ADC、存储器通信、菜单系统、交换机和控制输入。

我试着用一种清晰的方式编写它,必要时将函数分解成碎片,但是函数之间需要相当多的纠缠,因为需要一些依赖。然而,MGC31 30驱动程序完全封装和免费使用。


相关文章