約 3,015,170 件
https://w.atwiki.jp/nicoratch/pages/1134.html
概要 3Band EQとオーディオインターフェイスを搭載した2chDJコントローラー。Virtual DJ LE同梱。 スペック表 Comes with Virtual DJ LE * 1 channel line input Rec, Master and Booth RCA outputs Balanced XLR output with volume control 1/4" and 1/8" (3.5mm) headphone out with volume control XLR and 1/4” mic input with mic volume control Unit dimensions 360*260*70mm (W*D*H)* Unit weight 2.0kgs MIDI-6 http //www.wjtch.com/content/?40.html
https://w.atwiki.jp/ruwigi310/pages/15.html
このページについて ここは自分で作ったMIDIの出来の悪いものをまとめたものです。 First Battle ZECTERIAで没となった曲 動画 ファイルは準備してない
https://w.atwiki.jp/nicoratch/pages/1130.html
概要 3Band EQを搭載しUSBメモリ使用可能なDJコントローラー。virtual dj同梱。 スペック表 lnput microphone (jack/XLR),headphones 2_0 full speed built-in sound card,DAC sampling rate from 8kHz, 16kHz,44.1 kHz to 48kHz with 16bit resolution,Dynamic range 88db THD+N-79dB~84dB Unit dimensions 484*320*91 mm(W*D*H) Unit weight 3.8kgs MIDI 18A http //www.wjtch.com/content/?39.html
https://w.atwiki.jp/utiyamat/pages/17.html
3バイト(24bit)のメッセージである MIDIのバイトには2種類ある :ステータスバイトとデータバイト 最上位ビットである7ビット目で、ステータスバイトかデータバイトなのかを判断する。
https://w.atwiki.jp/evangame_2nd/pages/24.html
よくRPGツクールはMIDIまわりのトラブルが多いと聞きます。 このページでは、MIDI関連の情報を記載する予定です。 MIDI関連のトラブル 有名なのは音化け(全部PIANO化)や無音、音程やエフェクトのかかり具合の異常等です。 ググって見たところこれらの多くの問題は、Harmony.dllの仕様によるもののようです。 RPGツクール2000 ver1.51以降 及び 2003 ver1.06以降 Harmony.dllの仕様変更にともない、トラブルが激減しました。 また余談ですが、BGM(Music)にmp3ファイルの使用も可能となりました。 上記のバージョンを使っている場合、トラブルは回避されると思います。 RPGツクール2000 ver1.50以下 及び 2003 ver1.05以下 闘グラフィック表示の優先順位の仕様の変更等で過去のバージョンを分けてインストールしていらっしゃる方もいると思うので掲載しておきます。 なぜ音化けが起こるのか RPGツクール200xでは「Harmony.dll」というファイルを使用し、MIDIデータの再生を管理しています。「Harmony.dll」は曲の再生と同時に自動的にGM Level 1で音源をリセットする仕様になっているようです。 ところが、多くの場合、MIDIファイルに初期化メッセージ(エクスクルーシブ)を挿入されています。これはMIDI製作者にとって常識だからです。 結果、「Harmony.dll」の音源の初期化処理とMIDI側の初期化処理が、ほぼ同時に行われてしまい、PC(又は音源)が処理し切れずにその後に配置してあるイベントまでもが無視されてしまうわけです。 一般的に初期化信号のあとには、トラックごとの情報(Program Change、Control Change等)が格納されているため、これらが送信されないと、全てのトラックがピアノのままになってしまいます。 補足 「Harmony.dll」は曲の再生と同時に音源のリセット(GM)をかけるのですが、 その後、一番最初のノートイベント(音符)迄を高速処理しているものと思われます。 MIDI創作者が曲の先頭にリセットを挿入していない場合には音化けしないのはその為 でしょう。 しかし、この高速処理の為に音源のリセット中に音色が指定されてしまい、上記の様な 事態を引き起こしていると考えられます。 対策 アップデートしてバージョンアップする 最も簡単かつ安全。だが他の仕様も変わるので注意。 音源初期化のエクスクルーシブを削除する トラックの初期化情報は当然残します。 MIDIデータ先頭(Meas 0 Tick 0000)にベロシティ0の無音ノートを挿入 補足にあるように、、一番最初のノートまで高速再生しますから、データの先頭に ノートイベントがあれば、高速読み込みは無効となります。 ですが、曲の読み込み速度が若干落ちる可能性もありますので注意してください。
https://w.atwiki.jp/vst_prog/pages/79.html
トップページ MIDIメッセージ処理(改良版) MIDIメッセージにあわせて動作するVSTのサンプルの改良版である。 下記VSTはSynthとしてロードされ、常にノイズを発生させる。実行時は音量に注意してほしい。 ノイズのボリュームをMIDI CC7でコントロールできる。 サンプルコード全体 【CMidiMsg.h】 #pragma once#include string.h #include "audioeffectx.h" // ============================================================================================// MIDI処理用の定義// ============================================================================================#define MIDIMSG_MAXNUM 255 struct MidiMessage{VstInt32 deltaFrames; //MIDIメッセージを処理するタイミングunsigned char message; //MIDIメッセージ番号unsigned char channel; //MIDIチャンネルunsigned char data1; //MIDIデータ1unsigned char data2; //MIDIデータ2}; class CMidiMsg{protected int cur; //読み込み中のMIDIの位置int num; //受け取ったMIDIメッセージの数MidiMessage buf[MIDIMSG_MAXNUM]; //受け取ったMIDIメッセージを保管するバッファpublic CMidiMsg(void);~CMidiMsg(void); // バッファのクリア等を行う。virtual void clearMidiMsg(); // MIDIメッセージをバッファに追加する// バッファへの追加が成功すると1、失敗すると0を返すvirtual int addMidiMsg(VstMidiEvent *midievent);virtual int addMidiMsg(MidiMessage msg); // バッファからMIDIメッセージを取り出すvirtual MidiMessage getMidiMsg(); // バッファ中にあるMIDIメッセージの数を返すvirtual VstInt32 getMidiMessageNum(); // バッファから最初に取り出せるMIDIメッセージのDeltaFramesを返すvirtual VstInt32 getNextDeltaFrames(); // MIDIメッセージが何かを判断し、そのメッセージに対応した// onMidiKeyOn()関数、onMidiControlChange()関数等を呼び出す。virtual void midiProc(MidiMessage mididata); // midiProc()関数から呼び出される。// それぞれのMIDIメッセージに応じて処理を行う// 以下6つはオーバーライドして使うとよいvirtual void onMidiKeyOn (unsigned char channel, unsigned char noteNo, unsigned char velo) {}; // 関数の中身は空virtual void onMidiKeyOff (unsigned char channel, unsigned char noteNo, unsigned char velo) {}; // 関数の中身は空virtual void onMidiProgramChange(unsigned char channel, unsigned char program) {}; // 関数の中身は空virtual void onMidiPoliKeyPress (unsigned char channel, unsigned char noteNo, unsigned char pressure) {}; // 関数の中身は空virtual void onMidiChannelPress (unsigned char channel, unsigned char pressure) {}; // 関数の中身は空virtual void onMidiPitchBend (unsigned char channel, short pb) {}; // 関数の中身は空// 以下2つはあまりオーバーライドして使う必要はないvirtual void onMidiSystemMessage(unsigned char systemmsg, unsigned char data1, unsigned char data2); // 中身はCMidiMsg.cppに記載virtual void onMidiControlChange(unsigned char channel, unsigned char cc, unsigned char value); // 中身はCMidiMsg.cppに記載 // onMidiSystemMessage()関数より呼び出される。// システムメッセージに応じて処理する関数// オーバーライドして使うとよい// (ただし、ホストアプリケーションからSystem Messageが送られることはあまり無い?)virtual void onMidiQuarterFrame(unsigned char data) {};virtual void onMidiSongPointer(short songpoint) {};virtual void onMidiSongSelect(unsigned char data) {};virtual void onMidiChainRequest() {};virtual void onMidiTimingClock() {};virtual void onMidiStart() {};virtual void onMidiContinue() {};virtual void onMidiStop(){};virtual void onMidiActiveSensing() {};virtual void onMidiSystemReset() {}; // onMidiControlChange()関数より呼び出される。// コントロールチェンジメッセージに応じて処理する関数// オーバーライドして使うとよいvirtual void onMidiCC000 (unsigned char channel, unsigned char value) {};virtual void onMidiCC001 (unsigned char channel, unsigned char value) {}; // ModulationDepthvirtual void onMidiCC002 (unsigned char channel, unsigned char value) {};virtual void onMidiCC003 (unsigned char channel, unsigned char value) {};virtual void onMidiCC004 (unsigned char channel, unsigned char value) {};virtual void onMidiCC005 (unsigned char channel, unsigned char value) {}; // PortamentTimevirtual void onMidiCC006 (unsigned char channel, unsigned char value) {};virtual void onMidiCC007 (unsigned char channel, unsigned char value) {}; // ChannelVolumevirtual void onMidiCC008 (unsigned char channel, unsigned char value) {};virtual void onMidiCC009 (unsigned char channel, unsigned char value) {};virtual void onMidiCC010 (unsigned char channel, unsigned char value) {}; // Panvirtual void onMidiCC011 (unsigned char channel, unsigned char value) {};virtual void onMidiCC012 (unsigned char channel, unsigned char value) {}; // Expressionvirtual void onMidiCC013 (unsigned char channel, unsigned char value) {};virtual void onMidiCC014 (unsigned char channel, unsigned char value) {};virtual void onMidiCC015 (unsigned char channel, unsigned char value) {};virtual void onMidiCC016 (unsigned char channel, unsigned char value) {};virtual void onMidiCC017 (unsigned char channel, unsigned char value) {};virtual void onMidiCC018 (unsigned char channel, unsigned char value) {};virtual void onMidiCC019 (unsigned char channel, unsigned char value) {};virtual void onMidiCC020 (unsigned char channel, unsigned char value) {};virtual void onMidiCC021 (unsigned char channel, unsigned char value) {};virtual void onMidiCC022 (unsigned char channel, unsigned char value) {};virtual void onMidiCC023 (unsigned char channel, unsigned char value) {};virtual void onMidiCC024 (unsigned char channel, unsigned char value) {};virtual void onMidiCC025 (unsigned char channel, unsigned char value) {};virtual void onMidiCC026 (unsigned char channel, unsigned char value) {};virtual void onMidiCC027 (unsigned char channel, unsigned char value) {};virtual void onMidiCC028 (unsigned char channel, unsigned char value) {};virtual void onMidiCC029 (unsigned char channel, unsigned char value) {};virtual void onMidiCC030 (unsigned char channel, unsigned char value) {};virtual void onMidiCC031 (unsigned char channel, unsigned char value) {};virtual void onMidiCC032 (unsigned char channel, unsigned char value) {};virtual void onMidiCC033 (unsigned char channel, unsigned char value) {};virtual void onMidiCC034 (unsigned char channel, unsigned char value) {};virtual void onMidiCC035 (unsigned char channel, unsigned char value) {};virtual void onMidiCC036 (unsigned char channel, unsigned char value) {};virtual void onMidiCC037 (unsigned char channel, unsigned char value) {};virtual void onMidiCC038 (unsigned char channel, unsigned char value) {};virtual void onMidiCC039 (unsigned char channel, unsigned char value) {};virtual void onMidiCC040 (unsigned char channel, unsigned char value) {};virtual void onMidiCC041 (unsigned char channel, unsigned char value) {};virtual void onMidiCC042 (unsigned char channel, unsigned char value) {};virtual void onMidiCC043 (unsigned char channel, unsigned char value) {};virtual void onMidiCC044 (unsigned char channel, unsigned char value) {};virtual void onMidiCC045 (unsigned char channel, unsigned char value) {};virtual void onMidiCC046 (unsigned char channel, unsigned char value) {};virtual void onMidiCC047 (unsigned char channel, unsigned char value) {};virtual void onMidiCC048 (unsigned char channel, unsigned char value) {};virtual void onMidiCC049 (unsigned char channel, unsigned char value) {};virtual void onMidiCC050 (unsigned char channel, unsigned char value) {};virtual void onMidiCC051 (unsigned char channel, unsigned char value) {};virtual void onMidiCC052 (unsigned char channel, unsigned char value) {};virtual void onMidiCC053 (unsigned char channel, unsigned char value) {};virtual void onMidiCC054 (unsigned char channel, unsigned char value) {};virtual void onMidiCC055 (unsigned char channel, unsigned char value) {};virtual void onMidiCC056 (unsigned char channel, unsigned char value) {};virtual void onMidiCC057 (unsigned char channel, unsigned char value) {};virtual void onMidiCC058 (unsigned char channel, unsigned char value) {};virtual void onMidiCC059 (unsigned char channel, unsigned char value) {};virtual void onMidiCC060 (unsigned char channel, unsigned char value) {};virtual void onMidiCC061 (unsigned char channel, unsigned char value) {};virtual void onMidiCC062 (unsigned char channel, unsigned char value) {};virtual void onMidiCC063 (unsigned char channel, unsigned char value) {};virtual void onMidiCC064 (unsigned char channel, unsigned char value) {}; // DumperPedalvirtual void onMidiCC065 (unsigned char channel, unsigned char value) {}; // PortamentOnOffvirtual void onMidiCC066 (unsigned char channel, unsigned char value) {}; // SostenutoPedalvirtual void onMidiCC067 (unsigned char channel, unsigned char value) {}; // SoftPedalvirtual void onMidiCC068 (unsigned char channel, unsigned char value) {};virtual void onMidiCC069 (unsigned char channel, unsigned char value) {};virtual void onMidiCC070 (unsigned char channel, unsigned char value) {};virtual void onMidiCC071 (unsigned char channel, unsigned char value) {}; // Resonancevirtual void onMidiCC072 (unsigned char channel, unsigned char value) {}; // ReleaseTimevirtual void onMidiCC073 (unsigned char channel, unsigned char value) {}; // AttackTimevirtual void onMidiCC074 (unsigned char channel, unsigned char value) {}; // Brightnessvirtual void onMidiCC075 (unsigned char channel, unsigned char value) {}; // DecayTimevirtual void onMidiCC076 (unsigned char channel, unsigned char value) {}; // VibratoRatevirtual void onMidiCC077 (unsigned char channel, unsigned char value) {}; // VibratoDepthvirtual void onMidiCC078 (unsigned char channel, unsigned char value) {}; // VibratoDelayvirtual void onMidiCC079 (unsigned char channel, unsigned char value) {};virtual void onMidiCC080 (unsigned char channel, unsigned char value) {};virtual void onMidiCC081 (unsigned char channel, unsigned char value) {};virtual void onMidiCC082 (unsigned char channel, unsigned char value) {};virtual void onMidiCC083 (unsigned char channel, unsigned char value) {};virtual void onMidiCC084 (unsigned char channel, unsigned char value) {};virtual void onMidiCC085 (unsigned char channel, unsigned char value) {};virtual void onMidiCC086 (unsigned char channel, unsigned char value) {};virtual void onMidiCC087 (unsigned char channel, unsigned char value) {};virtual void onMidiCC088 (unsigned char channel, unsigned char value) {};virtual void onMidiCC089 (unsigned char channel, unsigned char value) {};virtual void onMidiCC090 (unsigned char channel, unsigned char value) {};virtual void onMidiCC091 (unsigned char channel, unsigned char value) {}; // ReverbSendvirtual void onMidiCC092 (unsigned char channel, unsigned char value) {}; // ChorusSendvirtual void onMidiCC093 (unsigned char channel, unsigned char value) {};virtual void onMidiCC094 (unsigned char channel, unsigned char value) {};virtual void onMidiCC095 (unsigned char channel, unsigned char value) {};virtual void onMidiCC096 (unsigned char channel, unsigned char value) {};virtual void onMidiCC097 (unsigned char channel, unsigned char value) {};virtual void onMidiCC098 (unsigned char channel, unsigned char value) {};virtual void onMidiCC099 (unsigned char channel, unsigned char value) {};virtual void onMidiCC100 (unsigned char channel, unsigned char value) {};virtual void onMidiCC101 (unsigned char channel, unsigned char value) {};virtual void onMidiCC102 (unsigned char channel, unsigned char value) {};virtual void onMidiCC103 (unsigned char channel, unsigned char value) {};virtual void onMidiCC104 (unsigned char channel, unsigned char value) {};virtual void onMidiCC105 (unsigned char channel, unsigned char value) {};virtual void onMidiCC106 (unsigned char channel, unsigned char value) {};virtual void onMidiCC107 (unsigned char channel, unsigned char value) {};virtual void onMidiCC108 (unsigned char channel, unsigned char value) {};virtual void onMidiCC109 (unsigned char channel, unsigned char value) {};virtual void onMidiCC110 (unsigned char channel, unsigned char value) {};virtual void onMidiCC111 (unsigned char channel, unsigned char value) {};virtual void onMidiCC112 (unsigned char channel, unsigned char value) {};virtual void onMidiCC113 (unsigned char channel, unsigned char value) {};virtual void onMidiCC114 (unsigned char channel, unsigned char value) {};virtual void onMidiCC115 (unsigned char channel, unsigned char value) {};virtual void onMidiCC116 (unsigned char channel, unsigned char value) {};virtual void onMidiCC117 (unsigned char channel, unsigned char value) {};virtual void onMidiCC118 (unsigned char channel, unsigned char value) {};virtual void onMidiCC119 (unsigned char channel, unsigned char value) {};virtual void onMidiCC120 (unsigned char channel, unsigned char value) {}; // AllSoundOffvirtual void onMidiCC121 (unsigned char channel, unsigned char value) {}; // AllControlResetvirtual void onMidiCC122 (unsigned char channel, unsigned char value) {};virtual void onMidiCC123 (unsigned char channel, unsigned char value) {};virtual void onMidiCC124 (unsigned char channel, unsigned char value) {};virtual void onMidiCC125 (unsigned char channel, unsigned char value) {};virtual void onMidiCC126 (unsigned char channel, unsigned char value) {}; // MonoModeOnOffvirtual void onMidiCC127 (unsigned char channel, unsigned char value) {}; // PoliModeOnOff}; 【CMidiMsg.cpp】 #include "CMidiMsg.h" CMidiMsg CMidiMsg(void){clearMidiMsg();} CMidiMsg ~CMidiMsg(void){} void CMidiMsg clearMidiMsg(){// メンバー変数を初期化するcur=0;num=0;memset(buf, 0, sizeof(MidiMessage)*MIDIMSG_MAXNUM);} int CMidiMsg addMidiMsg(VstMidiEvent *midievent){MidiMessage tmp;tmp.deltaFrames = midievent- deltaFrames;tmp.message = midievent- midiData[0] 0xF0;tmp.channel = midievent- midiData[0] 0x0F;tmp.data1 = midievent- midiData[1];tmp.data2 = midievent- midiData[2]; return addMidiMsg(tmp);} int CMidiMsg addMidiMsg(MidiMessage msg){// バッファがいっぱいなら0を返すif (num = MIDIMSG_MAXNUM)return 0; buf[num] = msg; num++;if (num MIDIMSG_MAXNUM) {num = MIDIMSG_MAXNUM;} return 1;}; MidiMessage CMidiMsg getMidiMsg(){MidiMessage tmp = buf[cur]; num--;if( num 0) { num = 0; } cur++;if( cur = MIDIMSG_MAXNUM) { cur = MIDIMSG_MAXNUM -1;} return tmp;} VstInt32 CMidiMsg getMidiMessageNum(){return num;} VstInt32 CMidiMsg getNextDeltaFrames(){return buf[cur].deltaFrames;} void CMidiMsg midiProc(MidiMessage mididata){short msb = 0;short lsb = 0;short pitchbend = 0; switch (mididata.message 0xF0){case 0x80 // ノートオフメッセージonMidiKeyOff(mididata.channel, mididata.data1, mididata.data2);break; case 0x90 // ノートオンメッセージ// ヴェロシティが0の場合はノートオフメッセージとして扱うif (mididata.data2 0){onMidiKeyOn(mididata.channel, mididata.data1, mididata.data2);}else{onMidiKeyOff(mididata.channel, mididata.data1, mididata.data2);}break; case 0xA0 // キープレッシャーメッセージonMidiPoliKeyPress(mididata.channel, mididata.data1, mididata.data2);break; case 0xB0 // コントロールチェンジメッセージonMidiControlChange(mididata.channel, mididata.data1, mididata.data2);break; case 0xC0 // プログラムチェンジメッセージonMidiProgramChange(mididata.channel, mididata.data1);break; case 0xD0 // チャンネルプレッシャーメッセージonMidiChannelPress(mididata.channel, mididata.data1);break; case 0xE0 // ピッチベンドメッセージlsb = (mididata.data1);msb = (mididata.data2);pitchbend = ((msb 7) | lsb) - 8192;onMidiPitchBend(mididata.channel, pitchbend);break; case 0xF0 // システムメッセージonMidiSystemMessage((mididata.message 0xF0) | (mididata.channel 0x0F), mididata.data1, mididata.data2);break;}} void CMidiMsg onMidiSystemMessage(unsigned char systemmsg, unsigned char data1, unsigned char data2){ short lsb = (data1);short msb = (data2);switch(systemmsg){case 0xF1 onMidiQuarterFrame(data1); break;case 0xF2 onMidiSongPointer( (msb 7) | lsb ); break;case 0xF3 onMidiSongSelect(data1); break;case 0xF6 onMidiChainRequest(); break;case 0xF8 onMidiTimingClock(); break;case 0xFA onMidiStart(); break;case 0xFB onMidiContinue(); break;case 0xFC onMidiStop(); break;case 0xFE onMidiActiveSensing(); break;case 0xFF onMidiSystemReset(); break;default break;}} void CMidiMsg onMidiControlChange(unsigned char channel, unsigned char cc, unsigned char value){switch(cc){case 0 onMidiCC000 (channel, value); break;case 1 onMidiCC001 (channel, value); break;case 2 onMidiCC002 (channel, value); break;case 3 onMidiCC003 (channel, value); break;case 4 onMidiCC004 (channel, value); break;case 5 onMidiCC005 (channel, value); break;case 6 onMidiCC006 (channel, value); break;case 7 onMidiCC007 (channel, value); break;case 8 onMidiCC008 (channel, value); break;case 9 onMidiCC009 (channel, value); break;case 10 onMidiCC010 (channel, value); break;case 11 onMidiCC011 (channel, value); break;case 12 onMidiCC012 (channel, value); break;case 13 onMidiCC013 (channel, value); break;case 14 onMidiCC014 (channel, value); break;case 15 onMidiCC015 (channel, value); break;case 16 onMidiCC016 (channel, value); break;case 17 onMidiCC017 (channel, value); break;case 18 onMidiCC018 (channel, value); break;case 19 onMidiCC019 (channel, value); break;case 20 onMidiCC020 (channel, value); break;case 21 onMidiCC021 (channel, value); break;case 22 onMidiCC022 (channel, value); break;case 23 onMidiCC023 (channel, value); break;case 24 onMidiCC024 (channel, value); break;case 25 onMidiCC025 (channel, value); break;case 26 onMidiCC026 (channel, value); break;case 27 onMidiCC027 (channel, value); break;case 28 onMidiCC028 (channel, value); break;case 29 onMidiCC029 (channel, value); break;case 30 onMidiCC030 (channel, value); break;case 31 onMidiCC031 (channel, value); break;case 32 onMidiCC032 (channel, value); break;case 33 onMidiCC033 (channel, value); break;case 34 onMidiCC034 (channel, value); break;case 35 onMidiCC035 (channel, value); break;case 36 onMidiCC036 (channel, value); break;case 37 onMidiCC037 (channel, value); break;case 38 onMidiCC038 (channel, value); break;case 39 onMidiCC039 (channel, value); break;case 40 onMidiCC040 (channel, value); break;case 41 onMidiCC041 (channel, value); break;case 42 onMidiCC042 (channel, value); break;case 43 onMidiCC043 (channel, value); break;case 44 onMidiCC044 (channel, value); break;case 45 onMidiCC045 (channel, value); break;case 46 onMidiCC046 (channel, value); break;case 47 onMidiCC047 (channel, value); break;case 48 onMidiCC048 (channel, value); break;case 49 onMidiCC049 (channel, value); break;case 50 onMidiCC050 (channel, value); break;case 51 onMidiCC051 (channel, value); break;case 52 onMidiCC052 (channel, value); break;case 53 onMidiCC053 (channel, value); break;case 54 onMidiCC054 (channel, value); break;case 55 onMidiCC055 (channel, value); break;case 56 onMidiCC056 (channel, value); break;case 57 onMidiCC057 (channel, value); break;case 58 onMidiCC058 (channel, value); break;case 59 onMidiCC059 (channel, value); break;case 60 onMidiCC060 (channel, value); break;case 61 onMidiCC061 (channel, value); break;case 62 onMidiCC062 (channel, value); break;case 63 onMidiCC063 (channel, value); break;case 64 onMidiCC064 (channel, value); break;case 65 onMidiCC065 (channel, value); break;case 66 onMidiCC066 (channel, value); break;case 67 onMidiCC067 (channel, value); break;case 68 onMidiCC068 (channel, value); break;case 69 onMidiCC069 (channel, value); break;case 70 onMidiCC070 (channel, value); break;case 71 onMidiCC071 (channel, value); break;case 72 onMidiCC072 (channel, value); break;case 73 onMidiCC073 (channel, value); break;case 74 onMidiCC074 (channel, value); break;case 75 onMidiCC075 (channel, value); break;case 76 onMidiCC076 (channel, value); break;case 77 onMidiCC077 (channel, value); break;case 78 onMidiCC078 (channel, value); break;case 79 onMidiCC079 (channel, value); break;case 80 onMidiCC080 (channel, value); break;case 81 onMidiCC081 (channel, value); break;case 82 onMidiCC082 (channel, value); break;case 83 onMidiCC083 (channel, value); break;case 84 onMidiCC084 (channel, value); break;case 85 onMidiCC085 (channel, value); break;case 86 onMidiCC086 (channel, value); break;case 87 onMidiCC087 (channel, value); break;case 88 onMidiCC088 (channel, value); break;case 89 onMidiCC089 (channel, value); break;case 90 onMidiCC090 (channel, value); break;case 91 onMidiCC091 (channel, value); break;case 92 onMidiCC092 (channel, value); break;case 93 onMidiCC093 (channel, value); break;case 94 onMidiCC094 (channel, value); break;case 95 onMidiCC095 (channel, value); break;case 96 onMidiCC096 (channel, value); break;case 97 onMidiCC097 (channel, value); break;case 98 onMidiCC098 (channel, value); break;case 99 onMidiCC099 (channel, value); break;case 100 onMidiCC100 (channel, value); break;case 101 onMidiCC101 (channel, value); break;case 102 onMidiCC102 (channel, value); break;case 103 onMidiCC103 (channel, value); break;case 104 onMidiCC104 (channel, value); break;case 105 onMidiCC105 (channel, value); break;case 106 onMidiCC106 (channel, value); break;case 107 onMidiCC107 (channel, value); break;case 108 onMidiCC108 (channel, value); break;case 109 onMidiCC109 (channel, value); break;case 110 onMidiCC110 (channel, value); break;case 111 onMidiCC111 (channel, value); break;case 112 onMidiCC112 (channel, value); break;case 113 onMidiCC113 (channel, value); break;case 114 onMidiCC114 (channel, value); break;case 115 onMidiCC115 (channel, value); break;case 116 onMidiCC116 (channel, value); break;case 117 onMidiCC117 (channel, value); break;case 118 onMidiCC118 (channel, value); break;case 119 onMidiCC119 (channel, value); break;case 120 onMidiCC120 (channel, value); break;case 121 onMidiCC121 (channel, value); break;case 122 onMidiCC122 (channel, value); break;case 123 onMidiCC123 (channel, value); break;case 124 onMidiCC124 (channel, value); break;case 125 onMidiCC125 (channel, value); break;case 126 onMidiCC126 (channel, value); break;case 127 onMidiCC127 (channel, value); break;default break;}} 【MyMidiSample2VST.cpp】 // ============================================================================================// インクルードファイル// ============================================================================================#include stdlib.h #include "audioeffectx.h" #include "CMidiMsg.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 0 //パラメータの数 // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyMidiSample2VST public AudioEffectX , public CMidiMsg{protected float volume;public MyMidiSample2VST (audioMasterCallback audioMaster); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); // MIDIメッセージをホストアプリケーションから受け取るためのメンバー関数VstInt32 processEvents (VstEvents* events); void onMidiCC007(unsigned char channel, unsigned char value);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyMidiSample2VST (audioMaster);} MyMidiSample2VST MyMidiSample2VST (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (true); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 //上記の関数を呼び出した後に初期化を行うvolume = 1.0f;} void MyMidiSample2VST processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){//入力、出力は2次元配列で渡される。//入力は-1.0f~1.0fの間で渡される。//出力は-1.0f~1.0fの間で書き込む必要がある。//sampleFramesが処理するバッファのサイズfloat* outL = outputs[0]; //出力 左用float* outR = outputs[1]; //出力 右用 for (int i = 0; i sampleFrames; i++){//ここで音声処理を行う。 // MIDIメッセージがあるか確認if ( getMidiMessageNum() 0){// MIDIメッセージを処理するタイミングかどうかを確認する。if( getNextDeltaFrames() = i){// MIDIメッセージをバッファから取り出し処理するmidiProc( getMidiMsg() );}} //出力バッファへ書き込む。outL[i] = volume * (float)((rand() % 256) -128) / 255.0f;outR[i] = volume * (float)((rand() % 256) -128) / 255.0f;}} // MIDIメッセージを処理するメンバー関数// processReplacing()の前に必ず1度だけ呼び出される。// VstInt32 MyMidiSample2VST processEvents (VstEvents* events){// MIDIのリストを初期化します。clearMidiMsg(); int loops = (events- numEvents); // VSTイベントの回数だけループをまわす。for (int i = 0;i loops; i++){// 与えられたイベントがMIDIならばmidimsgbufにストックするif ((events- events[i])- type == kVstMidiType){VstMidiEvent *midievent = (VstMidiEvent*)(events- events[i]);if( !addMidiMsg(midievent) ){break;}}} // 1を返さなければならないreturn 1;} // // onMidiCC007()関数をオーバーライドして、MIDI CC7の場合の動作を定義する。// ここではチャンネルに関係なく、MIDI CC7メッセージを受け取るとノイズのボリュームを// 変更するようにしている。void MyMidiSample2VST onMidiCC007 (unsigned char channel, unsigned char value){volume = (float)(value) / 127.0f;} VST Tipsトップページへ(準備中) 同一カテゴリのTips 項目 No. 概要
https://w.atwiki.jp/ff35/pages/97.html
MIDIリスト MIDIリスト 曲番はmidicompose.exeで並べられている順です 「FF5 バトル1」をNo.1として以降を順に記載しています [00]は番台を示してます。[120]は120番台の意味です 出典略号 CHO チョコボレーシング CRT クロノトリガー FF1~FF11 FinalFantasyシリーズ FRM フロントミッション LAL ライブアライブ RS1~RS3 Romancing Sa・Gaシリーズ RSM ロマンシングサガ ミンストレルソング RUD ルドラの秘宝 SF1~SF2 サガフロンティアシリーズ SD1~SD3 聖剣伝説シリーズ SG1~SG3 GBサガシリーズ SSD 新約聖剣伝説 USA ミスティッククエスト USG アンリミテッド:サガ [00] FF5 バトル1 RS1 下水道 RUD Battle for the Fields SF1 Battle#5 RUD Blazing Impact FF5 決戦 FF3 クリスタルのある洞窟 FF3 果てしなき大海原 FF5 勝利のファンファーレ [10] SF2 Feldschlacht4 CRT ガルディア城 FF2 戦闘シーン2 FF6 決戦 RUD Crime Heart FF1 カオスの神殿 なんとなくユーロ FF5 レクイエム FF1 カオスの神殿 FF4 ファイナルファンタジーIV FF4 幻獣の街 [20] FF7 リユニオン FF4 長い道のり FF7 忍びの末裔 FF2 街 FF7 J-E-N-O-V-A FF7 旅の途中で FF7 ケットシーのテーマ RUD The Spirit Chaser FF5 銀嶺を行く RS3 トレード [30] FF4 チョコボ FF3 悠久の風 FF5 暁の四戦士 RS1 アイシャのテーマ FF5 古代図書館 FF3 リュート FF4 ダンジョン CRT サラのテーマ SD1 ジュリアスの野望 FF9 黒のワルツ [40] FF7 山のむこうに FF3 バトル1 FF4 バトル1 FF3 バトル2 FF8 Starting Up FF2 戦闘シーン1 FF7 更に闘う者達 FRM The Evils of War RS3 玄城バトル RS3 バトル1 [50] FF5 ダンジョン FF7 もっと急げ! FF6 街角の子供達 FF5 ん? FF6 仲間を求めて FF9 バトル1 FF4 街のテーマ RS3 オーロラ FF4 踊る人形カルコブリーナ FF5 光を求めて [60] FF4 トロイア国 SD3 Nuclear Fusion FF4 ミシディア国 FF4 ダムシアン城 FF4 飛空艇 FF4 脱出 FF4 バブイルの塔 FF4 疑惑のテーマ CRT シルバード SG1 戦闘 [70] FF5 王家の宮殿 FF4 最後の闘い FF8 The Extreme FF7 神の誕生 FF4 バトル2 FF7 闇に潜む RS1 シェラハバトル SF2 Interludium RS1 バトル1 FF7 最期の日 [80] LAL 魔王への叙曲 FF2 古城 FF4 ドワーフの大地 RS3 氷湖 CHO 幻界 RS3 グレートアーチ RS3 迫り来る危機 RS1 バトル2 RS3 海底宮 SD1 果てしなき戦場 [90] FF4 サンバ・デ・チョコボ FF7 神羅ビル潜入 SD1 戦闘1 SD1 ドワーフのテーマ CRT 魔王決戦 RS3 カタリナのテーマ FF10シーモアバトル SD1 チョコボのテーマ FF5 バトル2 SD1 聖剣を求めて [100] SD1 王宮のテーマ RS3 最果ての島 RS3 魔王殿 RS3 魔王殿地下 FF9 ローズ・オブ・メイ SD1 ダンジョン3 FF8 Force Your Way SD1 マナの使命 FF1 海底神殿 SD1 村 [110] SD3 Evening Star SD1 最後の決戦 FF6 魔大陸 SD1 マナの神殿 FF4 バロン王国 SD3 Meridian Child SD1 ダンジョン1 SD3 Different Road RS3 ミューズのテーマ SSD 運命の鎖 [120] USA バトル2 RS3 ダンジョン2 SD2 愛に時間を FF9 フライヤのテーマ FF4 試練の山 RS3 エレンのテーマ FF4 巨人のダンジョン FF5 封印されしもの RS3 フィールド SD2 子午線の祀り [130] SF1 Battle #1 SF1 Battle #3 USA バトル1 RS1 決戦!サルーイン RS3 四魔貴族バトル1 RS3 四魔貴族バトル2 FF6 スピナッチ・ラグ FF7 牧場の少年 RS2 遥なる戦いの詩 RS2 プロローグ-七英雄の伝説-IV [140] FF7 悪夢の始まり FF8 Where I Belong FF1 マトーヤの洞窟 USA バトル3 SD1 レクイエム FF1 メインテーマ RS3 ダンジョン1 FF3 ドーガとウネの館 FF3 最後の死闘-序曲 CRT 世界変革の時 [150] LAL MEGALOMANIA RUD Earth Bound RS3 ビューネイの巣 RUD Creature from the Silent Sea RUD The Flame and The Arrow FF5 未知なる世界 FF6 大破壊 LAL 届かぬ翼 FF8 The Man with the Machine Gun RS3 妖精の村 [160] FF5 封印の書 FF9 最後の闘い FF6 妖星乱舞 FF5 最後の闘い FF6 戦闘 USG バトルテ-マⅠ CRT ボス・バトル2 CRT 時の回廊 FF4 オープニング SD2 ひとみを閉じて [170] RS3 聖王廟 SG2 Never Give Up SD2 森が教えてくれたこと CRT 戦い2 SG3 異次元のテーマ CRT ボス・バトル1 SD3 Person's Die FF1 バトルテーマ FF5 遥かなる故郷 CHO 白魔道士のテーマ [180] RS2 クジンシーとの戦い CHO ミシディア空中庭園 SSD 戦闘2 ~勇気と誇りを胸に~ FF8 Find Your Way FF5 プレリュード RS3 バトル2 FF4 ゴルベーザ四天王とのバトル FF8 Don't be Afraid FF5 新たなる世界 FF7 樹海の神殿 [190] FF8 Lunatic Pandra CRT 黒の夢 FF7 深海に眠る秘密 FF7 太陽の海岸 FF7 不安な心 FF5 4つの心 FF9 バトル2 FF7 闘うものたち FF8 The Stage Is Set FF8 The Premonition [200] SG1 激闘 RS2 ラストバトル SG2 死闘の果てに SF1 BATTLE #4 RUD Strange Encounter RS3 トーマスのテーマ FF3 禁断の地エウレカ FF3 クリスタルタワー FF3 闇のクリスタル FF6 迷いの森 [210] FF4 月の民 CRT 夜の底にて FF10ノーマルバトル FF11 Battle Theme CRT 戦い RS3 雪だるまの町 RS3 夢魔 RSM Believing My Justice LAL PURE ODIO FF2 パンデモニウム [220] FF2 ダンジョン LAL 凛然なる戦い SD3 Hightension Wire SD3 Innocent Water SD3 Reincarnation LAL KNOCK YOU DOWN! RS2 七英雄バトル USA フォレスタ LAL PSYCHOで夜露死苦!! SG2 必殺の一撃 [230] FF9 グルグ火山 SG3 戦! RSM 決戦!サルーイン -Final Battle with Saruin- SF1 Last Battle -T260G- SF1 Last Battle -Emilia- RS3 ラストダンジョン RS3 ラストバトル FF5 ビッグブリッヂの死闘
https://w.atwiki.jp/rhythm-machine/pages/20.html
CMU-800のMIDI化 以下のRJBさんの記事を追試しただけです。 RJBlog CMU-800MIDI改造ドキュメント
https://w.atwiki.jp/aerobeat/pages/23.html
MIDIから譜面作成ツール http //u1.getuploader.com/hattenmin/download/68/hattenmin_68.zip 指定したmidiからAerobeatの譜面を作ります。 譜面作成に成功すると指定したmidiと同じ名前のフォルダが作られます。 中には曲の情報.txtと譜面データフォルダが入っていて、 譜面データフォルダには指定したmidiのトラックごとの譜面があります。 適当に調整してNormal_Easy.csvなどにリネームしてください。 曲の情報.txtにはでたらめなことが書いてありますので曲の長さなどは修正してください。 注意 Aerobeatでエラーが出るので、譜面には60フレーム以下の情報は反映しないようにしています。 出力した譜面がトラック1つ分しかない場合は、 DominoなどでMidiをフォーマット1に保存しなおしてから変換にかけてください。 当然ですが、このプログラムでできるのは譜面だけなので音楽ファイルは他のソフトウェアでmidiを変換してください。
https://w.atwiki.jp/windsynth/pages/76.html
MIDI信号を加工して別のMIDI信号に変える(あるいはコードなどを付加する)機材(ハードウェア、PC+ソフトウェア)について。 目次 ハードウェアMIDI Solution MIDI Event Processor YAMAHA MEP4 (製造中止) ソフトウェアewivoicing ハードウェア MIDI Solution MIDI Event Processor Event Processor; 10 Event MIDI Event Processor Event Processor Plus; 32 Event MIDI Event Processor YAMAHA MEP4 (製造中止) YAMAHA MEP4 製品ページ ヤマハ マニュアルライブラリー (取扱説明書ダウンロード) - MEP4 WX7の取扱説明書のp.43~44に設定例あり。 ソフトウェア ewivoicing Welcome To i-yanase.com Productshttp //www.i-yanase.com/products_/index.html? ewiVoicingは、EWI-XXXやWX-XなどのWindMidiControllerの単音出力をハーモナイズして、一人オーケストラを楽しめるツールです。(MacOSX10.4以降専用) 2009-07-16 WX5 workbook Blog ewiVoicing 2.0が公開されました!!! 2007-04-13 WX5 workbook Blog i-yanase.comよりコードプレイ用ソフトウェア"ewiVoicing"がリリース