Mac上でMIDIキーボードをクリスタの左手デバイスにしてみた

DTM

こんにちは,えがきや代表です。

連休のくつろいだ雰囲気の中,「新しい左手デバイスが欲しい病」が発症いたしました。
クリスタ用の左手デバイスとしてはTabmateが非常に良くできており,長く愛用しています。しかし,個人的にはホイール,あるいはダイアルが3つある左手デバイスが欲しくていろいろと探していました。それぞれ,画面の拡大,回転,ブラシサイズの変更をホイールやダイアルの回転で操作できると直感的で良いかなと期待しています。とはいえ,3ホイールを備えた左手デバイスはわりと高価なものが多く,買ってから「やはり使えない」というのが怖いため,どうしたものかと躊躇していました。

そういえば,うちに使っていないMIDIキーボードがありました。NOVATION LAUNCHKEY mini MK3 というUSB接続のキーボードです。小型で,25鍵のキーと16個のタッチパッド(3レイヤーを切替可),8個のつまみ式ダイアルがついています。このキーボードはAbleton Live専用といってもよいくらい,Abletonと相性が良いのですが Logic Pro X を使うようになって出番が減っていました。しかし,見方を変えれば豊富な物理キーと物理ダイアルを備えた汎用の左手デバイスになりそうです。

midiStrokeの導入

私は Macを常用しているので,「Mac上でMIDIキーボードを通常の文字入力のキーボードのように使う方法」が必要になります。いろいろ探していると midiStrokeというソフトが使えそうです。

midiStroke配布元: midiStroke – Charlie Roberts


midiStrokeを使って同じことを考えた方がいたので参考にさせていただきました。

【ご参考】OS.ManiaX “MIDIキーボードのDAW以外での活用方法”

具体的な midiStroke の設定方法を説明した動画(残念ながら英語ですが)もありました。

【ご参考】midiStroke: Tutorial: How to use MIDI Instruments to control a Mac with Free Software (2021) 英語動画

midiStrokeは,MIDIキーボードからの入力を文字入力に変換するソフトです。MIDIのキーボードを操作すると,フォーカスされているMac上のウィンドウへあたかも手で入力されたかのように文字が送られます。10年以上前に開発は止まっているそうですが,ソースコードをGithub から手に入れることができるので,これに手を入れて使うことにしました。

midiStroke Github: charlieroberts/midiStroke

midiStrokeは非常にコンパクトに作られたソフトです。ソースコードもきれいなため,読みやすいのですが,開発言語がSwiftではなく Objective-C なんですね。文法などほとんど忘れていました。(今でも全部思い出せていません。)

midiStrokeでは,入力されたMIDIデータの Channel(チャネル), Num(CC番号), Value(値) の組み合わせに対して,1文字以上の文字入力に対応付けることができます。
例えば LAUNCHKEY Mini MK3 の右上隅のタッチパッドは, Channel: 10, Num: 51に対応します。


midiStrokeの画面の左側の+(プラス)ボタンを押して1行追加して,num, chn にそれぞれ51, 10を指定します。
LAUNCHKEY Mini MK3 の鍵盤やキーパッドを打鍵したときのValue にはヴェロシティの値が入ります。しかし,クリスタの左手デバイスとして使う場合,ヴェロシティの値は使わないため Valueの値は無視したいところです。midiStrokeではキーのマッピングにおいて Valueに -1 を指定すると「 Value は何でもよい」という指定になります。
続いて,この num=51, chn=10, value=-1 に対応するキー入力を右側に指定します。今度は画面右側の+(プラス)ボタンを押して1行を追加し keystroke には s, ctrl 欄にチェックを入れます。keystroke には小文字(ここでは s)を指定します。ちなみにTABやSPACEなどの特殊キーは大文字でキーの名前を指定します。画面右下にある keystroke ボタンを押すと指定可能なキーの名前の一覧が表示されるので参考にしてください。これで,右上隅のキーパッドを叩くと Ctrl+s というキー入力が現在フォーカスされているアプリへ送られます。右側のキーストロークは複数指定することができるため,MIDIキーボードの打鍵1つに対して複数のキー入力を対応付けることができるので,キーボードマクロ的な使い方が可能です。

右上隅のパッドキーを叩くと,Ctrl+s が入力される。修飾キーとして Ctrl にチェックが入っていることに注意。

これでMIDIキーボードの打鍵を文字入力に変換することができるようになりました。

ダイアルつまみの対応

問題は LAUNCHKEY Mini MK3 のダイアル操作への対応です。
ダイアルつまみをクリスタの画面の左回転,右回転に対応させるならば,Valueが減っているときが左回転,Valueが増えているときは右回転となるようにキーを割り当てたいところです。
LAUNCHKEY Mini MK3のダイアルつまみは全周回転できるタイプではありません。また,ダイアルつまみを回すと,つまみの絶対位置を表す 0 から 127 までの値がValueとして送られます。このままでは,送られてきたMIDIデータを1つだけを見ているとValueが増えているのか(ボリュームなどを大きくしているのか),あるいはValueが減っているのか(ボリュームなどを小さくしているのか)がわかりません。そのため,1つ手前のMIDIデータのValueと比較して,Valueが大きくなる方向に回しているのか,小さくなる方へ回しているのかを判定する必要があります。

midiStrokeのソースコードを改変し,ダイアルつまみにおいては一つ手前のMIDIデータと比較して,Valueが増えている方向に回されているときは Valueを1に書き換え,Valueが減っている方向へ回されているときはValueを0(ゼロ)に書き換えるようにしました。こうすることで,つまみを回している方向に合わせて対応するキー入力を指定することができます。

ちなみにValueが減っている方向へ回されたときに−1ではなく0(ゼロ)を返すのは,midiStrokeにおいて-1という値が「Valueの値にかかわらず」という意味で使われているためです。

つまみChnCC Num左回転のときValue右回転のときのValue
Tempo12901
Swing11001
Gate1501
Mutate110401
Deviate110901
無印1110801
無印2111301
無印3111201
LUANCHKEY Mini MK3 の8つのダイアルが返すValueを変更するように midiStrokeのソースコードを改変した。

midiStrokeの改変を終えて,いよいよクリスタの操作に対応させるマッピングを行います。
8つあるダイアルつまみの中の右端のつまみは Channel: 1, Number: 112 に対応しています。このダイアルをまわしたときのキー入力をマッピングしてみます。

私はクリスタ側で画面拡大と縮小をそれぞれ Ctrl+s, Ctrl+aに割り当てています。これを右端のつまみに割り当てると次のようになります。

まず,つまみを右側へ(時計回り)に回転した場合,ソースコードの改造によってValueに1が返されます。これに Ctrl+s を対応させます。

次に,つまみを左側へ(反時計回り)に回転した場合,ソースコードの改造によってValueに0が返されます。これに Ctrl+a を対応させます。

これで右端のダイアルつまみの回転によって画面の拡大・縮小ができるようになりました。

他にも次のようなキー割り当てを行って,使用感を確かめました。私はクリスタのショートカットの割り当てをかなり変更しているので,自分の備忘のために記録しておきます。

NUMCHNVAL対応するキー入力クリスタの機能
11210Ctrl+a画面縮小
11211Ctrl+s画面拡大
11310Ctrl+z左回転
11311Ctrl+x右回転
10810]ブラシサイズ小
10811\ブラシサイズ大
5110-1Ctrl+s画面拡大
4710-1Ctrl+a画面縮小
5010-1Ctrl+x右回転
4610-1Ctrl+z左回転
4910-1\ブラシサイズ大
4510-1]ブラシサイズ小
481-1e 消しゴム
501-1qリアルGペン
521-1p鉛筆R
721-1TAB全てのパレットを表示する
今回,実験したキー割り当て。これらの CHN, NUMの値はMIDIキーボードのメーカーの実装に依存する部分があります。またクリスタ側でショートカットキーの割り当てを変えています。

使用しての感想

これで,根気よくキー入力のマッピングルールを設定すれば,LAUNCHKEY Mini MK3 は「キーがたくさんついた左手キーボード」となります。

<良いところ>

  • たくさんのキーがあるため,様々なマッピングルールを定義できるのは便利。
  • クリスタの画面の拡縮や回転,ブラシサイズの変更をダイアルをまわすことで操作できるのは直感的。
  • クリスタ専用というわけではなく,あらゆるアプリへのキー入力の代替になるため汎用性が高い。

<要改善>

  • ダイアルつまみを使いたい場合,midiStrokeのソースコードの改変が必要。(鍵盤やキーパッドだけを使うならば,配布されているmidiStrokeをそのまま使うことができます)
  • midiStrokeのUIを使ったキーの割り当てが面倒。設定ファイルをインポートできるようにすると改善されるはず。
  • 今回使用したMIDIキーボードのダイアルつまみが小さいため,常時,指をかけていると疲れる。

話をもとに戻すと,使っていなかったMIDIキーボードをクリスタの左手デバイスにすることができたわけですが,使用感はいまいちというところでした。小型とはいえそれなりに大きく,キーボードの横へちょっと置くという感じではありません。一方で,つまみが小さすぎるため常時使うのは辛いことなどからクリスタでの利用は難しいかなと思いました。ただ,キーがたくさんあるデバイスとして,別のアプリで使う可能性は残っており,この先,もう少し実験を続けてみようと思いました。DAWと画面構成が似ているビデオ編集などには向いているかもしれません。

注意点

・ midiStroke はMac上でキーボード入力を代替するために,Mac OS X の [システム環境設定] – [セキュリティーとプライバシー] – [プライバシー] において,「アクセシビリティ」項目への許可が必要です。特にソースコードを変更してコンパイルする度に許可の設定が必要になるため注意が必要です。

・ 現状の midiStroke において,いずれかのMIDIキーを押下し続けている間,対応付けた文字入力を繰り返すリピート入力には対応していません。

・ クリスタの画面の回転角度のピッチは,メニュー[CLIP STUDIO PAINT]-[環境設定…]-[キャンバス]の表示角度の項目で指定します。つまみの操作に対して回転が速すぎる場合は,この角度を小さくし,回転が遅すぎる場合は,この角度を大きくします。

・ MIDIキーボードの各物理キーやつまみに対応づけられた Channel, Numberは,一部の標準的なものを除きメーカー固有の割り当てとなります。お使いのMIDIキーボードで同様のことを行う場合,MIDI Monitorなどのソフトを使い,割り当てられている Channel, Number を確認する必要があります。

・ 本記事は,あくまで個人的な実験を目的としたもので,改変した midiStroke のソースコードは非公開とします。配布や改変の方法などについてはご協力できないことをご了承ください。
また,midiStrokeの作者様はすでに開発を終了されているため,問い合わせや要望などは受け入れられないことも併せてご理解ください。

以上,まだ実用的ではありませんが,ちょっとしたことに使えそうです。
しかしmidiStrokeのおかげで,例えば KORGの nanoKONTROL2 のような鍵盤のないコンパクトなUSB MIDIコントローラを省スペースな左手デバイスとして使うことができるかもしれません。他にもDAWがサポートを止めた古いMIDI機材を持っていれば,文字入力キーボードとして再生できるようになります。すごいポテンシャルを秘めたソフトです。
その内,midiStrokeと同様のソフトをSwiftで書き直してみたいなぁと考えたりもしました。

えがきやLLC 代表


本サイトは,合同会社えがきや が運営・管理しております。

egakiyaをフォローする
DTM
スポンサーリンク
人生を楽しむ法人 えがきや

コメント