可视化反馈
程序播放时在编辑器里画出钢琴卷帘、打孔卡、示波器和频谱:看到一个声部演奏了什么、听起来怎样。
可视化(visual)是声部上的一个方法,在程序播放时把这个声部画出来。它从不改变声音: 声部的演奏和不加它时完全一样。可视化只在 TuttiCode(tuttidaw.com/code)上绘制; 工作室里的 Pattern Clip 演奏同一段程序,但什么也不画。
每种可视化都有两种写法:
- 带下划线的
._pianoroll()画在代码里:调用结束的那一行下面的一条横带。 可以同时显示好几个,各自挨着自己的声部。 - 不带下划线的
.pianoroll()淡淡地画在编辑器后面,代码仍然清楚地显示在上层。
音符在做什么:pianoroll 和 punchcard
._pianoroll() 让声部的音符滚动经过播放头:时间从左到右,音越高位置越高,
正在发声的音符在播放头处画成空心框。
note("c3 [e3 g3] a3 <f3 b3>").s("triangle")._pianoroll()选项写在一个对象里。cycles 是横向能放下几个周期(4),playhead 是播放头的位置
(0 最左 .. 1 最右,0.5),vertical: 1 把卷帘竖过来,时间从上往下走。
行下面的卷帘会自动适应它显示的音域;想要固定的音域,就给出 minMidi / maxMidi。
n("0 2 4 <6 7>").scale("C:minor").s("sawtooth").lpf(1200)
._pianoroll({cycles: 2, playhead: 0.25})._punchcard() 把同样的音符画成圆角格子,没有播放头线:很适合鼓的节奏型。
s("bd*2, ~ sd, hh*8")._punchcard()声音在做什么:scope 和 spectrum
._scope() 是示波器:声部播放时的波形。它显示的是这个声部自己的输出,
经过它的效果和推子之后,而不是整个混音。选项:color、thickness(3)、
scale(0.25)、pos(0 顶部 .. 1 底部)、align 和 trigger。
note("c2 c2 eb2 g1").s("sawtooth").lpf(600)._scope()._spectrum() 把声部的频率画成一条线,左边是低频,右边是高频。
选项:color、thickness、min 和 max(单位 dB,默认 -80 和 0)。
note("<[c3,eb3,g3] [ab2,c3,eb3]>").s("sawtooth").lpf(2000)._spectrum()看着滤波器动起来
滑块在播放时改变程序; 同一个声部上的示波器让你看到它的效果。把截止频率往下拖,锯齿波的棱角就会被磨圆, 变得接近正弦波:
note("a1*8").s("sawtooth").lpf(slider(2000, 100, 6000))._scope()换成 ._spectrum(),就能看到高频逐渐消失。
编辑器后面
不带下划线的写法在整个编辑器后面画一个视图;它不接收点击,所以你可以继续打字。
bass: note("c2*4").s("sawtooth").lpf(400).pianoroll()
hats: s("hh*8").gain(0.5)限制
spiral/_spiral会被接受,但目前什么也不画。- 示波器或频谱只显示一个声部(带这个调用的那个)。想看两个声部,就在每个声部上各调用一次。
- 有些选项会被接受但还没有绘制:pianoroll 的
labels、smear、填充与描边开关, 以及 spectrum 的speed。