入门
TuttiDAW Code 是什么、程序如何循环,以及怎样弹响你的第一行代码。
TuttiDAW Code 是一门用文字写音乐的小语言。你描述一个模式(pattern): 哪些音符或鼓点、在什么时候发声;TuttiDAW 用自己的乐器和效果器把它演奏出来。 模式会不断重复,所以哪怕只写一行,也已经是一段可以边听边改的循环。
这门语言是 Strudel 的超集:大多数 Strudel 代码可以原样在这里 播放,TuttiDAW 还增加了几个自己的方法,用来调用真正的乐器和效果器 (见 TuttiDAW 扩展)。
第一行代码
本指南中的每个示例都能播放:在网页上点示例下方的 Play,或者把它粘贴到 tuttidaw.com/code 的编辑器里。播放时改一个字母再重新求值(Ctrl/Cmd+Enter), 改动会从下一小节开始生效。
note("c3 e3 g3 c4")note(...) 把引号里的文字变成音符。四个音名平分一个小节,所以你听到的是四个四分音符。
循环周期(cycle)
时间的单位是周期(cycle)。在 TuttiDAW 中,一个周期就是一个小节。每个模式都会被 压进它的周期里:步数越多,每一步就越短。
note("c3 e3 g3 c4 e4 g4 c5 g4")一个周期里放八个音名,就是八分音符;小节的长度不变。
速度
setcpm(n) 设定每分钟 n 个周期。因为一个周期是一个 4/4 小节,setcpm(30) 就是
120 BPM,setcpm(25) 就是 100 BPM。
setcpm(25)
note("c3 e3 g3 c4")多个声部
一个程序可以同时演奏多个声部(voice)。给每个声部写一个标签,后面加冒号。
以 _ 开头的标签会被静音,方便你专心处理另一个声部。
setcpm(30)
drums: s("bd sd bd sd")
bass: note("c2 c2 g1 bb1")
_lead: note("c4 e4 g4 e4")$: 也可以开始一个不命名的声部。把程序带进工作室时,命名的声部更好用,因为每个
标签都会成为一条轨道的名字。
代码在哪里运行
- /code 页面在浏览器里播放整段程序,不需要账号。它的 Open in TuttiDAW 按钮会把程序保存为一个工作室项目。
- 工作室里的 Pattern Clip 把代码放在 MIDI 片段中,片段里的音符由代码渲染而来。
- TuttiDAW 的 AI 助手 Muse 可以帮你写代码、解释代码、修复代码 (见 /code 上的 Muse)。
同样的代码,同样的音符
程序里的随机是有种子的:同一段代码总是产生同样的音符,在每台电脑上、每次打开都一样。 正因如此,带代码的项目才能被分享,并被准确地重放。