不同歌曲的播放起來有快有慢,是因為拍子(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>