2017-02-27 14:58 | カテゴリ:PIC応用回路
昨年に自作したMIDIシーケンサーのソフトを改良して使いやすくしてみました。


(本体写真)
MIDI_ver000.jpg


シーケンサーでは、MIDI信号を既定の仕様にのっとり、シリアル方式でMIDI楽器(私の場合は、KORG製のキーボードのPA600です)に送信して、制御するものです。
MIDI信号規格は、標準で決まっています。
しかし、各楽器(メーカー9によって、特別な意味を持たせた命令を用意しているので、その命令を標準的なMIDIコードで記述するのには手間がかかります。
今回は、そのあたりを改善してみました。


続きはこちら、、、、

コントローラ製作の記事は、こちらです

http://vividhobby.blog.fc2.com/blog-entry-404.html
MIDIシーケンサー製作



外見は、変わっていませんが、こんな感じです。
メニュー操作用のロータリーSW、入力指定用のプッシュSW(2個)と、20文字X4行のLCD表示器があります。



MIDI_ver001)


後面には、入力、出力用のMIDI信号コネクター、フットペダルSW接続コネクター、DC12V(内部NiMH充電用)、
サイドには、電源SWと充電時に点灯するパイロットLEDがあります。

(MIDI_rev002)


内部は、PIC(16F1938:メモリー容量の関係でこれになりました)、液晶パネル、などです。
液晶表示器が、4ビットパラレル仕様なので、配線が結構、ごちゃごちゃしました。
手持ちのケースにすっきりと収めることができました。


基本機能は、3っつです。


(MIDI_rev003)


メニューが表示されて、ロータリーエンコーダ(RE)で選択します。

1、Enter/ Edit(入力、編集)
2、MIDI Transfer(MIDI機器へのデータ出力)
3、Save/Load(EEPROMへデータを保存、呼び出し)

個別に操作と動作状況を説明します。

(MIDI_ver004)


まず、入力と編集モードです。

青色のLEDが点灯中に左SW(BS)を押下すると、空白行が挿入されます。
右SW(ENT)を操作してカーソルを動かして、MIDI命令欄に移動し、REを操作して、希望のMIDI命令、操作CH、パラメータを入力していきます。
最終桁の*印は、この命令後にも連続して命令を出力するか、この命令出力後に一時停止するかの記号で、*があればここで送信が一旦停止されます。

このビデオでは、MIDIコマンドの、
NOTE_ON(音階送出)
NOTE_OFF(音階停止)
を入力しています。

(注)SYSTEM_RESETは自動的に最初の行に入ります。


(MIDI_ver005)


この様に入力した後で、データを追加(挿入)したい場合や、不要な行を削除することもできます。
ここでは、二番目にControlChangeコマンドを挿入した後、これを削除しています。


(MIDI_ver006)


次は、入力したデータをMIDI機器へ送信するモードです。
メニューで2番目を選択すると、現在のデータは、EEPメモリーの何ブロック目のデータか、命令数は何個あるかを表示します。
これは、EEPメモリー内のデータを管理するための番号(アドレス)で、曲名と番号をメモして管理する必要があります。

続いて、基板上に増設してあるEEP_ROMへのデータの保存と呼び出しです。
先ほどの番号を基準にして、保存と呼び出しができます。

既にデータが記憶されている番号は、OCPと表示されます。
空いている場合は、BLKです。

2番目が空いていたので、PIC内のデータを番号2番地に保存しました。

引き続いて、EEP_ROMから、他のデータを呼び出したいと思います。
番号1のデータをPICに読み込みます。
その際、今あるデータを保存するか、上書きするか聞いてきます。
データロードが完了するとメニューに戻ります。
確認すると、別のデータがPICに読み込まれたことがわかります。


さてさて、前置きが長くなりましたが、ここからが先週一週間かかって追加製作したソフトの説明です。

私の使用しているKORGのPA600というキーボードですが、外部から操作す為にコマンドが用意されています。
通常は、これをMIDI標準コマンドで指定するのですが、
ProgramChange命令とその数値パラメータで指定する必要があり、非常に煩雑です。
そこで、PA600専用のマクロコマンドを作り、メニュー上は、PA600の操作パネル上の名前で指定し、それをプログラムで、ProgramChange命令に変換する様に考えてみました。

(MIDI_ver007)


ここでは、PA600をイントロ1のパターンで自動スタートし、STS1(シングルタッチ設定の1)で演奏し、END1で後奏して終了という例で捜査しています。

このマクロコマンドでは、一つのPA600の命令について1バイトのMIDIデータに変換する場合に限って対応しています。
しかし、もっと複雑な操作、例えば、音色データをアサインしたり、PA600の内部に記憶されている数百のリズムパターンから、指定のリズムパターンを選択したりするには、最低、3バイトのMIDIデータが必要です。
そこで、それらのデータもマクロコマンドで指示したら、3バイトのMIDI標準コマンドに変換されるようにしました。

(MIDI_rev008)


ここでは、すでに入力されているデータの5番めに、PASTYLというスタイル設定のマクロコマンドを挿入する例です。
スタイルは、PA600上では、Favブロックの1-15、において、ページ番号1-5、各ページは、1-8の番号で管理されていますので。ここでは、Fav番号と、Page番号を指定します。
入力が完了すると、3バイトの標準MIDIコマンドに展開されます。

行番号5-7のControlChange命令二行とProgramChange命令に変換されたことがわかります。


というわけで、PA600の設定をフットペダルで簡単に設定変更して、演奏できるようになりました(笑)




管理者のみに表示する