はじまりはビープ音

ドリームキャストのことを中心にゲーム関係の気になったことを書いていくつもりです。

Raspberry Pi Picoを使って「ポップンミュージック」用のコントローラーを作ってみたよ

f:id:pomegd:20220310114056j:plain

押したらボタンが光る、ポップンミュージック用コントローラーを自作してみました。

目標

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)について改めて調査。回路図については解説サイト等で紹介されているので、それを基に動作確認用のキーボード基板設計して発注。

必要となるキーは基本操作の9ボタン、各種設定項目用として使用されている0~5の数字キー。加えてキャンセルや決定などの3ボタンが機能するようにキーボードのファームウェアを改良。WS2812系のLEDも使って思い通りの色を点灯させたいので一応搭載。

ボタン操作としては想定通りの挙動。しかし、LEDが思い通りに点灯せずやる気がなくなり、ここから数ヶ月寝かせることに…。

ArduinoからRaspberry Pi Picoに乗り換え

当初Arduinoで作っていましたが、Raspberry Pi Pico用に作られたファームウェアがあることを知り触ってみることに。

PC版「SOUND VOLTEX」用に作られたファームウェアのようで、QMKより自分的にわかりやすかったため、こちらに移行することにしました。感謝です。

と、のんびりしている間に海外の人が上記のファームウェアを活用して素敵コントローラーを製作していました。

ボタンもドーム型で自作してるようだし、もうこれ理想形だなぁと、思いつつも作り始めてたのでとりあえず自分なりのものを最後までやってみます。

基板設計

設計前に動作確認

実際に組み始める前にプログラムを弄り、思い通りの挙動になるかを確認。プログラム全体としてはよくわかってないけど、使用するGPIOピンを変更したりなど単純な部分はわかるので必要となるボタン設定をしつつ動作を確認。

当初はボタンを押した際に光る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をそのまま使う形にしました。

f:id:pomegd:20220228113916p:plain

上記で整理したものを発注。

動作確認・完成

一通り組み立てたら動作を確認。ボタンを押したら正常に指定のキーが反応すること、LEDが点灯することを確認。

問題なし。アクリルと組み合わせて動作確認できたら完成。

f:id:pomegd:20220310114936j:plain

寸法はそれぞれおよそ240mm x87mm x19.5mm(ボタン部分含む)。

f:id:pomegd:20220310124635j:plain

ガチ勢な方々やゲーセンプレイでの練習用としては物足りないものだと思いますが、そういう人は公式の専コンやDAOコン、なんならゲーセンの筐体を購入すれば良いし、自分はエンジョイ勢でゲーセンはゲーセン、家ゲーは家ゲーとしてやっているので、これでも十分楽しめるので満足です。

課題

完成したものの課題に思っていることがいくつかあります。

ボタンキャップの大きさ

今回使用しているのは三和・セイミツ製の30mmボタンと同じです。ボタンキャップが30mmなのではなく、実際にボタンとして押せる範囲(25mm弱)が同じというものです。すでに自作したものを流用しているのでこのサイズになりましたが、実際に使ってみるとちょっと押せる範囲が狭いのかなと感じました。

厚み

「Mille-feuille」では約17mmの厚さですが、今回の自作ポプコンは約19.5mm。これはpicoに載っている各パーツの影響によるもので、表面にpicoを配置すれば17mmにすることもできましたが、見栄え的に裏面に取り付けたかったため少々厚くなってしまいました。

ネジの固定

四隅にネジ穴設けてアクリルと基板を挟んでいますが、中央辺りのアクリルを持ち上げると少々隙間ができてしまいます。通常使用では特に気にならないですが、隙間ができるとチリやホコリが入ってしまうので中央寄りの辺りでネジ穴設けた方が良かったかもしれません。

LEDの点灯

課題というかできたらいいなぁというものとして、ボタンの押下時に押下したボタン部分のみLEDが点灯する形ですが、無操作で時間経過によって点灯したりしなかったり、グラデーションのように制御できたら面白そうだなと。

WIP

一旦今回の目標となるPC用ポプコンは完成しました。まぁこれで満足でもあるんですが、実はドリキャスポプコンのプログラムを作って公開してる人もいるので色々試してみてます。

PCとのハイブリッドで作れればベストなんですが、自分にはそんなことできないのでドリキャス専用のポプコンとして現在検討中。でもそれはまた別のお話…。