我们如何使用神经网络v 2.0播放音乐

哈Ha

这篇文章是关于如何将神经网络带入现实生活的。 如果您喜欢应用机器人技术和工程技术,或者喜欢神经元,或者使Arduin上的LED闪烁,这将很有趣。 但是,这是一个关于如何将许多不同的组件和技术组装成一个整体并从中构想的故事。 细节剪下。

图片

一年半以前,我们做了一个项目,使用循环神经网络生成音乐。 描述了如何。 今年,Eesti Kontsert(目标机构,该国最大的演出组织者)举办了一系列的“技术与音乐”音乐会,我们受邀在该系列中进行表演。 我们是MODULSHTEIN小组(Alexander Zhedelev,Marten Altrov和Alexey Seminikhin) ,以及从事机械工程的Alexander Potuzhny,我是Playtech的软件架构师Alexander Tavgen。 如果在先前的项目中所有事情都发生在一台机器中,并且来自模型的信号都显示在样本上,那么该项目的想法就是将信号带出并连接到现场仪器。 由于我们使用模型来产生节奏,因此机器将在其上演奏的乐器是鼓。

我们将使用的鼓是IDEM视听演示中剩下的道具的一部分。

图片

一点介绍


音乐(如语言,尤其是口头语言)具有临时结构。 这是节奏,间隔,动态。 如果我们将音乐序列模拟为某些符号流,那么为了模拟这种时间结构,循环神经网络是合适的。 Andrej Karpathy的著名文章很好地介绍了递归神经网络背后的原理,并且有很多实例。 在Linux源代码上训练的唯一网络是什么? 或是接受过唐纳德·特朗普(Donald Trump)演讲训练模特。

MIDI协议非常适合将音乐表示为字符流。 因此,我们需要将MIDI信号转换为模型的输入,然后将模型的输出转换回MIDI。 然后,来自Google的Magenta项目得以救出,该项目于2016年宣布。

本质上,Magenta为TensorFlow模型提供了MIDI接口。 虚拟MIDI端口的创建是为了响应呼叫(大致而言)-输入和输出。 您可以运行多个并行端口。 您可以将TensorFlow模型连接到每对端口。 所谓的捆绑文件是TensorFlow中的训练检查点和图形元数据。 因此,您可以简要描述交互过程。

图片

我在这里详细介绍了它。

但是,如果在上一个项目中我们显示了从模型到样本的MIDI信号,那么这次我们需要输出它们并将它们连接到电动机。 也就是说,一切都可以这样表示:Tensorflow-洋红色-MIDI-串行微控制器-执行器。 前三个步骤已经采取,所有注意力都转移到了后三个链接上。

在考虑如何转换和发送来自机器的信号之前,您需要选择一个可以接收信号并控制执行器的微控制器。 最简单的选择是采用Arduino兼容平台,尽管任何基于ATMega的控制器都适用。

Arduino可以通过USB读取串口,其任务是将MIDI信号转换为串口协议。 有一个打开的项目hairless-midiserial projectgus.imtqy.com/hairless-midiserial,它允许您将MIDI转换为串行设备,以进行输入和输出。 总体而言,MIDI的便利之处在于您可以非常灵活地控制和连接不同的设备。

图片

好了,那么您需要获取工具并开始尝试各种设计方案。

为了评估可能的延迟和同步问题,必须完成第一个原型。

信号传到Arduino,根据音符的高度,它显示在不同的输出上。 为了进行测试,我整理了一个经典的基于MOSFET的电路。 MOSFET大致是一个晶体管,可让您控制大电流。 发出控制信号,就可以打开和关闭晶体管。

图片

好吧,什么样的Arduino项目没有闪烁的LED。 我设置了LED,以便在出现问题时了解它们在哪里,来自Arduino的信号是否到达MOSFET输入。 一般来说,它看起来像这样,猫们真的很喜欢它。



一般而言,没有明显的延迟和连接问题,但是澄清了其他计划的问题。 电磁阀不适合从大鼓中提取声音,因为它们缺乏冲击力。 5伏电磁阀本身。 决定寻找更强大的东西。 下一个选择是汽车锁中使用的电动机。 它们足够强大,牵引力好,价格便宜。

图片

但是有一点。 车门电机不仅具有向前行程,而且具有反向行程。 要击败它们,您需要执行非常快的向前-向后移动,但是对于向前-向后您不能只做一个MOSFET,因为您需要更改电动机( H桥 )的电流方向,以便它在两个方向上都可以移动,所以我买了Arduino的电机护罩,与Adafruit兼容。 这种类型,仅在一个芯片上。

图片

这是已经带有电桥和车门电机的版本。


现在关于通用力学


Arduino上的LED闪烁是一回事,但是我们必须构建一个可以播放音乐会时间的系统。 这就是困难。

  1. 设计的刚性。 电机足够强大,必须安装在其上的安装座必须承受一个小时的振动。


    图片

    我们尝试了3或4种设计方案,直到找到可接受的方案。 带有摇杆的挂钩不应该是刚性的,因为摇杆应该具有从鼓上弹回的弹性,而刚性的挂钩会大大降低声音。 我们使用建筑熨平板。
  2. 影响本身的机制。 它包括快进,暂停和后退。 但是,该运动的间隔应该有多大? 这只能凭经验确定。 而且,间隔取决于棒的附接位置,所显示的音符。 我们通过反复试验确定间隔。 为了清楚起见,Arduino代码中负责打击的部分看起来像这样。

    图片
  3. 所有马达均不同。 电动机本身具有机械驱动,因此会产生明显的噪声。 但是,如果电动机偏离冲击轴,噪音会变得更强,这会增加电动机故障的风险。 考虑到振动和冲击力,我们再次依靠结构的刚度。 Alexander Potuzhny在改善固定装置方面做了很多工作。
  4. 重置控制器以防止杂散干扰。 由于会有许多设备,因此周围的电缆和电动机本身都会发出噪音。

由于马达是由音乐驱动的,因此可以制造出性玩具。 他上演了他最喜欢的音乐,例如《帝国进行曲》,并...

组装和排练


最后的组装和排练是在爱沙尼亚俄罗斯剧院的音乐工作室进行的。

图片



神经网络排练的问题还在于网络本身是不确定的。 交互以呼叫响应模式进行,并且每次网络应答都会不同-因此,不可能演练最终版本。

音乐概念


为了表演,我们还准备了一个视频。 最初,我们还考虑过通过MIDI控制视频流,以播放叠加并减少GAN生成的视频-但是我们没有设法为第二台机器创建环境并连接到模型。 因此,表演的每个部分的视频都是预先渲染的; 使用GAN和覆盖管理。 一切与主midi_clock同步。


对于直播,我使用了VDMX5,视频流通过该VDMX5。

图片

演出开始前不久,他们在电视上做了演讲。


在爱沙尼亚音乐厅看到海报是很不寻常的(就像莫斯科的莫斯科大剧院一样)。

图片

图片

性能表现


表演本身是在SõltumatuTantsu Lava的舞台上进行的,这是位于Vaba Lava建筑群中Telliskivi创意区的一个小大厅(约100多人)。 仅安装和设置所有设备就花费了4个多小时。 几乎已经在晚上完全连接。


而且已经没有光了。


尽管宣传晚,大厅还是满的。 我站在舞台的一边,控制着视频流。 音乐会本身取得了巨大的成功-模特的运作方式,声音和视频的播放方式。 听众说,他们在10到15分钟内被送去了旅行。 :)一切都变得非常大气。

图片

图片

图片

图片


图片

www.Audiokinetica.com

Aleksandr Tavgen-IT解决方案,软件开发
AleksandrPotužnoi-技术支持

Modulshtein:
www.Modulshtein.com

在Spotify

AleksandrŽedeljov又名FAERSHTEIN –吉他,Ableton,模拟合成器
Marten Altrov-单簧管,低音单簧管
Aleksei Semenihhin aka DJ Bandit-效果,样本,刮擦

Source: https://habr.com/ru/post/zh-CN463237/


All Articles