在KTV唱歌的時候,常常會使用到回音(echo)音效,修飾聲音,掩蓋瑕疵(?)。在Csound中,也可以做到回音效果哦!這裡的回音講的並不是在山中大喊、在浴室唱歌、在禮堂講話等等的環境上的複雜回音,而是單純的延遲漸弱的回音。



舉個回音的例子,當我們喊一聲「啊~」,隨後會聽到「啊~啊~啊~啊~」愈來愈小聲的重複「啊」聲,這就是回音啦!

從物理的角度來看,回音是原本的聲波打中障礙物後,反彈回來的聲波。由於障礙物會吸收掉原本聲波的部份能量,因此反彈回來的聲波的音量會相對較小,如果再經過數次反彈,音量就會小到聽不見了。人耳若要分辨出回音,兩聲波到達耳朵的時間必須要大於0.1秒。如果時間距離太近,聲波會重疊在一起,聽起來就只是比較大聲的聲音而已。

回音試聽下載

回音波形:

Csound 回音設計

csound提供運算子「delayr」和「delayw」,可以用來設定與存取Delay Line。利用全域變數儲存樂器的輸出,再延遲放進Delay Line中等待輸出,程式實作方式如下:

		gasig init 0
		instr 1
			;p4=pitch
			;p3=duration		
			 	
			iamp = 50					
			ifreq = cpspch(p4)          ;convert pitch to frequent
			
			
			av linen iamp, 0.1, p3, 0.1 ;ring the amplitude
			a1 oscil av, ifreq, 1       ;oscillate f1
			gasig = gasig + a1          ;output
		endin
		
		instr 99
			gaecho delayr 0.35          ;delay line length, echo delay 0.35 seconds
			gaout = gaecho*0.6 + gasig  ;echo amplitude reduce to 0.6 ratio
			delayw gaout                ;write gaout into delay line
			out gaout                   ;out delay line
			gasig = 0                   ;clear instruments' previous signals
		endin

製作回音一定要注意到如果聲音的長度太長、回音的間隔太短或是回音的衰減量太少的話,聲音的Amplitude(強度)可能會超過最大值,會導致失真。