宣布Mozaic

模块化MIDI世界的解决方案

iOS上最近的AU插件可用性(用于音频和MIDI)激增,开启了将乐器和乐器串在一起的新模块化方法。 这种模块化带来了创意MIDI路由的上百万种新需求:插件和控制器之间的连接。

突然,对MIDI处理和操纵插件的需求很大。 其中大多数非常特定于一个特定的工作流程甚至一个项目。 制作这样的MIDI插件很有趣,但是期望开发人员使用专用的MIDI插件解决每个深奥的用例是不现实的。 仅仅满足我们每一个特定需求的产品还不够,我们🙂

解决方案:改为让更多AUv3 MIDI开发人员!

Mozaic简介

我正在创建一个代号为Mozaic的新产品,以使其尽可能容易地滚动您自己的AU MIDI插件,其复杂程度从简单/基本过滤器到中等复杂的应用程序和生成性插件。 Mozaic将能够覆盖很多管道地面。

如果超级马里奥(Super Mario)教会了我们有关水暖的任何知识,那就是:

  • 可能很有趣
  • 总是会有学习曲线,但是设计良好的学习曲线是温和的,并且有助于有趣的挑战

这两种见解一直是我设计Mozaic的指导原则,Mozaic是一种寻求平衡力量,可访问性和深度的工具。

那么什么是Mozaic?

Mozaic由两个主要成分组成:(A)一种非常易读且灵活的脚本语言,以及(B)一个可编程的AU MIDI插件容器

MIDI插件部分就像MIDI控制器一样,具有很多功能(例如现成的LFO,AU参数,主机通信,速度同步,计时器事件,音阶,可编程节拍器等),您可以使用脚本语言。

这意味着所有繁重的工作都由插件完成。 与所有AUv3一样,每个插件实例都可以运行不同的脚本。

这些脚本功能强大,专为MIDI和音乐应用程序而设计; 您可以使用单行脚本来设置LFO,而仅需一行即可从LFO获取可用的MIDI值。

编写一个时髦的MIDI过滤器(例如,在多个MIDI输出通道上轮流分配传入的音符)仅需要执行几行脚本。

关于脚本语言

我已经在设计一种对MIDI应用程序功能强大且对人类同样易读的语言上付出了很多努力。 这意味着您可以查看预设的脚本(或其他人的代码),并对发生的事情有个很好的了解。 并轻松快速地为您正在处理的项目修改脚本。

脚本语言非常强大,因为我是专门针对MIDI插件用例设计的。

  • 它完全基于事件(例如,当MIDI进入时,主机开始播放时,用户调整旋钮时以及其他二十多个有用事件时,您可以使事情发生)
  • 响应MIDI或生成自己的MIDI都很容易(例如,用于生成型应用,CC生成器或奇数球排序概念)
  • 您可以轻松访问AUv3功能,例如AU主机的状态和传输信息,AU参数,主机同步等。
  • 您可以自由使用(并动态标记)所提供的插件GUI上的所有旋钮和按钮,以使您的用户像MIDI控制器设备一样与您的插件进行交互
  • 内置的LFO支持,踏板支持,音阶支持等,只需几行代码即可轻松完成有趣的事情
  • 无需了解有关苹果AU标准的可怕未公开文档的内部知识或如何编写实时安全代码的任何知识

我也在写一个编程指南,对于任何人来说,它应该足够容易并迅速入门。 它将教您Mozaic Sc​​ript的语法,还说明如何有效使用条件,嵌套循环,变量数组以及许多其他有用的编程基础知识。

总而言之,Mozaic不会适合所有人,并且不会提供下一个synth插件的即时满足性。 但是,我在表象底下投入了很多深度和价值,等待被创意社区释放。

回答预期的问题…

Q1:一种编程语言,真的吗?

答:我开始设计模块化MIDI UI的项目,通过它可以“连接”过程。 它看起来很有趣,但最后,仅查看生成的原理图就很难了解发生了什么。 我意识到,一个充满缠结电线和模块的屏幕通常可以用5行伪代码来概括。 而且代码更易于理解,编写速度更快,更易于修改,并且需要同样多的算法思维。 我的结论是:实际上,编写快速脚本比以图形方式处理脚本更容易,更有效。

Q2:编程很难,不是吗?

答:我正在做出非常有意识和严格的努力,以设计一种对于大多数人来说都易于理解的人类可读语言,即使您没有任何编程经验也是如此。 我还尝试坚持其他语言所共有的基本模式和机制,因此,如果您继续使用另一种语言或对现有的脚本语言有所了解,那么在Mozaic中学习的很多内容也可能会有所帮助。

Q3:就像JavaScript吗?

答:有点。 它是Basic,C和Pascal的混合体。 我仍在调整语法。 有趣的一点是,我必须使该语言对人类易于使用,而且还必须易于通过插件内部运行的虚拟机(“代码引擎”)实时运行。 VM会在音频线程上运行,以确保MIDI处理具有超高的采样精度,但这也意味着它必须在运行代码时尽可能高效和快速地运行,同时要保证实时安全性和非常规性。锁定。 正如我之前提到的,繁重的工作已经为您完成; 但语法的某些部分已针对实时解释进行了优化optimized

Q4:我可以为插件创建自己的GUI吗?

答:不可以。标准UI是让用户与您的代码进行交互的工具。 您显然可以通过代码在UI上动态更改标签。 可以将它视为一个可爱的小硬件MIDI控制器,该控制器可以完全编程,并具有计时器,LFO和MIDI IN / OUT / THRU。

Q5:它将带有内置脚本吗?

答:是的,绝对可以。 我的目标是附带许多有趣的预制脚本,即使您自己都不编写自己的Mozaic脚本,这也值得。 显然,还将有一些教程脚本来演示实际使用的语言的基本概念。 而且,我非常乐意听取用户关于他们想使用脚本的操作的信息,因此我可以将它们作为有用的工厂预设添加到内置库中。

问题6:您打算何时启动?

答:2019年。构建此产品比我的平均合成器或效果要花很多时间。 构建我自己的虚拟机并对其进行优化以在实时音频线程中运行,需要进行大量工作。 是的,这很复杂,但最终是一个有趣的挑战。 但是,这也使得很难预测我何时准备进行Beta版测试(显然,创建编程语言也涉及很多测试)。