【pop'n music用】beatmania風コントローラーについて
beatmaniaIIDX用ハンドメイドコントローラー、SOUND VOLTEX用ハンドメイドコントローラーに続いて販売開始した第三弾は、beatmaniaのボタンを使用したポップンコントローラーだ
アケコンサイズのポップンコントローラーは公式やKCGコンがあるし、コンパクトモデルと称したPS2時代に見たことがあるコントローラーも公式から発売された
ポプコンはIIDXのターンテーブルやSDVXのつまみのような特別な部品は使わずボタンのみで作られているため、比較的制作は容易なほうではある。そのため先駆者が既に居るし、各海外コントローラー業者でも販売されている。新たに販売開始しても面白みがない
過去の記事でアーケードサイズのポップンコントローラーを制作したが、騒音の問題、送料の問題、純正ボタンでない故の反応の怪しさなどがあり、商品化には懸念が多い
ならば過去に販売して安定性が保証されている部品を使い、小型化と静音化を両立させたbeatmania風コントローラーならどうだろうか?と思い、試作に至った
作って販売開始しても売れなきゃ困るので、ある程度の需要も計る目的で上記のツイートをしたのが始まり。結果的にはこれが功を奏し、適切な数の初期生産に繋がった
当記事では、過去の記事同様に購入者に向けた仕様説明、及び制作方法を記す
1,各部品の種類・交換方法
鍵盤部分
いつもお世話になってますAliExpressさん
この商品には黒のカラバリが無いので白鍵の購入のみに使っていたが、ポップンにはちょうどいい色が揃っている。数あるボタン商品の中でもかなり安いほう
IIDX用ハンドメイドコントローラーでも使用しているため、信頼性もある
ボタンの分解方法はIIDX用コンの記事で説明しているため割愛。今回のビート風ポプコンはバネ抜きしてるため、異常があればスイッチの寿命ということになる
新仕様基板
現在はPC/PS2両対応のために汎用ゲームパッド基板「CY-3103」を使用している。詳しくは以下の記事を参照
旧仕様基板
Arduinoを使用した旧仕様についても説明する。IIDXコン、ボルテコンの記事と同じ内容。以下引用
あまり考えられないが、何らかの原因で基板が故障するかもしれない。基板の交換方法についても説明する
製品の基板にはArduino互換機、Pro Microを使用している。当noteでの専コン制作では非常にお世話になっているものだ
Pro Microの購入方法は多々あるが、どうも値段が安定しない。種類もいくつかあるため、戸惑った場合は筆者が購入している遊舎工房で購入するといいだろう
しかしこのPro Micro、最大の問題点として端子部分が物理的に壊れやすいという欠点がある。使用する前に接着剤等で補強することを推奨。製品のPro Microは補強済み
Pro Microに繋ぐ際の各ピンの対応は製品だと
左白→2ピン
左黄→3ピン
左緑→4ピン
左青→5ピン
赤→6ピン
右青→7ピン
右緑→8ピン
右黄→9ピン
右白→10ピン
となっている
2,配線とファームウェア
新仕様のCY-3103基板を使用する場合は上記の記事で説明しているため、この項は読み飛ばして構わない
旧仕様、Arduinoを使用する際のスケッチ等を残しておく。また、こちらはキーボード化等の融通が効くため、必ずしもCY-3103の下位互換ではないことを留意されたし
配線
製品では諸事情により色無選別のGND、それ以外は無選別のジャンパーワイヤーを使用。ファストン端子を使用し、スイッチの交換などが容易になっている
ファームウェア
ファームウェアとはArduino基板に書き込む組み込みプログラムのこと。これをインストールすることで、基板がゲームパッドとして認識される
製品もファームウェア書き換え用のソフトをパソコンにインストールすれば書き換えられる。知識ある人なら好みに合わせて調整もできる。以下では手順を説明する
まず公式サイトからArduino IDEをダウンロード、インストールする
インストールしたら、ファームウェアに使うHIDライブラリなるものもダウンロードする。下記リンクから最新版をどうぞ
IDEを起動したらメニューの「スケッチ→ライブラリをインクルード→.ZIP形式のライブラリをインストール」で上記HIDライブラリを選択してインストールする
あとはUSB接続で基板をPCに繋ぎ、「ツール→ボード→Arduino AVR Boards→Arduino Leonard」を選択、同メニューのシリアルポート欄で基板が接続されていれば、下記のプログラムをインストールする
#include <Arduino.h>
#include "HID-Project.h"
//ピン番号 0は欠番
int button[12] = {
0, 2, 3, 4, 5, 6, 7,
8, 9, 10, 14, 15
};
int i;
void setup() {
for (i = 1; i < 12; i++) pinMode(button[i], INPUT_PULLUP);
Gamepad.begin();
}
void loop() {
for (i = 1; i < 12; i++) {
if (digitalRead(button[i]) == LOW) {
Gamepad.press(i);
} else {
Gamepad.release(i);
}
}
Gamepad.write();
}
これで右のボタンから1~9のボタン番号に割り振られる
また、当コントローラーをインフィニタス等で使用する場合、ゲームパッドとして読み込ませるとスクラッチ対応ボタンを連打時に反応しない仕様がある。ソフトウェア側で押し押し、引き引きの多重入力を防いでいるため
この問題はキーボードとして読み込ませることで解決する
NKRO(Nキーロールオーバー)を使用しているので全押しにも対応
まずは1P側のスケッチ
#include <Arduino.h>
#include <HID-Project.h>
//ピン番号 0は欠番
int button[12] = {
0, 2, 3, 4, 5, 6, 7,
8, 9, 10, 14, 15
};
//q a z s x d c f v
int key[12] = {
0, 0x71, 0x61, 0x7A, 0x73, 0x78, 0x64, 0x63, 0x66, 0x76, 0, 0
};
int i;
void setup() {
for (i = 1; i < 12; i++) pinMode(button[i], INPUT_PULLUP);
NKROKeyboard.begin();
}
void loop() {
for (i = 1; i < 12; i++) {
if (digitalRead(button[i]) == LOW) {
NKROKeyboard.add(key[i]);
}
else {
NKROKeyboard.release(key[i]);
}
}
}
皿はLShift、LCtrlと使うところをQ、Aにしている。インフィニタスゲーム内のオプション画面で設定してください
続いて2P側のスケッチ
#include <Arduino.h>
#include <HID-Project.h>
//ピン番号 0は欠番
int button[12] = {
0, 2, 3, 4, 5, 6, 7,
8, 9, 10, 14, 15
};
//b h n j m k , i l
int key[12] = {
0, 0x62, 0x68, 0x6E, 0x6A, 0x6D, 0x6B, 0x2C, 0x69, 0x6c, 0, 0
};
int i;
void setup() {
for (i = 1; i < 12; i++) pinMode(button[i], INPUT_PULLUP);
NKROKeyboard.begin();
}
void loop() {
for (i = 1; i < 12; i++) {
if (digitalRead(button[i]) == LOW) {
NKROKeyboard.add(key[i]);
}
else {
NKROKeyboard.release(key[i]);
}
}
//Keyboard.write();
}
こちらは皿がRShift、RCtrlとなるところをI、Lに割り当てている。こちらもインフィニタスオプションのキーボード割り当て(キーコンフィグではない)で設定してください
3,外箱、寸法
商品のサイズはおよそ幅25cm、奥行き18cm現在は切り詰めて16cm、高さ10cmになっている。上記ツイートの通り、アケコンサイズの6分の1ほどでコンパクト
天板と底版にはいつも通り厚さ2.5mmのMDF材を使用。商品には底版に滑り止めゴムシートも付いている
土台制作のトピックが無いので寝所を占領された写真を置いておく
天板の寸法はこちら。IIDX用のボタン配置を9ボタンに拡張しただけ
上が少し広くなってしまったので切り詰めることもできる
終わりに
販売開始後の反応も概ね上々で、汎用性の高さからポップン以外にも様々な音ゲーに使用されているようだ
販売開始数日前にポップン公式からコンパクトコントローラーの価格がアナウンスされ、音ゲーマーから非難を受けるほどの価格を見てハードルが下がった。原価は読者各位計算してみてください
質問等はコメント欄は作者のSNSなどでどうぞ。最後にTwitterアカウントと商品ページの方を