用于音乐创作的高级编程语言

时间:2009-02-03 14:16:35

标签: programming-languages

我想写一首互动歌曲。它将包含状态和逻辑。监听器/用户应该能够使用GUI或MIDI接口修改某些状态变量。听众可访问的变量不必直接表示节奏,音高或任何其他音乐属性。他们宁愿代表逻辑将处理的值,以便对歌曲进行更改。

我是否必须自己编写这样的平台,或者已经存在符合我想象的东西?

12 个答案:

答案 0 :(得分:11)

查看cSoundsPureData

答案 1 :(得分:7)

如果您乐意使用Java,请查看JFugue

答案 2 :(得分:6)

我尝试了PureDataCSoundSuperCollider

CSound编程起来非常麻烦,并且在我的要求(24位/ 96kHz实时低延迟linux)版本4中存在严重的稳定性问题。

PureData是图形化的,这使得使用文本文件保持代码整洁整洁变得更加困难。组合是一种痛苦,因为你必须构建自己的组合GUI,它可以很强大,但只要我是我唯一的用户,我发现使用文本会更快。

获胜者是SuperCollider,因为它是一种受小型语言启发的面向对象语言,使用起来非常愉快。它分为OSC控制的声音服务器和客户端语言。我可以推荐声音合成服务器并使用该语言创建乐器,因为它具有出色的稳定性,极大的灵活性和令人难以置信的动力。我在舞台上现场使用它,性能非常好。

得分创造语言患有多手综合症;由于缺乏最近明确的领导力,有太多方法可以做太多限制太多的事情,但它仍然比CSound更好,因为至少你可以使用合理的高级结构。

仍在寻找一种恰到好处的作文语言。

答案 3 :(得分:3)

查看 Strasheela

这是一个基于编程语言Oz的合成系统。学习Oz并不容易,因为它结合了功能和逻辑编程范例。但是,如果您喜欢 SICP 一书,那么您可能也会喜欢它。

Strasheela将音乐作品视为约束满足问题(CSP),并为其寻求“解决方案”。这意味着音乐风格被定义为对整数(有限域)的数学约束,必须是满足的,并且内置约束求解系统“自动”计算解。

P.S。:我不能在奥兹编程,但我正在学习它。

答案 4 :(得分:2)

答案 5 :(得分:1)

我不确定它是否涵盖了您的目标,但请查看Java Sound API。有关它可以做什么的常见问题,请参阅here。这些优点已经捆绑在SDK和JRE中,并且是跨平台的。此外,您可以使用任何Java工具包构建GUI。

答案 6 :(得分:1)

如果不是交互式比特,我建议查看HaskoreNyquist,这两者都是用于音乐生成的DSL。

但是,绝对要看看Alex McLean's livecoding演示。使用SuperColliderOpenSoundControl,您可以想象它更具灵活性和互动性。

答案 7 :(得分:1)

答案适用于.NET:
我找到了一些东西,NAudio Mark Heath,一个伟大的.NET音乐库我会说它应该包含在BCL中。

midi-dot-net是Tom Lokovic的又一个伟大的C#项目。

答案 8 :(得分:1)

对于音乐互动,PureData,Max / MSP和OpenMusic(最后两个来自IRCAM)是最好的。 PureData是免费软件。谷歌他们!

答案 9 :(得分:0)

我真的不知道你想做什么,但这里有一些CL音乐软件列表,包括构图和认知:http://www.cliki.net/Music

答案 10 :(得分:0)

您正在寻找Audio Programming Language。您应该考虑的另一个选择是Processing - 许多艺术家和音乐家都会使用这种工作。

- 亚当

答案 11 :(得分:0)

很遗憾没有人说Chuck ................ Chuck是一种专为音乐/音频生成和合成而设计的编程语言。 你可以在http://chuck.stanford.edu下载Chuck 它更容易使用,并且对c,c ++,java等很熟悉,但它也更容易学习。你可以在Coursera找到关于chuck的免费加州艺术大学,链接here.