いらないモノ、ひつようなモノ

書籍、音楽、そして若干のテクノロジー

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メモ 目次に戻る

この楽器は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

銅鑼の音(になってない)

←csoundメモ 目次に戻る

 銅鑼の音を作りたかったのだけどもう少し考えないと難しそう。なんだか意味もなく、いろんな音を加えているがまだ試行錯誤中。初期アタックで沢山の音が必要なのはわかるが使いすぎている割にイメージの湧かない音だ。まだまだ。定常部分については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