不同歌曲的播放起來有快有慢,是因為拍子(Beat)的演奏速度不同所導致。拍子的速度稱為Tempo,常使用的單位是「拍子/minute」,也就是一分鐘演奏幾個拍子。
Tempo Statement
Tempo Statement用來控制拍子的演奏速度,在Csound中又稱為「t Statement」,因為要設定出一組Tempo,需要用到t Statement。格式如下:
t 0 p1 [p2 p3 [p4 p5 [p6 p7 ...]]]
- p1:歌曲起始的Tempo。如果設為120,就代表這個歌曲一開始的演奏速度為一秒兩拍。
- p2n p2n+1(n>=1):設定Tempo要在第幾拍的時候變化。p2n為第幾拍,p2n+1為要轉變的Tempo。
Csound在演奏樂器時,參數p3(duration),其實是代表一個音符要演奏幾拍,1是1拍,0.5是半拍。
下面是一個Csound範例,合成出部份「癡心絕對」這首李聖傑的歌。有設定Tempo,所以聽起來會感覺忽快忽慢的。
<CsoundSynthesizer>
<CsOptions>
</CsOptions>
<CsInstruments>
sr = 44100 ;sample rate
ksmps = 16 ;samples in a control period
nchnls = 1 ;number of channels
0dbfs = 100 ;value of 0db
instr 1
;p4=pitch
;p3=duration
ifreq = cpspch(p4) ;convert pitch to frequent
av linen 100, 0.1, p3, 0.1 ;ring the amplitude
a1 oscil av, ifreq, 1 ;oscillate f1
out a1 ;output
endin
</CsInstruments>
<CsScore>
f1 0 16384 10 1 0 -0.11111 0 0.04 0 -0.02041 0 0.01235 0 -0.00826 0 0.00592 0 -0.00444 0 0.00346 0 -0.00277 0 0.00227 0 -0.00189 0 0.0016 0 -0.00137 0 0.00119 0 -0.00104 0 0.00092 0 -0.00082 0 0.00073 0 -0.00066 0 0.00059 0 -0.00054 0 0.00049 0 -0.00045 0 0.00042 0
t 0 108 20 60 40 200 90 108 ;Tempo
;ins strt dur pitch
i1 0 0.5 8.00
i1 + 0.5 8.02
i1 + 0.5 8.04
i1 + 0.5 8.04
i1 + 0.5 8.04
i1 + 0.5 8.04
i1 + 0.5 8.04
i1 + 0.5 8.02
i1 + 0.5 8.07
i1 + 1.5 8.02
i1 ^+3.5 0.5 8.00
i1 + 0.5 8.00
i1 + 0.5 9.00
i1 + 1 9.00
i1 + 0.5 9.00
i1 + 0.5 8.09
i1 + 0.5 8.04
i1 + 0.5 8.09
i1 + 1.5 8.07
i1 ^+3.5 0.5 8.07
i1 + 0.5 8.07
i1 + 1 8.09
i1 + 0.5 8.04
i1 + 1 8.04
i1 + 0.5 8.04
i1 + 0.5 8.04
i1 + 0.5 8.09
i1 + 0.5 8.07
i1 + 0.5 8.07
i1 + 0.5 8.09
i1 + 2 8.00
i1 ^+2.5 0.5 8.05
i1 + 0.5 8.04
i1 + 0.5 8.05
i1 + 0.5 8.04
i1 + 0.5 8.05
i1 + 1 8.04
i1 + 0.5 8.00
i1 + 1 7.09
i1 ^+1.5 0.5 8.04
i1 + 1.5 8.02
i1 ^+5 0.5 8.00
i1 + 0.5 8.02
i1 + 0.5 8.04
i1 + 0.5 8.04
i1 + 1 8.04
i1 + 0.5 8.04
i1 + 0.5 8.02
i1 + 0.5 8.07
i1 + 1.5 8.02
i1 ^+3.5 0.5 8.00
i1 + 0.5 8.00
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 1 9.00
i1 + 0.5 8.09
i1 + 0.5 8.04
i1 + 0.5 8.09
i1 + 1.5 8.07
i1 ^+3.5 0.5 8.07
i1 + 0.5 8.07
i1 + 1 8.09
i1 + 0.5 9.00
i1 + 1.5 9.00
i1 ^+2 0.5 8.09
i1 + 1 8.07
i1 + 1 8.11
i1 + 1 9.00
i1 + 0.5 8.07
i1 + 0.5 8.07
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.05
i1 + 0.5 9.04
i1 + 0.5 9.02
i1 + 0.5 9.00
i1 + 5.5 9.02
i1 ^+7.5 0.5 9.00
i1 + 0.5 9.02
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.05
i1 + 0.5 9.04
i1 + 0.5 9.02
i1 + 0.5 9.02
i1 + 0.5 9.00
i1 + 1 9.02
i1 + 0.5 9.02
i1 + 0.5 9.07
i1 + 1 9.02
i1 + 0.5 9.00
i1 + 0.5 8.11
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 8.09
i1 + 1 8.11
i1 + 0.5 8.11
i1 + 0.5 9.04
i1 + 1 8.11
i1 + 0.5 8.09
i1 + 0.5 8.07
i1 + 1 8.09
i1 + 0.5 8.09
i1 + 0.5 8.09
i1 + 1.5 9.05
i1 + 0.5 9.05
i1 + 1 9.04
i1 + 0.5 9.07
i1 + 1.5 9.00
i1 + 0.5 8.09
i1 + 0.5 8.07
i1 + 0.5 8.09
i1 + 0.5 8.09
i1 + 0.5 8.09
i1 + 0.5 9.05
i1 + 0.5 9.05
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 8.09
i1 + 1 9.02
i1 ^+2.5 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 9.02
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.05
i1 + 0.5 9.04
i1 + 0.5 9.02
i1 + 0.5 9.02
i1 + 0.5 9.00
i1 + 1 9.02
i1 + 0.5 9.02
i1 + 0.5 9.07
i1 + 1 9.02
i1 + 0.5 9.00
i1 + 0.5 8.11
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 9.04
i1 + 0.5 9.04
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 0.5 8.09
i1 + 1 8.11
i1 + 0.5 8.11
i1 + 0.5 9.04
i1 + 1 8.11
i1 + 0.5 8.09
i1 + 0.5 8.07
i1 + 1 8.09
i1 + 1 8.09
i1 + 1.5 9.05
i1 + 0.5 9.05
i1 + 1 9.04
i1 + 0.5 9.07
i1 + 1.5 9.00
i1 + 0.5 8.09
i1 + 0.5 8.07
i1 + 0.5 8.09
i1 + 0.5 8.09
i1 + 0.5 8.09
i1 + 0.5 9.05
i1 + 1 9.05
i1 + 0.5 9.00
i1 + 0.5 9.00
i1 + 1 9.00
i1 ^+3 1 8.11
i1 + 2 9.00
e
</CsScore>
</CsoundSynthesizer>