java - Max for Live 与 JVAP 工具

标签 java audio max midi

我正在考虑在 Max(或 Max for Live,真的)中应用音频和 MIDI,但我对 Java 非常满意,所以 something like this also seems attractive .有人对 Max 有任何经验吗?它真的适合那些不编写代码的人吗,或者看起来愚蠢/友好的 UI 是否比直接用 Java 编写代码更有效?另外,有没有人用Java写过VST插件,可以分享一下经验吗?

最佳答案

Max 是一种数据流语言。我比较熟悉同一个作者的PD。

数据流作为一种编程风格的优势在于大多数数据依赖性都是显式的——您可以从字面上直观地跟踪子例程之间的连接,并且它们通常在屏幕上显示为它们之间的一条线。困难在于操作顺序不太明确,因为它在布局上是二维的,而不是像文本代码那样是一维的。

现在我的大部分音频工作都是在 supercollider 中完成的,但是对于快速勾勒出音频想法并构建一个可用的粗略模型,pd 非常有用。

用可视化数据流语言编程的主要困难是理解操作顺序。可以从一个 socket 创建多个连接,但您应该创建一个显式 [trigger] 对象来控制首先运行哪些连接(来自 socket 的线路在概念上与子例程调用相同)。经验丰富的程序员也很难习惯匿名参数 - 配线没有名称,它们只有来自的导出和连接的入口来识别它们。

另一个技巧是使用封装 - 在文本语言中你会有一个库或类文件,在 Max 或 PD 中你可以通过名称加载外部补丁文件 - 所以你创建一个带有一些导出和入口的小补丁,并在多个地方使用你的其他补丁中的那个,而不是复制和粘贴(就像你调用函数而不是复制和粘贴代码块一样)。

[send] 和 [receive] 用于全局设置/获取数据,并且具有与全局变量相同的所有问题 - 当需要它们时,一个常见的解决方法是在前面加上一个特定于当前子补丁的唯一标识符,即 $0 token 评估为对象名称/参数中当前子补丁的唯一 ID,并用于此目的。这模拟了一个作用域变量。

数据流中的调试非常好,因为从周围的补丁中分离一组项目并独立运行它们非常容易,并且为部分流打开跟踪就像将数字框连接到 socket 一样简单.

关于java - Max for Live 与 JVAP 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2046193/

相关文章:

java - 使用正则表达式根据 oracle 运算符解析字符串

java - 应用程序创建数据库,但不创建表

javascript - 播放媒体的 AudioContext 平移音频

iphone - 有没有一种简单的方法可以在iPhone中播放m3u?

Oracle 从表中选择最大 id 返回空值

java - 如何列出 Jersey 所有已注册的 JAX-RS 实体提供者

java - 如何在继续当前线程之前等待事件发生?

php - 将音频文件拉入PHP脚本并自动调整?

Python:获取元组中每个字段名的 {(tuple): value } 字典的最大值

sql - SUM 和 GROUP BY 生成的列上的 MAX