TuttiDAW 代码编曲TuttiDAW Code 指南

入门

TuttiDAW Code 是什么、程序如何循环,以及怎样弹响你的第一行代码。

TuttiDAW Code 是一门用文字写音乐的小语言。你描述一个模式(pattern): 哪些音符或鼓点、在什么时候发声;TuttiDAW 用自己的乐器和效果器把它演奏出来。 模式会不断重复,所以哪怕只写一行,也已经是一段可以边听边改的循环。

这门语言是 Strudel 的超集:大多数 Strudel 代码可以原样在这里 播放,TuttiDAW 还增加了几个自己的方法,用来调用真正的乐器和效果器 (见 TuttiDAW 扩展)。

第一行代码

本指南中的每个示例都能播放:在网页上点示例下方的 Play,或者把它粘贴到 tuttidaw.com/code 的编辑器里。播放时改一个字母再重新求值(Ctrl/Cmd+Enter), 改动会从下一小节开始生效。

note("c3 e3 g3 c4")
在 /code 中打开

note(...) 把引号里的文字变成音符。四个音名平分一个小节,所以你听到的是四个四分音符。

循环周期(cycle)

时间的单位是周期(cycle)。在 TuttiDAW 中,一个周期就是一个小节。每个模式都会被 压进它的周期里:步数越多,每一步就越短。

note("c3 e3 g3 c4 e4 g4 c5 g4")
在 /code 中打开

一个周期里放八个音名,就是八分音符;小节的长度不变。

速度

setcpm(n) 设定每分钟 n 个周期。因为一个周期是一个 4/4 小节,setcpm(30) 就是 120 BPM,setcpm(25) 就是 100 BPM。

setcpm(25)
note("c3 e3 g3 c4")
在 /code 中打开

多个声部

一个程序可以同时演奏多个声部(voice)。给每个声部写一个标签,后面加冒号。 以 _ 开头的标签会被静音,方便你专心处理另一个声部。

setcpm(30)
drums: s("bd sd bd sd")
bass: note("c2 c2 g1 bb1")
_lead: note("c4 e4 g4 e4")
在 /code 中打开

$: 也可以开始一个不命名的声部。把程序带进工作室时,命名的声部更好用,因为每个 标签都会成为一条轨道的名字。

代码在哪里运行

  • /code 页面在浏览器里播放整段程序,不需要账号。它的 Open in TuttiDAW 按钮会把程序保存为一个工作室项目。
  • 工作室里的 Pattern Clip 把代码放在 MIDI 片段中,片段里的音符由代码渲染而来。
  • TuttiDAW 的 AI 助手 Muse 可以帮你写代码、解释代码、修复代码 (见 /code 上的 Muse)。

同样的代码,同样的音符

程序里的随机是有种子的:同一段代码总是产生同样的音符,在每台电脑上、每次打开都一样。 正因如此,带代码的项目才能被分享,并被准确地重放。