月曜日, 9月 25, 2006

「サクラ」でMML演習5(続き-5)

昨日やってみたように、人の声を内蔵音源で演奏させるにやはり無理なところもあるので、今日はサンプリング音源のSoundFontを使って演奏させてみる。

方法は、「サクラ」のMIDI出力を、MIDI-Yokeを使って中継し、sfz(SoundFont Player)を使って鳴らすというものだ。

MIDI Yoke Junction
http://www.midiox.com/index.htm?http://www.midiox.com/myoke.htm

sfz
http://www.rgcaudio.com/sfz.htm


//_______ ここから _______________

Array O5 = ({ド},{ミ},{ファ},{ソ},{シ},{`ド},{`ミ},{`ファ})
Int N Int N1 Int N2 Int PanR=20 Int PanL=100 Int Pos Int Vol=38

Function SwingS(DF){
 STR ML={} [2
  ML=ML+O5(0+DF)+{4.}+O5(1+DF)+{8}+O5(2+DF)+{4.}+O5(3+DF)+{8}
  ML=ML+O5(4+DF)+{4.}+O5(3+DF)+{8}+O5(2+DF)+{4.}+O5(1+DF)+{8}
 ] ML=ML+O5(0+DF)+{1}
 Result=ML
}

Function SwingR(DF){
 #ML1={} #ML2={}[8
 N1=Random(0,5) N2=Random(0,5)
 #ML1=#ML1+O5(N1)+{4.}+O5(N2)+{8}
 #ML2=#ML2+O5(N1+DF)+{4.}+O5(N2+DF)+{8}
 ]
 N=Random(0,5)
 #ML1=#ML1+O5(N)+{1} #ML2=#ML2+O5(N+DF)+{1}
 Result=#ML1
}

#ML=SwingS(0)
TR(1) v(Vol) o6 [1 #ML]
#ML=SwingR(0)
TR(1) v(Vol) o5 [1 #ML]

Pos=Time TR(2) Time(Pos)

#ML1=SwingS(0) #ML2=SwingS(1)
TR(1) v(Vol) P(PanR) o6 [1 #ML1]
TR(2) v(Vol) P(PanL) o5 [1 #ML2]

SwingR(1)
TR(1) v(Vol) P(PanR) o6 [1 #ML1]
TR(2) v(Vol) P(PanL) o5 [1 #ML2]

#ML1=SwingS(0) #ML2=SwingS(3)
TR(1) v(Vol) P(PanR) o6 [1 #ML1]
TR(2) v(Vol) P(PanL) o5 [1 #ML2]

SwingR(3)
TR(1) v(Vol) P(PanR) o6 [1 #ML1]
TR(2) v(Vol) P(PanL) o5 [1 #ML2]

//_______ ここまで _______________



SoundFontの声にはビブラートがかかっているので、「素敵な即興演奏講座5」で言っている「ふるえ」に相当するかどうかはわからないが、かなりいい感じに聞こえる。「ずり下がり」については、sfzではうまく再現できなかったので、プログラムから除いてある。