INSTR ライブラリ
こちらも少しづつせいり
平凡な音
←csoundメモ 目次に戻る
サイン波+ローパスでまずはシンプルなやつから
<CsoundSynthesizer> ;2007/9/9 - by a9a9qq@gmail.com ; <CsOptions> -d -W -o vidro.wav </CsOptions> <CsInstruments> sr = 44100 kr = 44100 ksmps = 1 nchnls = 2 #define IFN_1 #1# gitab ftgen $IFN_1, 0, 65536, 10, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, instr 1 aw2 linen p5,.0001,p3,p3 aw1 oscili aw2,cpspch(p4),$IFN_1 kfenv expseg cpspch(p4)*0.01, p3*0.1, cpspch(p4), p3*0.3, cpspch(p4)*4.00 aw1 moogladder aw1, kfenv, p6 outs $M_SQRT2/2.0*(cos(p7)+sin(p7))*aw1, $M_SQRT2/2.0*(cos(p7)-sin(p7))*aw1 endin </CsInstruments> <CsScore> ;p1 p2 p3 p4 p5 p6 p7 ;inst beg dur pch amp resonance pan i1 0 0.25 8.00 10000 0.30 0.78 i. + . 8.02 . 0.40 0.58 i. + . 8.04 . 0.50 0.38 i. + . 8.05 . 0.60 0.18 i. + . 8.07 . 0.70 -0.18 i. + . 8.09 . 0.80 -0.38 i. + . 8.11 . 0.90 -0.58 i. + . 9.00 . 0.99 -0.78 </CsScore> </CsoundSynthesizer>
回転する音
音程と音量の平面でLFOを回転させる。そのときに半径が収束する(しないと、音が微妙にずれて不安定な音になるので、普通の使い方だと収束したほうが使いやすかったから)。また、ホワイトノイズを付与することができる。回転する速度でPANを与えた。
回転半径は音程と音量を変えて楕円にしたほうが自然になるかも。パラメータが増えるので敢えて今回は実施しなかった。
ホワイトノイズについてはもう少しキメの細かい音とノイズをモルフィングして中間のようなもののイメージだったので、今後の修正も必要。
PANは今後3Dにしたい。
回転させる前の音のサイン波はもう少し工夫の余地があるかもしれないが、基本的にシンプルで深いトーンを与えたい。その意味ではリバーブとリリースタイムに工夫が必要かもしれない。
#define $IFN_SIN #11# #define $IFN_SINUSOIDS #12# ;sums of simple sinusoids gitab ftgen $IFN_SIN, 0, 65536, 10, 1, gitab ftgen $IFN_SINUSOIDS, 0, 65536 10 1 0.5 0.25 0.1 0.02 0.005, ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; KAITEN v1 by a9a9qq@gmail.com, ; ; The sound makes circular movement x-y plain(tone-amplitude) using ; certain radius(p7) and angular frequency(p8). it converges to the ; p4/p5 sound. it also pans using p8 frequency. ; ; p4: note in MIDI. 60 means C4, 261Hz. 0-127 ; p5: velocity in MIDI. 0-127 ; p6: noise rate. around 1.0 ; p7: radius of KAITEN ; p8: omega of KAITEN ; p9: subnote tone compared with a main note. 12 means octave heigh. ; p10: subnote velocity rate. 1.0 means the same velocity as a main note ; ; ex. ; i1 0.0000 15.0000 53 90 0.1 1 2 24 0.5 ; ;inst start dur note veloc noise radius omega sub subvel ; ; Memo ; -needs spatial extension using hrtfer or spat3d. ; -midi control extension to control p7, p8 ; -portament effect instr 2 icps = 440*powoftwo((p4-69)/12.0) iamp = p5 *60 ;; making a default envelop for note kamp_env expseg 0.01, p3*0.002, iamp, p3*0.9, 0.0001 kcps_env expseg icps*0.1, p3*0.002, icps*1.1, p3*0.9, icps ;; circular movement ifn1 = $IFN_SIN k_omega = p8 iamp = p7 isin = 40 ; around 1 icos = 2 ; around ksin oscil 1, k_omega, ifn1, 0 kcos oscil 1, k_omega, ifn1, 0.25 ;; circular part + note part ktri_env linseg 0, 0.01, 1, 0.5*p3, 1, 0.5*p3, 0 kcps_env = kcps_env + kcos*ktri_env*iamp*icos kamp_env = kamp_env + ksin*ktri_env*iamp*isin ;; make sound ifn2 = $IFN_SINUSOIDS asig oscil kamp_env, kcps_env, ifn2, 0.00 asub oscil kamp_env*p10, kcps_env*powoftwo(p9/12.0), ifn2, 0.00 ;; pink noise to add awhite unirand 2.0 awhite = awhite - 1.0 anoise pinkish awhite*p6, 1, 0, 0, 1 ;; making a amplitude envelop for noise which follows after main note knoise_env expseg 0.01, p3*0.1, iamp*p6, p3*1.0, 0.001 anoise = anoise*knoise_env aout_l = ($M_SQRT2/2.0*(kcos+ksin))*(anoise + asig + asub) aout_r = ($M_SQRT2/2.0*(kcos-ksin))*(anoise + asig + asub) ;; add effects aL, aR freeverb aout_l, aout_r, 0.99, 0.2, sr, 0 outs aL, aR gadly_l = gadly_l + aout_l gadly_r = gadly_l + aout_r endin
遠い波の音
この楽器はcsound bookのCDに収録されていたnight.orcという楽器を「まねて」作りました。pluckを微妙に周波数をずらせてうねらせて素敵な音になっています。細かい泡の感じを出したかったのでshakerを使っています。wguide2を加えていますのがあまりその効果はないかな。でも、かなり波の音に聞こえて自分的にはかなり満足。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; KONAMI v1 by a9a9qq@gmail.com, ; ; The wave sounds are implemented in various ways, yet another wave sound using ; shaker opcodes. ; ; p4: note in MIDI. 60 means C4, 261Hz. 0-127 ; p5: velocity in MIDI. 0-127 ; p6: panning in radian -pi/2 to pi/2 ; ; ex. ; p1 p2 p3 p4 p5 p6 ; inst start dur note veloc rad ; i2 0 8 37 10 -0.7 ; i2 1 12 35 20 0 ; instr 3 idur = p3 icps = 440*powoftwo((p4-69)/12.0) iamp = p5 *60 irad = p6 k1 linseg 0,idur/3,iamp*0.95,idur*2/3, 0 a1 shaker k1, icps*0.998, 8, 0.999, 100, 0 a2 shaker k1, icps*1.002, 8, 0.999, 100, 0 ares1 wguide2 a1, 30, 100, 10, 150, 0.2, 0.27 ares2 wguide2 a2, 1300, 100, 1100, 150, 0.2, 0.28 k2 linseg 0,idur*2/3,iamp*0.95,idur/3,0 a3 shaker k2, icps*0.999, 8, 0.999, 100, 0 a4 shaker k2, icps*1.001, 8, 0.999, 100, 0 ares3 wguide2 a3, 300, 100, 400, 150, 0.2, 0.25 ares4 wguide2 a4, 1300, 100, 1400, 150, 0.2, 0.25 asig = ares1+ares2+ares3+ares4 arev reverb asig, 1.0 adly delay asig, 0.05, 0 aL = $M_SQRT2/2.0*(cos(irad)+sin(irad))*(asig+arev*0.2+adly) aR = $M_SQRT2/2.0*(cos(irad)-sin(irad))*(asig+arev*0.2+adly) outs aL, aR endin
銅鑼の音(になってない)
銅鑼の音を作りたかったのだけどもう少し考えないと難しそう。なんだか意味もなく、いろんな音を加えているがまだ試行錯誤中。初期アタックで沢山の音が必要なのはわかるが使いすぎている割にイメージの湧かない音だ。まだまだ。定常部分についてはhttp://www.adp-gmbh.ch/csound/instruments/gong.htmlを参考にした。
#define $IFN_STRIKE #41# #define $IFN_VIBRATO #42# #define $IFN_SINUSOIDS #43# gitab ftgen $IFN_STRIKE, 0, 256, 1, "marmstk1.wav", 0, 0, 0, gitab ftgen $IFN_VIBRATO, 0, 128, 10, 1, gitab ftgen $IFN_SINUSOIDS 0, 65536, 10, 1, 0.5, 0.25, 0.1, 0.02, 0.005, ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; DORA v0.01 by a9a9qq@gmail.com, ; ; I wanted dora, but not much alike. ; ; p4: note in MIDI. 60 means C4, 261Hz. 0-127 ; p5: velocity in MIDI. 0-127 ; p6: ihrd | ; p7: ipos | ; p8: kvibf | look up the csound manual for the details of gogobel or vibes ; p9: kvamp | ; ; ex. ; p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 ; inst start dur amp frq ihard ipos kvibf kvamp aenv ; i3 248.5 32 1500 135.4 0.01 0.561 2.0 2.0 8.0 instr 4 kenvAmp linseg p4, p11, 0.0001 kenvFrq = p5 ;linseg p5, p3*0.02, 3800, p3*0.8, 100 ihrd = p6 ;the hardness of the stick used in the strike. 0-1 ipos = p7 ;where the block is hit, in the range 0 to 1. imp = $IFN_STRIKE ;a table of the strike impulses. default - marmstk1.wav kvibf = p8 ; frequency of vibrato in Hertz. Suggested range is 0 to 12 kvamp = p9 ;amplitude of the vibrato ivfn = $IFN_VIBRATO ;shape of vibrato - sine table idec = 0.1 ;time before end of note when damping is introduced a0 gogobel kenvAmp*0.8, kenvFrq/2.0+0.004,ihrd,ipos,imp,kvibf,kvamp,ivfn; a1 gogobel kenvAmp*0.7, kenvFrq/2.0-0.004,ihrd,ipos,imp,kvibf,kvamp,ivfn; a2 vibes kenvAmp*0.5, kenvFrq*1.003, ihrd,ipos,imp,kvibf,kvamp,ivfn,idec a3 vibes kenvAmp*0.5, kenvFrq*0.997, ihrd,ipos,imp,kvibf,kvamp,ivfn,idec ; oscil part is mostrly from http://www.adp-gmbh.ch/csound/instruments/gong.html ifn = $IFN_SINUSOIDS a5 oscil kenvAmp, kenvFrq, ifn a6 oscil 0.8333*kenvAmp*0.6, 1.1541 * kenvFrq, ifn a7 oscil 0.6667*kenvAmp*0.6, 1.6041 * kenvFrq, ifn a8 oscil 1.0000*kenvAmp*0.6, 1.5208 * kenvFrq, ifn a9 oscil 0.3333*kenvAmp*0.6, 1.4166 * kenvFrq, ifn a10 oscil 0.3333*kenvAmp*0.6, 2.7916 * kenvFrq, ifn a11 oscil 0.3333*kenvAmp*0.6, 3.3833 * kenvFrq, ifn aout = a0+a1+a2+a3+a5+a6+a7+a8+a9+a10+a11 ifn=32 iamp=$M_SQRT2/2.0 ksin oscil iamp, 3.0, ifn, 0 kcos oscil iamp, 3.0, ifn, 0.25 aout_l = (ksin+kcos)*aout aout_r = (kcos-ksin)*aout outs aout_r, aout_l gamix_r = gamix_r + aout_r gamix_l = gamix_l + aout_l endin