90 likes | 225 Views
Modeling Voices 3. Building the Csound Orchestra: FM Soprano. Design a beautiful vibrato Make the vibrato different on every note Change Speed (vibrato rate). ivibrat = p10 avrate linseg ivibrat*.5, idur, ivibrat. Building the Csound Orchestra: [iii:38] FM Soprano 3.
E N D
Modeling Voices 3
Building the Csound Orchestra:FM Soprano • Design a beautiful vibrato • Make the vibrato different on every note • Change Speed (vibrato rate) ivibrat = p10 avrate linseg ivibrat*.5, idur, ivibrat
Building the Csound Orchestra:[iii:38] FM Soprano 3 • FM vibrato to change the frequency indx1 = p9 ivibwid = .00311*log(ifreq) idev = indx1 * ifreq avibenv linseg 0,.6*idur,1,.3*idur,1,.1*idur,0,1,0 avibwid = ivibwid * avibenv avib oscili avibwid+idev, avrate, iwave1, giseed giseed = frac(giseed*105.947) asig gbuzz 1, ifreq+avib, iharms, 1, .75, iwave5
Building the Csound Orchestra:[iii:39] FM Soprano 4 • AM vibrato to change the amplitude ampvib oscili .3, avrate, iwave1, giseed giseed = frac(giseed*105.947) ampvib = ampvib + 1 ... asig = asig * aenv * ampvib
Building the Csound Orchestra:[iii:40] FM Soprano 5 • Random Noise Variation anoise randi .3, 15, giseed giseed = frac(giseed*105.947) anoise = anoise + 1 avrate linseg ivibrat*.5, idur, ivibrat avrate = avrate * anoise avibwid = ivibwid * avibenv * anoise • Try different combinations of the parameters to find one that really suits your FM voice!
Building the Csound Orchestra:FM Soprano • Phase • use a different phase for each note, but the same phase for all the parts of each note • this keeps the phases in chords from lining up, which gives an artificial sound • giseed — a pseudo-random number generator iphase = giseed giseed = frac(giseed*105.947) asig oscili iamp, ifreq, iwt, iphase • Slightly mistune beginning of note
Building the Csound Orchestra:FM Soprano • Multiple Carrier FM
Building the Csound Orchestra:FM Soprano • The formants from Dodge • example: “a” voice sound, p. 231 iform1 = 650 iform2 = 1100 iform3 = 2860 iform4 = 3300 iform5 = 4500
Building the Csound Orchestra:FM Soprano • Round the formants off to the nearest harmonic partial ifac1 = iform1/ifreq ifac1 = (frac(ifac1) < .5 ? int(ifac1) : ifac1) ifac1 = (frac(ifac1) >= .5 ? 1+int(ifac1) : ifac1) ifac1 = (ifac1 = 0 ? 1 : ifac1) • Use fewer formants for higher frequencies