我试图帮助一位朋友弄清楚是否可以在 Max/MSP javascript 中实现 DSP 算法。他在课堂上被告知,他寻求我的帮助,但我找不到任何方法来处理实际样品。
TL;DR 是否可以使用 javascript 在 Max/MSP 中获取样本并返回它们?谢谢
我试图帮助一位朋友弄清楚是否可以在 Max/MSP javascript 中实现 DSP 算法。他在课堂上被告知,他寻求我的帮助,但我找不到任何方法来处理实际样品。
TL;DR 是否可以使用 javascript 在 Max/MSP 中获取样本并返回它们?谢谢
不,它不是,因为它仅用于处理消息而不是信号向量。可能您将 JavaScript 与 Java 混合在一起——有一个mxj~
对象允许您使用 Java 6(不是更高版本!)来开发信号处理算法。查看教程,每个人都开始学习如何使用 Java: http: //pcm.peabody.jhu.edu/~gwright/stdmp/docs/WritingMaxExternalsInJava.pdf
您可以使用 Max 的gen~
and编写 DSP 算法codebox
,其语法类似于 JavaScript 或 C。
Max 中的 DSP 以高优先级运行以避免音频丢失,而js
对象不会,但可以使用 JavaScript 生成代码并将其加载到gen~
实例中。您可以找到与 Max 本身捆绑在一起的示例:搜索名为gen~.dynamicexpr.maxpat
他们发布了一个带有 Max 8 的 node.js API。你现在可以了。
虽然没有使用 javascript,但像 delucis 所说的,您现在可以使用gen~
来编写 dsp 代码。
这是用于我自己的项目的失真gen~
函数:tanh
tanh_dist(input, amp, offset)
{
pass1 = input + offset;
pass2 = pass1 * amp;
pass3 = tanh(pass2);
return(dcblock(pass3));
}
我还制作了一个示例补丁来向您展示如何使用它(在代码框中)。只需复制以下文本并粘贴到一个空的最大补丁窗口中:
----------begin_max5_patcher----------
1168.3ocyW8tbiZCD+y3mBF9TROWOHAXG2qsyzGf9Db4FOxfLVWAACH74bYx
8r2U+ALXv13j3zlOPFu+jzt6uc0tZedhky5r8zRG6ey9K1VVOOwxRIRJvx7a
KmTx9vDRoZYNgYooTtvYpFSP2KTxy1rojJdjWCjSDgaY73UEzPgVA3kAybmZ
iWH+hBbk+yyelq8WM6gWkx3ITgRSnCBypD0RcMRYQZst9a+Jx0QJ6kISjel9
F8CRZ94cBWzAmve9rf2EeX9qwE1jjAGbsstIqHknLx4FIfgvRgEHU4rZkBmv
AgnKFrl6K+piUX704m3994xCLaAIkJnEqnbx5DZadQeDhmxoZSwwYpsyZBO1
w9q2ZZJnOMgOPdCvSnkKj4.uy7zh+C3IN86fp6cgH7ovD5OsQv0ryvBttGxV
lGbdV.OHKf5yBANmxSKYwbRxqyOiIL9Ouru3gvp5TK0+J3RwzzpDAKbKgyoI
6HELBWzNXcwPt+qJjaHBHv+5HC5OhHgifM7cWp9WP82qIzNPAOry6WFZLcLw
SLVEOwH+ymc5M1rSzkyNaaTzBimYbMnTDKgtiVTxx3sTgkCIOukXqVaQxGeK
ScPOLsQDiqE41HpftiUueuFojBfZD.uTUnrTm8yqS5jGSVDsfWwTlhVHDYLl
jJFvgzxxbRndyQk4y.lu9.bZ2hbt5lybcgf4lLHYwwZJAhzwIYg+CMpsg6jk
S4LddAsDZMSDFOnANhtg.2xVsIiKJY+PYGpaoCfuwXmCBJ8DkS7Wv8zjFWHt
fEkwkFQm3gTbs5fzo.8yWZ6LpUvI4CrYHSAHlS.VBNYU4ZRgLbYtpiqAEYYI
cgZ1WBciv.myfBNcYQQV9oAKXwaOydWmAfom6rUHkqp3ZzUPlgXUIYWW1VPR
RLWW6d76IP2VhfJX5P.1sATWtaaYXQVRRG+Uira.jHHSOj9cVjXam24HQfky
xqShbZhxQrXZonqLAItrqjRwSZRuknp0laxqDzz7DvK5tfNOlt8011E15H+b
E35Vjiws8ZCLPgNeSGKcAtGNtLW+RctcA5Wt6TMjOwyOzcfrpKraJgbS3BzE
3B8KwtgTA5+MTA9BTA1Cci4B7GHWDBsojqrkF6TQ+2+anNqpKUzeNtbDrhX7
dPOWmbvtSSMdGo1i6xLZJy6RT1QJZf1cp9x.anNSAgucUDqTbGz+rRL0Flic
psdn76ej+7iba3ubfEQ1+gsZM1exf+4CfX.TuneQdBsP7.DoRtSsr6MHET3w
D76hBWK6lqv7tWB9xiEOxA+BY1VssglBJGK+3c+mc9Xti.lwEqWfVndyhO5g
5W6eoaInSFxcGNj6Oj6d3MDIL9oZdnrWI9v7PYVUQXcpioLscWKGZFJX7lWT
8kljPa7Hucds1f2HsAe85tI1.9J3AzMxFPWgMLLOXDpkXlXRcfcSYzCPcr4Y
FipmYsrsYcBSBcH8n2fZiUOKFodPuQ8DLR839F0i+HzSmzNmrhH8nenODEi5
qX22jhQiPw98XVcB5QSxJUwQSvdzzq8mb8zSsd7DqpoUGZRUYCjIuL4eArSi
FpB
-----------end_max5_patcher-----------