押したらボタンが光る、ポップンミュージック用コントローラーを自作してみました。
目標
PC版pop'n musicの専用コントローラー(ポプコン)を作る
アーケードゲームの音ゲーシリーズ「pop'n music」がWindows向けに2020年11月リリース。月額の有料課金でプレイ可能でトライアル版として7曲は無料でプレイ可能。
よし、これで楽しいポップンライフが待ってるぞ!と言いたいところだけど、肝心なのはコントローラー。ゲームの基本操作として使用するのはキーボードのZ,S,X,D,C,F,V,G,Bの9つ。キーボードで遊べないこともないのだけど、キー同士が近すぎて押し間違いや意図しない同時押しが起こるなど窮屈。
キーコンフィグはあるけど、それでも他のキーがあるのでそのままのキーボードでは不向き。
公式で専用コントローラー(専コン)も販売されていましたが、家でガチプレイしたいわけではないので大きすぎるのも困りもの。
過去に販売されたドリキャス・PS用の専コンをコンバーター経由でPCで使うことも可能だけど、専コンの操作性で難ありなので選択肢として除外。
だったら自作してしまおう。ということで程良い大きさの専コンを作ります。薄型レバーレスも作ったくらいだしまぁいけるでしょう。と考えたのは今から約1年前だったりします。
ベースとなる自作キーボードのお勉強
ポップン専用のコントローラーといってもキーボードをコントローラーとして認識してくれるので、簡易的なキーボードを作ってしまうのが手っ取り早いのではと判断。
以前Arduinoを使った自作キーボードキットを購入して組み立てたことがありましたが、自作キーボードの回路やプログラム(QMK)について改めて調査。回路図については解説サイト等で紹介されているので、それを基に動作確認用のキーボード基板設計して発注。
zero-pi fighting boardベースで作っても自分的にPS/PS2で使うことないのでUSBキーボードベースで再検討。
— ぽめ (@pomegd) March 31, 2021
その前に仕組みとかプログラム知るためにキーボードもどきを。
9ボタン用:zsxdcfvgb
設定用:0~5
その他:Esc,Backspace,Enter
最低限これだけでokかな。実際作るかは知らぬ。 pic.twitter.com/W7yQN2PhvV
必要となるキーは基本操作の9ボタン、各種設定項目用として使用されている0~5の数字キー。加えてキャンセルや決定などの3ボタンが機能するようにキーボードのファームウェアを改良。WS2812系のLEDも使って思い通りの色を点灯させたいので一応搭載。
操作に必要なキーのみを設定したファームウェア作れた。
— ぽめ (@pomegd) April 21, 2021
あとはLEDを思い通りに点灯させられれば、ボタンが光るPC用ポップンコントローラー作れるかな。
qmkのLEDがよくわかんないのでそこまでするかはわからないけど。
そして自作キーボード沼へ…。 pic.twitter.com/3zo5HfoxJS
ボタン操作としては想定通りの挙動。しかし、LEDが思い通りに点灯せずやる気がなくなり、ここから数ヶ月寝かせることに…。
ArduinoからRaspberry Pi Picoに乗り換え
当初Arduinoで作っていましたが、Raspberry Pi Pico用に作られたファームウェアがあることを知り触ってみることに。
PC版「SOUND VOLTEX」用に作られたファームウェアのようで、QMKより自分的にわかりやすかったため、こちらに移行することにしました。感謝です。
と、のんびりしている間に海外の人が上記のファームウェアを活用して素敵コントローラーを製作していました。
PMSmall - A 1/3 scale miniature #PopnMusic controller made from SLA/FFF 3D printed button caps, Laser cut acrylic sandwiched FR4 PCB. supporting Kailh hotswap Choc low profile switches with 2 RGB lights per button and accompanying underglow lighting, all powered by a Pi Pico MCU. pic.twitter.com/gll1xsw2Xx
— lain 🍀 (@xx_lain) August 31, 2021
ボタンもドーム型で自作してるようだし、もうこれ理想形だなぁと、思いつつも作り始めてたのでとりあえず自分なりのものを最後までやってみます。
基板設計
設計前に動作確認
実際に組み始める前にプログラムを弄り、思い通りの挙動になるかを確認。プログラム全体としてはよくわかってないけど、使用するGPIOピンを変更したりなど単純な部分はわかるので必要となるボタン設定をしつつ動作を確認。
動作確認。いい感じ pic.twitter.com/DMEvuDxHsj
— ぽめ (@pomegd) January 28, 2022
当初はボタンを押した際に光るLEDはWS2812を使用して自由な色でカスタマイズできるようにと考えていました。しかし、改めて考えるとポップンはメインで使う9ボタンはそれぞれ色が決まっており、かつ白・黃・緑・青・赤の5色しか使わないので各色の発光LEDを使用することにしました。
プログラムの動作確認ができたので、ようやく本格的に基板設計ができる状態に。
使用ボタンの整理
公式サイトに操作方法が掲載されているので、そちらを確認して使用するボタンを改めて整理・決定。
- 基本操作の9ボタン:Z,S,X,D,C,F,V,G,B
- 決定、キャンセル:Escape,Enter
- クエストモード用:5
各種設定項目用として使用されている0~4の数字キーは必須というほどでもないので除外。また、キャラクター選択画面に戻るBackSpaceも固有の機能として存在しますが、それほど使うタイミングはなさそうなので入れてません。合計12個のボタンで構成(一通り作り終わってこの記事書いてるときに気付いたけどEnter不要だったかも)。
設計・発注
薄型レバーレスで作ったボタンキャップの流用ができるのでKailh Choc v1及びHotSwapを使用。Rasoberry Pi Picoは背面にセット。本当はUSB Type-Cに変換しておきたかったけどスペース的に厳しかったので今回はpicoをそのまま使う形にしました。
上記で整理したものを発注。
動作確認・完成
あとはアクリルだけー pic.twitter.com/5sLa87DVGq
— ぽめ (@pomegd) February 23, 2022
一通り組み立てたら動作を確認。ボタンを押したら正常に指定のキーが反応すること、LEDが点灯することを確認。
問題なし。アクリルと組み合わせて動作確認できたら完成。
寸法はそれぞれおよそ240mm x87mm x19.5mm(ボタン部分含む)。
ガチ勢な方々やゲーセンプレイでの練習用としては物足りないものだと思いますが、そういう人は公式の専コンやDAOコン、なんならゲーセンの筐体を購入すれば良いし、自分はエンジョイ勢でゲーセンはゲーセン、家ゲーは家ゲーとしてやっているので、これでも十分楽しめるので満足です。
課題
完成したものの課題に思っていることがいくつかあります。
ボタンキャップの大きさ
今回使用しているのは三和・セイミツ製の30mmボタンと同じです。ボタンキャップが30mmなのではなく、実際にボタンとして押せる範囲(25mm弱)が同じというものです。すでに自作したものを流用しているのでこのサイズになりましたが、実際に使ってみるとちょっと押せる範囲が狭いのかなと感じました。
厚み
「Mille-feuille」では約17mmの厚さですが、今回の自作ポプコンは約19.5mm。これはpicoに載っている各パーツの影響によるもので、表面にpicoを配置すれば17mmにすることもできましたが、見栄え的に裏面に取り付けたかったため少々厚くなってしまいました。
ネジの固定
四隅にネジ穴設けてアクリルと基板を挟んでいますが、中央辺りのアクリルを持ち上げると少々隙間ができてしまいます。通常使用では特に気にならないですが、隙間ができるとチリやホコリが入ってしまうので中央寄りの辺りでネジ穴設けた方が良かったかもしれません。
LEDの点灯
課題というかできたらいいなぁというものとして、ボタンの押下時に押下したボタン部分のみLEDが点灯する形ですが、無操作で時間経過によって点灯したりしなかったり、グラデーションのように制御できたら面白そうだなと。
WIP
一旦今回の目標となるPC用ポプコンは完成しました。まぁこれで満足でもあるんですが、実はドリキャス用ポプコンのプログラムを作って公開してる人もいるので色々試してみてます。
picoでドリキャスのポップンコントローラーいけた(わかりにくいけど黄色ボタン押されてる状態)#dreamcast pic.twitter.com/3LfdjJ5i7i
— ぽめ (@pomegd) February 13, 2022
PCとのハイブリッドで作れればベストなんですが、自分にはそんなことできないのでドリキャス専用のポプコンとして現在検討中。でもそれはまた別のお話…。