MIXRecipeアプリの開発の作業メモ 2022-2-20

そもそも、MIXRecipeってなに?
MIDI信号を加工するソフトです。
いまは画面を9つに分けるタブで構成されています。

それぞれ、9つの機能があります。
左から順番に加工して、信号が流れいって、一番右から出力されます。

LoopMIDIってソフトとかのMIDIループバックを用いて、
ほかのアプリとつながります。
LoopMIDIのライブラリをコンパイルにつかえば、
LoopMIDIの設定をアプリでいじることもできたのですが、
なんとなく、やらないほうがいいかなと。

9つの画面について説明します。

1)PlayList
 スタンダードMIDIファイル(.SMF)を再生して次の画面につなげます。

2)IN
 A)入力を受け付けるポートを指定します。

 たとえば、N社のキーボード型MIDIコンと、K社のCC独立型MIDIコンと、
 2種類を、別のポートに、同時につなげることができます。

 B)ピッチ、MOD、ダンパー、CC、DATAエントリー、その他CC、SYSEX
  に信号をわけて、ポート毎にスキップするシグナルを指定します。

 たとえば、N社のキーボード型MIDIコンの、ホイールとCCが壊れていて、
 普通だと使えないとしますよね。K社の設置型MIDIコンからそれらを送り
 N社のキーボードではそれらの信号を省くといったことが可能です。

 C)MIDI信号をモニター(表示)することができます。

3)IN VELOCITY
 ベロシティ1, 25, 50, 75, 100, 127のときに、受け取る値を、
 ポートAではベロシティ75, 80, 85, 90, 95, 107と設定し、
 ポートBではベロシティ100,100,100,100,100,100と設定することができて、
 ミニキーボードのベロシティだけを無効にできます。

4)IN PATCHING
 INA,B,C,D,E~Pまでを、内部ポートのA,B,C,D、E~Pのどれにするかです。
 ここで、A->B,Cとして、B,Cでそれぞれ別の処理をしたり、
 D,E,F->Dとして、1つのコントローラとして扱ったりできます。

5)Contollers
 (まだ実装が終わっていません)
 ポートA,B,,,Jに分かれて処理します。
 CC,、RPN、DATAENTRY、NOTEなどを検出して、画面上のMIDIコンに
 表示したり、画面をタブレットやマウス、カーソル+SPACE,BSで動かし、
 逆に信号を生成したりします。

 また、ポートAとポートBをリンクさせ、ポートA画面でジェネリックの
 マッピングにしておいて、ポートBでR社のシンセをいじるようにすると
 Aの信号や画面操作で、Bのポートに対応するBの信号を送れます。

 いちおう、「4ノブ+1スライダー+2ドラム」を17チャンネル用意して
 ドラムに関してのみポートAとBをリンクさせなくても、信号置き換えを、
 可能にしています(設定画面と保存機能が未着手なのでまだ使えないが)

 たとえば、ノートC2で、プログラムDOWN、ノートD2でプログラムUP
 ノートE2で、ダンパー(トグルスイッチ)と設定することもできます。
 まだ信号処理が90%くらいしか完成していません。

 ドミノの定義ファイルもアサインできるようにしたいと考えていて、
 そこで、100%の互換性を出せずに、硬直状態にいっかいなってしまった。
 ですので、70%程度の互換性で実装していく予定です。

6)SoundLayer
 K社のコンビネーションY社のパフォーマンスに近い機能です。
 処理ポート、チャンネル、バンクMSB,LSB、プログラムをチェックして、
 グループを作り、その先のレイヤーに信号を振り分けます。

 レイヤーでは、ポート(変更ありなし)、チェンネル(変更ありなし)
 バンク(変更あり固定送信、変更なし送信、送信しない)
 プログラム(変更あり固定送信、変更なし送信、送信しない)
 エクスプレッションとボリュームに、掛け算する数字を入力、
 ノートのトランスポーズ ベロシティのカーブ(簡易) パンニング
 などを指定したレイヤーをつくり、グループに複数割り当てます。

 複数のレイヤーをグループに割り当てるオプションとして、
 レイヤー(かさねる)レイヤー(ローテート)レイヤー(モノシンセ)
 のモードがあります。スプリットも指定できるといいですね。
 レイヤー(かさねる)では、音を重ねます。
 レイヤー(ローテート)では、ローテーションします。
 たとえば、パンを、L,R,センターにふった、3つのレイヤーを登録すると。
 1音ごとに、パンがばらばらの音がなります。
 レイヤー(モノシンセ)では、予約制ローテーションします。
 モノシンセ3台を登録することで、3和音ならせるようになります。

 スプリット(帯域により音を分ける)のは、レイヤーというより、
 グループの機能ぽいのですが、レイヤーを登録するときに指定する
 イメージです。(つまり画面上はレイヤーのオプションかも)

7)OUT PATCHING
 IN PATCHINGと同じ画面を、そのままここでもつなげています。
 内部A,B,C,D,E~Pまでを、OUT A,B,C,D,E~Pにアサインします。
 ここで、A->B,Cとして、出力先の2つの音源で共有したり、
 D,E,F->Dとして、1つの音源に集中させたりできます。
 こまかいチャンネルの設定は、SoundLayer画面で指定します。
 ここではポートだけが選べます。(その方がスッキリする。

8)OUT
 INとほぼ同じ画面をカスケードしています。
 内部ポートと、音源のポートのアサイン、ここで、ピッチ、ダンパー
 CCなどを省略できます。6の画面をいじらず使いまわしで、
 8の画面だけ変更することも可能です。
 あるいは、DX7にはプログラムチェンジをおくり、MATRIX12には、
 プログラムチェンジを送らない、しかし、同一ノート情報を送る。
 ということが可能です。

ここまでで終了ですが。もう1つオプションがあります。

9)WithD
 かのDOMINO様の、定義ファイルを内部ポートごとにアサインします。
 Controller画面では、ドミノの定義からの送信シグナルを選択できて、
 SoundLayer画面では、ドミノの定義ファイルから、音色名を表示します。

 予定は未定ですが、濃厚です。その際、バンクセレクト、GM、GSモード
 などにも、対応できるようになると、予測しています。

今日やったこと。
 XMLの読み書きを実験しました、SAX,DOMともに成功しました。
昨日やったこと。
 いろいろ。
明日やること。
 実装されていない機能の洗い出し。

そろそろ忙しく、日常もあるので、スローペースになってきてます。

JAVAから.NETへは簡単に移行できる(逆は無理だけど)ので、
JAVAバージョンがおちついたら、Windowsでより安定してる、
.NETフレームワークの開発も初めたいです。
(元プログラマです、今はWEBのみでPGはしていません)

しかし、マックや、ウブンツで、DOMINO定義ファイルを使いたいという
声もたまに見かけるので、しばらくJavaで行こうと思っています。

私ごとですが、SC-8820をいまさら購入しました。
手のあいてるときしか作業できませんが、進めたいと思っています。


この記事が気に入ったらサポートをしてみませんか?