/////// このスクリプトはMIDファイル用です #include "typedef.h" #maxloop 32000 /////////////変数の宣言///////////// BYTE s0,s1,s2,s3,s4,s5,s6,s7; int r,r2; UINT i,j,k; WORD w; LONG FileSize=GetFileSize(); string sss,ss1,ssd; /////////////関数の宣言///////////// void Lizum(BYTE a);//リズム音の選択 void NoteOn(BYTE a,BYTE b,BYTE c);//ノートオン void NoteOff(BYTE a,BYTE b);//ノートオフ void SelectGattuki(BYTE a);//楽器の選択 void SelectControl(BYTE a);//コントロールチェンジ void Delta(BYTE a,BYTE b,BYTE c,BYTE d);//デルタタイム void StatusByte(int a,string ssa);//ラーニングステータスの処理 /////////////メイン処理///////////// r=0; i=0; w=0; s1=GetByte(GetCurrentOffset()); s2=GetByte(GetCurrentOffset()+1); s3=GetByte(GetCurrentOffset()+2); s4=GetByte(GetCurrentOffset()+3); if(s1==0x4D && s2==0x54 && s3==0x68 && s4==0x64) { sss="ヘッダID MThd "; $BYTE sss[4]; w=GetByte(GetCurrentOffset()+3); sss="データバイト数 "+tostr(w)+" "; $BYTE sss[4]; w=GetByte(GetCurrentOffset()+1); if(s2==0x00){k=0;}if(s2==0x01){k=1;}if(s2==0x02){k=2;} sss="フォーマット "+tostr(w)+" "; $BYTE sss[2]; w=GetByte(GetCurrentOffset()+1); if(s2==0x00)k=1;if(s2==0x0A){k=10;} sss="トラック数 "+tostr(w)+" "; $BYTE sss[2]; s1=GetByte(GetCurrentOffset()); s2=GetByte(GetCurrentOffset()+1); w=s1*256+s2; if(s2==0x00)k=1;if(s2==0x0A){k=10;} sss="時間単位 "+tostr(w)+" "; $BYTE sss[2]; } else{MessageBox("これはMIDIファイルではありません!!","警告!!",0x00000000);return;} while(GetCurrentOffset()=1){r2=r-1;StatusByte(r2,sss);}}//ステータスバイトの処理 if(s1>=0x80 && s1<=0x8F){r=3;NoteOff(s1,s2);}//ノートオフ if(s1>=0x90 && s1<=0x9F){r=3;NoteOn(s1,s2,s3);}//ノートオン if(s1>=0xA0 && s1<=0xAF){r=3;sss="ポリフォニックキープレッシャ";$BYTE sss[3];} if(s1>=0xB0 && s1<=0xBF){r=3;sss="";SelectControl(s2);}//コントロールチェンジ if(s1>=0xC0 && s1<=0xCF){r=2;SelectGattuki(s2);}//楽器の選択 if(s1>=0xD0 && s1<=0xDF){r=2;sss="チャンネルプレッyシャ";$BYTE sss[2];} if(s1>=0xE0 && s1<=0xEF){r=3;sss="ピッチベンド";$BYTE sss[3];} if(s1>=0xF0 && s1<=0xFF){ if(s1==0xF0){r=0; for(w=0;w<100;w++) {if(GetByte(GetCurrentOffset()+w)==0xF7)break;} sss="エクスクルーシブ";$BYTE sss[w];w=0; } if(s1==0xF1){r=2;sss=""クォーターフレーム;$BYTE sss[r];} if(s1==0xF2){r=3;sss="ソングポジションポインタ";$BYTE sss[r];} if(s1==0xF3){r=2;sss="ソングセレクト";$BYTE sss[r];} if(s1==0xF4){r=1;sss="未定義";$BYTE sss[r];} if(s1==0xF5){r=1;sss="未定義";$BYTE sss[r];} if(s1==0xF6){r=1;sss="チューンリクエスト";$BYTE sss[r];} if(s1==0xF8){r=1;sss="タイミングクロック";$BYTE sss[r];} if(s1==0xF9){r=1;sss="未定義";$BYTE sss[r];} if(s1==0xFA){r=1;sss="スタート";$BYTE sss[r];} if(s1==0xFB){r=1;sss="コンティニュ";$BYTE sss[r];} if(s1==0xFC){r=1;sss="ストップ";$BYTE sss[r];} if(s1==0xFD){r=1;sss="未定義";$BYTE sss[r];} if(s1==0xFE){r=1;sss="アクティブセッシング";$BYTE sss[r];} if(s1==0xFF){r=0; if(s2==0x01){sss="メタイベント テキスト";} if(s2==0x02){sss="メタイベント 著作権表示";} if(s2==0x03){sss="メタイベント シーケンス名";} if(s2==0x04){sss="メタイベント 楽器名";} if(s2==0x05){sss="メタイベント 歌詞";} if(s2==0x06){sss="メタイベント マーカ";} if(s2==0x7F){sss="メタイベント 固有情報";} if(s2==0x07){sss="メタイベント キューポイント";} if(s2==0x00){sss="メタイベント シーケンス番号"+tostr(s3);} if(s2==0x20){sss="メタイベント チャンネル";} if(s2==0x2F){sss="トラック"+tostr(i)+"の終わり";} if(s2==0x51){sss="メタイベント テンポ";} if(s2==0x54){sss="メタイベント SMPTE";} if(s2==0x58){sss="メタイベント 拍子";} if(s2==0x59){sss="メタイベント 調号";} w=s3+3;$BYTE sss[w];w=0; } } } } return; /////////////リズム音の選択///////////// void Lizum(BYTE b){ if(b<=34)ss1="未定義"; if(b==35)ss1="Acoustic Bass "; if(b==36)ss1="Bass Drum1"; if(b==37)ss1="Side Stick"; if(b==38)ss1="Acoustic Snare"; if(b==39)ss1="Hand Clap"; if(b==40)ss1="Electric Snare"; if(b==41)ss1="Low Floor Tom"; if(b==42)ss1="Closed Hi-Hat"; if(b==43)ss1="High Floor Tom"; if(b==44)ss1="Pedal Hi-Hat"; if(b==45)ss1="Low Tom"; if(b==46)ss1="Open Hi-Hat"; if(b==47)ss1="Low-Mid Tom"; if(b==48)ss1="Hi-Mid Tom"; if(b==49)ss1="Crash Cymbal1"; if(b==50)ss1="High Tom"; if(b==51)ss1="Ride Cymbal1"; if(b==52)ss1="Chinese Cymbal"; if(b==53)ss1="Ride Bell"; if(b==54)ss1="Tambourine"; if(b==55)ss1="Splash Cymbal"; if(b==56)ss1="Cowbell"; if(b==57)ss1="Crash Cymbal2"; if(b==58)ss1="Vibraslap"; if(b==59)ss1="Ride Cymbal2"; if(b==60)ss1="Hi Bongo"; if(b==61)ss1="Low Bongo"; if(b==62)ss1="Mute Hi Conga"; if(b==63)ss1="Open Hi Conga"; if(b==64)ss1="Low Conga"; if(b==65)ss1="High Timbale"; if(b==66)ss1="Low Timbale"; if(b==67)ss1="High Agogo"; if(b==68)ss1="Low Agogo"; if(b==69)ss1="Cabasa"; if(b==70)ss1="Maracas"; if(b==71)ss1="Short Whistle"; if(b==72)ss1="Long Whistle"; if(b==73)ss1="Short Guiro"; if(b==74)ss1="Long Guiro"; if(b==75)ss1="Clavas"; if(b==76)ss1="Hi Wood Block"; if(b==77)ss1="Low Wood Block"; if(b==78)ss1="Mute Cuica"; if(b==79)ss1="Open Cuica"; if(b==80)ss1="Mute Triangle"; if(b==81)ss1="Open Triangle"; if(b>=82)ss1="未定義"; } /////////////ノートオン///////////// void NoteOn(BYTE a,BYTE b,BYTE c){ BYTE n; n=a-0x90; if(n!=0x0F){if(c>0x00){sss="ノートオン ";}else{sss="ノートオン(オフ同様) ";}$BYTE sss[3];} else{ Lizum(b);sss="リズムオン "+ss1; $BYTE sss[3]; } } /////////////ノートオフ///////////// void NoteOff(BYTE a,BYTE b){ BYTE n; n=a-0x80; if(n!=0x0F){sss="ノートオフ ";$BYTE sss[3];} else{ Lizum(b);sss="リズムオフ "+ss1; $BYTE sss[3]; } } /////////////楽器の選択///////////// void SelectGattuki(BYTE a){ if(a==0x00)sss="音色 グランドピアノ "; if(a==0x01)sss="音色 ブライトピアノ "; if(a==0x02)sss="音色 エレキグランドピアノ "; if(a==0x03)sss="音色 ホンキートンクピアノ "; if(a==0x04)sss="音色 エレキピアノ 1 "; if(a==0x05)sss="音色 エレキピアノ 2 "; if(a==0x06)sss="音色 ハープシコード "; if(a==0x07)sss="音色 クラビネット "; if(a==0x08)sss="音色 セレスタ "; if(a==0x09)sss="音色 鉄琴 "; if(a==0x0A)sss="音色 オルゴール "; if(a==0x0B)sss="音色 ビブラーフォン "; if(a==0x0C)sss="音色 マリンバ "; if(a==0x0D)sss="音色 木琴 "; if(a==0x0E)sss="音色 チューブラベル "; if(a==0x0F)sss="音色 ダルシマ "; if(a==0x10)sss="音色 ドローバーオルガン "; if(a==0x11)sss="音色 パーカッシブオルガン "; if(a==0x12)sss="音色 ロックオルガン "; if(a==0x13)sss="音色 チャーチオルガン "; if(a==0x14)sss="音色 リードオルガン "; if(a==0x15)sss="音色 アコーディオン "; if(a==0x16)sss="音色 ハーモニカ "; if(a==0x17)sss="音色 タンゴアコーディオン "; if(a==0x18)sss="音色 ギター(ナイロン) "; if(a==0x19)sss="音色 ギター(スチール) "; if(a==0x1A)sss="音色 エレキギター(ジャズ) "; if(a==0x1B)sss="音色 エレキギター(クリーン) "; if(a==0x1C)sss="音色 エレキギター(ミュート) "; if(a==0x1D)sss="音色 オーバードライブギター "; if(a==0x1E)sss="音色 ディストーションギター "; if(a==0x1F)sss="音色 ギターハーモニクス "; if(a==0x20)sss="音色 ベース "; if(a==0x21)sss="音色 エレキベース(フィンガー) "; if(a==0x22)sss="音色 エレキベース(ピック) "; if(a==0x23)sss="音色 フレットレスベース "; if(a==0x24)sss="音色 スラップベース 1 "; if(a==0x25)sss="音色 スラップベース 2 "; if(a==0x26)sss="音色 シンセベース 1 "; if(a==0x27)sss="音色 シンセベース 2 "; if(a==0x28)sss="音色 バイオリン "; if(a==0x29)sss="音色 ビオラ "; if(a==0x2A)sss="音色 チェロ "; if(a==0x2B)sss="音色 コントラバス "; if(a==0x2C)sss="音色 トレモロ弦楽器 "; if(a==0x2D)sss="音色 ピッチカート弦楽器 "; if(a==0x2E)sss="音色 オーケストラハープ "; if(a==0x2F)sss="音色 ティンパニー "; if(a==0x30)sss="音色 ストリング合唱 1 "; if(a==0x31)sss="音色 ストリング合唱 2 "; if(a==0x32)sss="音色 シンセ弦楽器 1 "; if(a==0x33)sss="音色 シンセ弦楽器 2 "; if(a==0x34)sss="音色 コーラス・アー "; if(a==0x35)sss="音色 コーラス・ウー "; if(a==0x36)sss="音色 シンセボイス "; if(a==0x37)sss="音色 オーケストラヒット "; if(a==0x38)sss="音色 トランペット "; if(a==0x39)sss="音色 トロンボーン "; if(a==0x3A)sss="音色 チューバ "; if(a==0x3B)sss="音色 ミュートトランペット "; if(a==0x3C)sss="音色 フレンチホルン "; if(a==0x3D)sss="音色 ブラスセクション "; if(a==0x3E)sss="音色 シンセブラス 1 "; if(a==0x3F)sss="音色 シンセブラス 2 "; if(a==0x40)sss="音色 ソプラノサックス "; if(a==0x41)sss="音色 アルトサックス "; if(a==0x42)sss="音色 テナーサックス "; if(a==0x43)sss="音色 バリトンサックス "; if(a==0x44)sss="音色 オーボエ "; if(a==0x45)sss="音色 イングリッシュホルン "; if(a==0x46)sss="音色 バスーン "; if(a==0x47)sss="音色 クラリネット "; if(a==0x48)sss="音色 ピッコロ "; if(a==0x49)sss="音色 フルート "; if(a==0x4A)sss="音色 リコーダー "; if(a==0x4B)sss="音色 パンフルート "; if(a==0x4C)sss="音色 ボトルブロー "; if(a==0x4D)sss="音色 尺八 "; if(a==0x4E)sss="音色 口笛 "; if(a==0x4F)sss="音色 オカリナ "; if(a==0x50)sss="音色 Lead 1(短形波) "; if(a==0x51)sss="音色 Lead 2(ノコギリ波) "; if(a==0x52)sss="音色 Lead 3(calliope) "; if(a==0x53)sss="音色 Lead 4(chiff) "; if(a==0x54)sss="音色 Lead 5(charang) "; if(a==0x55)sss="音色 Lead 6(ボイス) "; if(a==0x56)sss="音色 Lead 7(fifths) "; if(a==0x57)sss="音色 Lead 8(ベース+リード) "; if(a==0x58)sss="音色 Pad 1(new age) "; if(a==0x59)sss="音色 Pad 2(warm) "; if(a==0x5A)sss="音色 Pad 3(polysynth) "; if(a==0x5B)sss="音色 Pad 4(choir) "; if(a==0x5C)sss="音色 Pad 5(bowed) "; if(a==0x5D)sss="音色 Pad 6(メタル) "; if(a==0x5E)sss="音色 Pad 7(halo) "; if(a==0x5F)sss="音色 Pad 8(sweep) "; if(a==0x60)sss="音色 FX 1(雨) "; if(a==0x61)sss="音色 FX 2(サウンドトラック) "; if(a==0x62)sss="音色 FX 3(クリスタル) "; if(a==0x63)sss="音色 FX 4(アトモスフィア) "; if(a==0x64)sss="音色 FX 5(ブライトネス) "; if(a==0x65)sss="音色 FX 6(ゴブリン) "; if(a==0x66)sss="音色 FX 7(エコー) "; if(a==0x67)sss="音色 FX 8(SF) "; if(a==0x68)sss="音色 シタール "; if(a==0x69)sss="音色 バンジョー "; if(a==0x6A)sss="音色 三味線 "; if(a==0x6B)sss="音色 琴 "; if(a==0x6C)sss="音色 カリンバ "; if(a==0x6D)sss="音色 バグパイプ "; if(a==0x6E)sss="音色 フィードル "; if(a==0x6F)sss="音色 シャナイ "; if(a==0x70)sss="音色 鈴 "; if(a==0x71)sss="音色 アゴゴ "; if(a==0x72)sss="音色 スチールドラム "; if(a==0x73)sss="音色 ウッドブロック "; if(a==0x74)sss="音色 太鼓 "; if(a==0x75)sss="音色 メロディタム "; if(a==0x76)sss="音色 シンセ ドラム "; if(a==0x77)sss="音色 シンバル "; if(a==0x78)sss="音色 ギターフレットノイズ "; if(a==0x79)sss="音色 呼吸 "; if(a==0x7A)sss="音色 浜辺 "; if(a==0x7B)sss="音色 鳥のさえずり "; if(a==0x7C)sss="音色 電話のベル "; if(a==0x7D)sss="音色 ヘリコプター "; if(a==0x7E)sss="音色 拍手 "; if(a==0x7F)sss="音色 銃声 "; $BYTE sss [2]; } /////////////コントロールチェンジ///////////// void SelectControl(BYTE a){ if(a==0x00)sss="バンクセレクトMSB"; if(a==0x01)sss="モジュレーションデプスMSB"; if(a==0x02)sss="ブレスコントロールMSB"; if(a==0x03)sss="未定義"; if(a==0x04)sss="フットコントロールMSB"; if(a==0x05)sss="ボルタメントタイムMSB"; if(a==0x06)sss="RPNの値を設定MSB"; if(a==0x07)sss="メインボリュームMSB"; if(a==0x08)sss="バランスコントロールMSB"; if(a==0x09)sss="未定義"; if(a==0x0A)sss="左右バランスMSB"; if(a==0x0B)sss="音量の抑揚MSB"; if(a==0x0C)sss="未定義"; if(a==0x0D)sss="未定義"; if(a==0x0E)sss="未定義"; if(a==0x0F)sss="未定義"; if(a==0x10)sss="汎用操作子1MSB"; if(a==0x11)sss="汎用操作子2MSB"; if(a==0x12)sss="汎用操作子3MSB"; if(a==0x13)sss="汎用操作子4MSB"; if(a>=0x14 && a<=0x1F)sss="未定義"; if(a==0x20)sss="バンクセレクトLSB"; if(a==0x21)sss="モジュレーションデプスLSB"; if(a==0x22)sss="ブレスコントロールLSB"; if(a==0x23)sss=" 未定義"; if(a==0x24)sss="フットコントロールLSB"; if(a==0x25)sss="ボルタメントタイムLSB"; if(a==0x26)sss="RPNの値を設定LSB"; if(a==0x27)sss="メインボリュームLSB"; if(a==0x28)sss="バランスコントロールLSB"; if(a==0x29)sss="未定義"; if(a==0x2A)sss="左右バランスLSB"; if(a==0x2B)sss="音量の抑揚LSB"; if(a==0x2C)sss="未定義"; if(a==0x2D)sss="未定義"; if(a==0x2E)sss="未定義"; if(a==0x2F)sss="未定義"; if(a==0x30)sss="汎用操作子1LSB"; if(a==0x31)sss="汎用操作子2LSB"; if(a==0x32)sss="汎用操作子3LSB"; if(a==0x33)sss="汎用操作子4LSB"; if(a>=0x34 && a<=0x3F)sss="未定義"; if(a==0x40)sss="ホールド1"; if(a==0x41)sss="ボルタメント"; if(a==0x42)sss="ソステヌート"; if(a==0x43)sss="スフトペダル"; if(a==0x44)sss="未定義"; if(a==0x45)sss="ホールド2"; if(a==0x46)sss="メモリバッチセレクト"; if(a>=0x47 && a<=0x4F)sss="未定義"; if(a==0x50)sss="汎用操作子5"; if(a==0x51)sss="汎用操作子6"; if(a==0x52)sss="汎用操作子7"; if(a==0x53)sss="汎用操作子8"; if(a>=0x54 && a<=0x5A)sss="未定義"; if(a==0x5B)sss="リバーブ"; if(a==0x5C)sss="トレモロ"; if(a==0x5D)sss="コーラス"; if(a==0x5E)sss="セレステ"; if(a==0x5F)sss="フェイザ"; if(a==0x60)sss="データインクリメント"; if(a==0x61)sss="データデクリメント"; if(a>=0x62 && a<=0x65)sss="RPN"; if(a>=0x66 && a<=0x77)sss="未定義"; if(a==0x78)sss="消音"; if(a==0x79)sss="コントロールの初期化"; if(a==0x7A)sss="ローカルコントロール"; if(a==0x7B)sss="オールノートオフ"; if(a==0x7C)sss="オムニオフ"; if(a==0x7D)sss="オムニオン"; if(a==0x7E)sss="モノモードオン"; if(a==0x7F)sss="ポリモードオン"; $BYTE sss[3]; } /////////////ラーニングステータスの処理///////////// void StatusByte(int a,string ssa){ string ssc; ssc=ssa+"(省略バイト)";$BYTE ssc[a]; } /////////////デルタタイム///////////// void Delta(BYTE a,BYTE b,BYTE c,BYTE d){ if(a<=0x7F){i=1;} if(a>0x7F){ if(b<=0x7F){i=2;} if(b>0x7F){ if(c<=0x7F){i=3;} if(c>0x7F){i=4; } } } ssd="デルタタイム "; $BYTE ssd[i]; }