滑音,顧名思義,就是由一個音符滑到下一個音符,不發生間斷。若使用一般的方式來彈奏兩個音符,會因波形包絡(振幅包絡)的關係,使得兩個音符聽起來有明顯的分隔。使用滑音技巧的話,可以使音符在轉換的過程中,為漸進式的,慢慢從A頻率移動到B頻率,聽起來會較為柔和,要使用csound產生滑音,需得做波形內插,通常會使用線性內插。假設要從C4在時間(t)0到1內滑到A4,那麼可以設定振盪器演奏C4*(1-t)+A4*t的頻率,這就是內插啦!



有另一個比較好理解的內插作法是:由我們事先指定音符在各個時間下的權重,以上面的例子來說,一開始(t=0)C4的權重為1,A4的權重為0;進行到t=0.5的時候,C4、A4的權重都是0.5;最後(t=1)C4的權重為0,A4的權重為1。csound提供了linseg運算子,用法類似GEN7,都是藉由啟始值、變化時間、終止值,來產生出連續或是不連續的線段。使用一個振盪器,去振盪出頻率為「C4*C4權重+A4*A4權重」的波形,就可以輕鬆產生出滑音。

二滑音

音符順序:A->B

A音符的權重:

B音符的權重:

三滑音

音符順序:A->B->C

A音符的權重:

B音符的權重:

C音符的權重:

四滑音

音符順序:A->B->C->D

A音符的權重:

B音符的權重:

C音符的權重:

D音符的權重:

其他的滑音次數也是像是這樣的方式實作哦!

csound滑音樂器範例

以下程式同時實作出一般音和二到四滑音:

		instr 1
			;p4~p7:pitch
			iamp init 75
			
			iA = cpspch(p4)
			iB = cpspch(p5)
			iC = cpspch(p6)
			iD = cpspch(p7)
			
			i4ht init p3/3.
			i3ht init p3/2.
			i2ht init p3

			if(p5>0) then
				if(p6>0) then
					if(p7>0) then
						a4a linseg 1,i4ht,0,i4ht,0,i4ht,0
						a4b linseg 0,i4ht,1,i4ht,0,i4ht,0
						a4c linseg 0,i4ht,0,i4ht,1,i4ht,0
						a4d linseg 0,i4ht,0,i4ht,0,i4ht,1
						af = a4a*iA+a4b*iB+a4c*iC+a4d*iD
					else
						a3a linseg 1,i3ht,0,i3ht,0
						a3b linseg 0,i3ht,1,i3ht,0
						a3c linseg 0,i3ht,0,i3ht,1
						af = a3a*iA+a3b*iB+a3c*iC
					endif
				else
					a2a linseg 1,i2ht,0
					a2b linseg 0,i2ht,1
					af = a2a*iA+a2b*iB
				endif
			else
				af = iA
			endif
			
			av linen iamp, 0.1, p3, 0.1 ;ring the amplitude
			asig oscili av, af, 1
			out asig
		endin