丰满合唱 (Fat Chorus)
我们制作一个彼此间轻微去谐(detune)的振荡器数组,并将它们混入单声道。
{Mix(Saw.ar([440,443,437],0.1))}.scope // 合唱
结合了AM、FM、合唱以及包络的更复杂的声音
( { Mix( Resonz.ar( //Resonz(共鸣)滤波器的引数:输入, 频率, 频宽率=频宽/中心频率 // 用锯齿波和合唱调制频率 Saw.ar([440,443,437] + SinOsc.ar(100,0,5*200)), // 始终改变滤波频宽 XLine.kr(10000,10, 10, doneAction:2), //始终改变滤波频宽率 Line.kr(1,0.05, 10), // AM mul: LFSaw.kr(Line.kr(13,17,3),0.5,0.5)*Line.kr(1,0,10) ) ) }.scope )
采样回放率调制 (Sample playback rate modulation)
由一个振荡器进行的采样回放调制。
声音档将在之后的学习中详述。但是你想超前一点也没问题,去看 PlayBuf 和 Buffer 的帮助文档。
// 先运行我以载入声音档 ( b=Buffer.read(s,"sounds/a11wlk01.wav"); )
// 现在轮到我了! ( { var modf, ind, modulator; var b1; b1= b.bufnum; modf= MouseX.kr(1,4400, 'exponential'); ind=MouseY.kr(0.0,1.0, 'linear'); modulator= SinOsc.kr(modf,0,10*modf*ind, 440); PlayBuf.ar(1,b1, BufRateScale.kr(b1)* (modulator/440), 1, 0, 1) }.play; )
回到钟声
现在回到我们之前合成的钟声并为之增添一些调制效果,以得到一个更丰富、更活跃的声音。
// 更丰富钟声的patch ( var numpartials, spectrum, amplitudes, modfreqs1, modfreqs2, decaytimes; spectrum = [0.5,1,1.19,1.56,2,2.51,2.66,3.01,4.1]; amplitudes= [0.25,1,0.8,0.5,0.9,0.4,0.3,0.6,0.1]; numpartials = spectrum.size; // 从1 到 5 Hz 的震音 modfreqs1 = Array.rand(numpartials, 1, 5.0); // 颤音率从0.1 到 3 Hz modfreqs2 = Array.rand(numpartials, 0.1, 3.0); //从2.5 到 7.5 秒开始衰减 decaytimes = Array.rand(numpartials, 2.5,7.5); { Mix.fill(spectrum.size, {arg i; var amp, freq; freq= (spectrum[i]+(SinOsc.kr(modfreqs1[i],0,0.005)))*500; amp= 0.1* Line.kr(1,0,decaytimes[i])*(SinOsc.ar(modfreqs2[i],0,0.1,0.9)* amplitudes[i]); Pan2.ar(SinOsc.ar(freq, 0, amp),1.0.rand2)}); }.scope )
See also: