第三次めでブロ

めでたいブログ

ヤンコピアノ鍵盤配列MIDIキーボード「Jankey」製作記

ヤンキーと読みます。

3-4年前にErgoDox、Let's Split、Planckといった型を発端に自作キーボードのムーブメントが到来し、2020年時点では1つのプログラマ文化として定着するに至っているように思います。

かく言う私も過去に左右分割式のキーボードを求めていくつかのキットを購入し組み立てた経験があります。

これらの製作過程は以前のブログにも記載していましたが、当時の界隈でも初期のほうに共有していたということもあり、旧めでブロの中でもアクセス数の多くをキーボード関連が占めていたという覚えがあります。

旧めでブロの2年半前の記事の締めにて「自分で配置を設計するのが最高なんじゃないかという考えに至っています」などと抜かしていましたが、現在メインで使っているErgoDox Infinityに不満が無さ過ぎて完全に忘却の彼方でした。

しかし、2020年に入り3araht氏によりアコーディオン配列のMIDIキーボードキットgiabalanaiが開発・販売されたこと知り、さらにタイミングがちょうど本ブログの同型鍵盤記事の情報収集時期と被っていたために当時の気持ちが蘇ってきました。

ということで、2年半ぶりに自作キーボードを製作するに至ったので記事にすることにしました。

設計(脳内編)

大学などで回路設計をやったことは無くはなかったですが、まともな回路を最後まで作る経験は初でした。

そのため、まずはシンプルなものを作ろうと考えました。

詳細な部分は銭湯の水風呂に入りながら考えてたので全く記録がないことに気づいた
  • それにしてもネットに載せてはいけないレベルで汚い

このキーボードはヤンコピアノの鍵盤配列を基に構成されています。

この配列はすべての鍵盤が等しい音程の間隔で並んでいるので、同じコードを弾く際に音程が異なる場合にも同じ指の形で鳴らすことができるというものです。

具体的には、どの鍵盤から見ても右隣が全音、右斜め上および下が半音となります。

このキー配列にすることによるメリット等は同型鍵盤を紹介した記事をご参照いただきたいですが、このサイズでも威力が発揮されるかは未知数です。

  • クロマトーン配列と呼ばれることもありますが、原理主義者なので本記事ではヤンコピアノ配列で統一します

完成形としては発想の元となったgiabalanaiの右側と似たものになる想定です。

ただし、こちらはボタン式アコーディオン(デフォルトはCシステム)の配列向けなので動作は異なるものになります。

実質的な違いは2列1組か3列1組かという点だけで配列自体の特徴などはほぼほぼ同じですが、それぞれメリット・デメリットがあるというよりは成り立ちによるバックグラウンドの差異によるところかと思います。

  • 本家giabaanaiも手前3列はキーコンフィグで別配列に対応できるからJankeyというデバイス自体のメリットはほぼ無いのかもしれない…
  • 一応、拙作のほうが全キーを個別に設定できる分自由度は高くなるはず…

今気づいたけどこの図ちょっとずれてない?

ここまでは配列自体の話だったので、以下はJankeyとしての設計です。

キー配置はいわゆる奥行き5列の千鳥格子で、並びとしては通常のキーボードに近いものとなります。

鍵盤数は1,3,5列目が14、2,4列目が13で合計68です。

ヤンコピアノ配列は1列上における1オクターブに必要な鍵盤数が6なので、2オクターブ+前後の1音がアサインされることになります。

本当はせめて3オクターブ以上は欲しかったですが、1つのProMicroで単純に組めるキー数が最大9 * 10みたいなので泣く泣く削りました。

  • 1,3,5列目と2,4列目がそれぞれ同音なので、回路上同じ導線上にすればフルサイズでもなんとかなりそう
  • ただしそうすると設定での配列変更の選択肢とのトレードオフになりそう

設計(回路図編)

以下、基板設計は界隈の慣習に従いKiCadで進めました。

大昔に大学の実習で使っていたのはBSch3Vでしたが特に違和感なく移行できたと思います。

マイコンはPro Micro、スイッチはPCのキーボード用のCherry MX互換、リセット用のタクトスイッチを想定しています。

知識が2017,8年で止まってしまっている気がしますが、チラっと調べた限りでは最低限の構成としてはあまり変わっていないような気がします。

ネットの自作キーボード製作記事などを参考にしながら1時間弱ぐらいで作りました。

後のPCBデザインからの手戻りも1箇所(Pro Micro側のピンアサインの整列)だけでした。

あんまり変なことはしてないはずです。

強いて言えば、全キー数が68鍵でかつ1列あたり13か14鍵だったので、回路上の行と列は10 * 7 として、1列あたり2行1組で対応させるようにしたぐらいかと思います。

各種ライブラリとして、foostan/kbdおよびBiacco42/ProMicroKiCadを使わせていただいています。

この場をお借りして御礼申し上げます。

  • 謝辞

以下、今後に向けた気付きをメモしておきます。

  • Pro Micro側のrow / colのピンアサインは、この時点での綺麗さよりも次のPCBレイアウト設計時の導線を意識したほうが良さそう
  • row9と全colを短絡させてたせいでネットリスト出力がおかしくなってたことに最後のほうまで気づかなかった
  • ネットリストファイルを手動で編集する前に回路側の不備が無いか確認すべき

設計(PCBデザイン編)

回路設計がすぐ終わったもののこっちにめちゃくちゃ時間がかかってしまいました。

回路図側を綺麗に分割しすぎたせいで、実際の配線との兼ね合いが非常に難しかったです。

特に上述のとおり「row9と全colを短絡させてた」せいで配線が全然うまく行かず、原因が分かるまでに色々いじりまくった結果めちゃくちゃ複雑になってしまいました。

上手いデザイナーは実際基盤に反映させた結果を予測して回路図も組んでるんだろうな〜って思うので今後の課題とします。

改めて画像で見てもギリギリすぎる

ともかく完成したので、レイトレーシング機能を使って3Dレンダリングしてみました。

バチバチに綺麗で感動しました。

負荷は割とヤバそうですがたまたまRTX2080Tiを積んでいたので数秒で完了しました。

裏面のロゴは5分で作りました。

以下、気付きです。

  • 世の先駆者様方は「回路図とPCBデザインは何回も手戻りしながら進めた」みたいに書かれていることが多かったけど、手戻りすると修正作業がめちゃくちゃしんどいから1発で決めるつもりで書いたほうがいい
  • 千鳥格子でも普通に真ん中にスペーサ置けそうって後で気付いた
  • 正直過程はともかく見た目割ときれいにいったから反省点はあまりない

基板発注

レイトレーシングの時点で満足してしまったのでこのまま画像で眺めてても良かったのですが、せっかくなので基板を発注してリアル空間にレンダリング(オタク表現)することにしました。

こちらも界隈でよく使用されているElecrowにて注文しました。

他にもFusion PCBPCBwayなどの中華サービスがありますが、今回作成した寸法ではElecrowが最安値でした。

発注から1週間ほどで届きました。

10枚発注で11枚入っていて得した気分になりました。

  • ロットの関係か不良品への事前対応かわからないけど世の中割とこんな感じらしい

ケース

ケースというより底面パネルになりますが、とりあえず裏面にアクリル板だけ取り付ける形にします。

KiCADにて外枠をsvgでエクスポートしてAffinity Designerで整形したあとでPDFで出力しました。

Affinity Designerマジで使いやすくて良いのでベクタ画像作りたいけどIllustrator買うほどではない方にオススメします。

この画像作ってる時点で「あれ?スペーサー少なくね?」ってなった

アクリル板は通販で購入し、加工は前回と同じ西八王子のWarkさんにお願いしました。

今回はオシャレにガラス色です。

その他必要なものの調達

キーキャップとスイッチはAliExpressで適当なセットを買いました。

キーキャップは一応表面積を広げるためにXDAプロファイルで、かつ鍵盤の白黒の個数が足りるものを選んでいます。

キースイッチは今回試作品ということもあり一番安かったOutemuの青軸にしました。

今後アップデートする際にはZilentsとかにしようという思いはあります。

Pro Microはどこのご家庭でもストックがあると思いますが、私も部品ケースの中に転がっていたものを使用します。

その他パーツは前回同様、ダイオードとタクトスイッチを秋月電子、ネジを西川電子部品でそれぞれ買っています。

QMK firmwareをいじる

ここまではガワを作っていたので、Pro Microに載せるファームウェアも作成します。

QMK firmware自体はいじった経験があったのですが新規に作成するのは今回が初めてでした。

ただ、作業としては下記コマンドでテンプレートを作成して生成されたファイルを書き換えるというものであったので、多少いじった経験があれば割と設定しやすかったです。

# ./util/new_keyboard.sh

設定の内容としてはMIDI関連機能の有効化、Pro Microピンアサインの設定、キースイッチの対応付け、キーレイアウトの作成となります。

レイアウトに関してなんだかんだ考えた結果以下のようにすることにしました。

Fnレイヤーはもうちょっと詰められるかと思うので後でまた検討します。

以下、気付きに関してです。

  • うまくコンパイル出来なかったとき、gccやavrのバージョンの違いを疑うより前にtypoを疑うべき
  • MIDIキーボード向けの設定情報がなさすぎて他のキーボードの設定を参考にする機会が多く、どことなく似たような設定になりかけてしまい慌てて変えた結果使いづらくなって…っていうのを繰り返すの本当に不毛だった
  • まるで人生といった感じ
  • (?????????????)

実装

実装はただ作るだけなので、別途制作方法の紹介として書きます。

ともかく、想定どおりに動くキーボードとして完成しました!

良い点

  • この配列自体がめちゃくちゃいい
  • この鍵盤の大きさでもDTM用ツールとしてみれば全然使いやすい
  • サイズが自分のデスクに置きっぱなしにできるギリギリで結果良かった
  • XDAプロファイルのキーキャップ見た目も押しやすさも最高最高最高
  • 某を参考にして青軸にしてみたけどこれも良かった

今後の改善点

  • パーツ配置が杜撰だったから組むときにちょっと工夫しないといけない
  • 中心にスペーサ付けなかったせいで押してるとちょっとたわむ
  • MIDIポートとか各種パラメータの設定とかのファームウェア設定を勉強したい
  • 本家みたいに列ごとに段差をつけたい (細いPCB5個を連結させるとかかなぁ)
  • できれば圧力センサが欲しい…

改善点はいくつもありますが、初めて設計したにしては非常にうまくいったように思います。

今までピアノもギターもできずコードを考えることが難しかったので、今後は割とマジで重用していこうと思います。

このキーボードが欲しい方は

いるのか?

一応スペア分のPCBおよびそれに合わせてケースも作ってあるので、どこかのタイミング(最短2021春のM3)で頒布したいという思いはあります。

その場合は価格的には一般的な自作キーボードと同じぐらいになるんじゃないかと思います。

完成品を準備するかは当日前後の忙しさ次第になりそうです。

また、このキーボードに関するすべてはGitHubにて公開してあります。

一刻も早く入手したいという奇特な方は直接私にご連絡いただくか、上記のデータから個人で発注していただければと思います。