水曜日, 12月 20, 2006

「なでしこ」でフォトmusic その8

今日は、昨日までのプログラムをちょっとV-UPして、演奏開始ボタン以外の機能ボタンを付けてみる。

演奏開始・・・・MML演奏命令で演奏
鍵盤表示・・・・TEMPファイル経由で外部のMIDIプレイヤーを起動
楽譜表示・・・・TEMPファイル経由で外部の楽譜ソフトを起動
MIDI保存・・・・ファイル名を指定してMIDI形式で保存
終了・・・・プログラム終了

//フォトmusic_8
母艦="尺八・箏・三絃・十七絃のための絵音"

Xsize=20; Ysize=10

言う("画像を選択してください")
画像WKとはイメージ; FN=ファイル選択("*.jpg"); 画像WKの画像=FN
画像リサイズ(画像WK,Xsize,Ysize)
表示("{ファイル名抽出(FN)} を 横={Xsize} 縦={Ysize} に変換しました")

RGBリスト="連番,X座標,Y座標,色コード,R,G,B,音(C),音(R),音(G),音(B)"

N=0;Y=0
Ysize 回
 X=0
 Xsize 回
  N=N+1
  C=画像色取得(画像WK,X,Y); RGB分解(C,R,G,B)
  RGBリスト[N,0]=N
  RGBリスト[N,1]=X
  RGBリスト[N,2]=Y
  RGBリスト[N,3]=C
  RGBリスト[N,4]=R
  RGBリスト[N,5]=G
  RGBリスト[N,6]=B
  X=X+1
 ここまで
 Y=Y+1
ここまで

画像高速リサイズ(画像WK,Xsize*10,Ysize*10)

音階[1]=区切(『"レ/"ミ♭/"ソ/"ラ/"シ♭/レ/ミ♭/ソ/ラ/シ♭/`ド/`レ/`ミ♭』 "/")
音階[2]=区切(『レ/"ソ/"ラ/シ♭/レ/ミ♭/ソ/ラ/シ♭/`レ/`ミ♭/`ソ/`ラ』 "/")

楽譜[0]="Tempo=96"
楽譜[1]="TR(1) 音色(Shakuhachi) v.Random(60) REV(80) V(100) P(64-00) o6 "
楽譜[2]="TR(2) 音色(Koto) v.Random(40) REV(80) V(080) P(64-40) o5 "
楽譜[3]="TR(3) 音色(Shamisen) v.Random(40) REV(80) V(100) P(64-00) o5 "
楽譜[4]="TR(4) 音色(Koto) v.Random(40) REV(80) V(080) P(64+40) o4 "

P=0
Xsize*Ysize 回
 T=1
 4 回
  音程=(RGBリスト[P,T+2]%13); 音長=RandomSelect("2,4,8")
  もし(T==1)ならば
   音符=音階[1,音程]&音長
  違えば
   音符=音階[2,音程]&音長
  ここまで
  楽譜[T]=楽譜[T]&音符; RGBリスト[P+1,T+6]=音符
  T=T+1
 ここまで
 P=P+1
ここまで

RGB表示とはグリッド; そのW=520; RGB表示のアイテム=RGBリスト
表示(楽譜[0])
4 回
 表示(LEFT(楽譜[回数],72)&"・・・・")
ここまで

PX=230;PY=20;PS=80
鍵盤表示アプリ="C:\Program Files\TMIDI Player\TMIDI.EXE"
楽譜表示アプリ="C:\Program Files\PrintMusic 2006J Demo\PrintMusic.exe"

演奏開始ボタンとはボタン;そのX=PX+PS*0;そのY=PY
演奏開始ボタンをクリックした時は
 MML演奏(楽譜)

鍵盤表示ボタンとはボタン;そのX=PX+PS*1;そのY=PY
鍵盤表示ボタンをクリックした時は
 MML変換(楽譜,"temp.mid")
 起動("{鍵盤表示アプリ} temp.mid");ファイル完全削除("temp.mid")

楽譜表示ボタンとはボタン;そのX=PX+PS*2;そのY=PY
楽譜表示ボタンをクリックした時は
 MML変換(楽譜,"temp.mid")
 起動("{楽譜表示アプリ} temp.mid");ファイル完全削除("temp.mid")

MIDI保存ボタンとはボタン;そのX=PX+PS*3;そのY=PY
MIDI保存ボタンをクリックした時は
 MML変換(楽譜,保存ファイル選択("*.mid"))

終了ボタンとはボタン;そのX=PX+PS*4;そのY=PY
終了ボタンをクリックした時は
 終了

●RandomSelect(N)
 A=区切(N,",");R=配列要素数(A);戻る(A[乱数(R)])

●RGB分解(C,{参照渡し}R,{参照渡し}G,{参照渡し}B)
 R=INT(C/(256*256))
 G=INT((C-R*256*256)/256)
 B=C-R*256*256-G*256

//ここまで



鍵盤表示ボタンで起動した、TMIDI Playerの画面



「なでしこ」でアルゴリズム作曲したMIDIデータを、Visualにチェックできるので、なかなか便利だ。