![見出し画像](https://assets.st-note.com/production/uploads/images/81066952/rectangle_large_type_2_97922c0ef3b6815f18d6bcac69e31e95.jpg?width=1200)
3DプリンターでSOUND VOLTEXコントローラーを作る
IIDXのコントローラーを3Dプリンターで作れたならボルテのコントローラーも作れるんじゃない?となるのはある意味当然と言える。スクラッチの部分にはロータリーエンコーダーを使用したし、ボルテのつまみにもロータリーエンコーダーが使える。ボタンも大きさを変えるだけで対応できる。IIDXコンの3Dモデルを基にボルテコンも作ってみることにした
1,スイッチ、バネ、ロータリーエンコーダーの調達
ボルテのバネ/スイッチは各20g/100gらしい。IIDXより重いものの、ボタン面積が広いので妥当だろう
これに関しては3Dプリンターでは作れないので純正品を使う
各6個+スタートボタンはお好みのもので
ロータリーエンコーダーはIIDXのターンテーブルに使用したものと同じ。左右で2個必要
相変わらずだがボタン信号にはArduino互換機Pro Microを使用する
2022年6月現在、一番安く買えるのはおそらく遊舎工房という自作キーボード用通販サイトと思われる
2,土台を作る
もはや何も言うまい。使用するのは300mm×450mmの板と適当な木材
![](https://assets.st-note.com/production/uploads/images/81063186/picture_pc_bed36b0585be69297beea67da1f74e7f.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/81063185/picture_pc_25e2d84567aa97ddfd774ba1f22dd36f.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/81063219/picture_pc_d26a6b3b913be48675f6c0cac97db8e6.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/81063198/picture_pc_e137327b213c90c50ed6d92fb81bd3b0.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/81063218/picture_pc_60c37c79ae54dee1d5e4460ca92a5faf.png?width=1200)
3,SDVXの3Dモデルを作る(BTボタン)
ほとんどはIIDXのモデルから流用したもので、耐久性の強化などいくつかの改善を加えている。純正のボタンを持っていないため、ネットで調べた寸法から作成している
故に純正ボタンとの互換性も無し。ここで制作するものは完全に3Dプリンター製コントローラー専用のパーツとなる
各部位はIIDX同様にいくつかのパーツから構成されている。IIDXのボタン制作記事を読んだ方なら大まかな流れは分かるだろう
プリント時間、使用フィラメント量はUltimaker Curaの測定値(レイヤー高さ0.12mm、インフィル率20%)
DLはこちら
SDVX用BTボタンSTLファイル
1,ボタン上部
プリント時間:2時間58分
使用フィラメント量:16g
![](https://assets.st-note.com/img/1655703105552-67Y15h2jPH.jpg)
実際に押す部分。モデルではバネを入れる細いほうが下になっているが、印刷の安定を重視するなら180度回転させて広いほうを下にしてもいい
2,ボタン下部
プリント時間:4時間32分
使用フィラメント量:22g
![](https://assets.st-note.com/img/1655703410419-aC6UUQe6X1.jpg)
天板にはめる部分。IIDXボタンと違い、ネジ部分を厚くして耐久性を強化しているため、直径はM28×2になっている
3,固定用フタ
プリント時間:1時間28分
使用フィラメント量:7g
![](https://assets.st-note.com/img/1655703649137-UrxfCZYs41.jpg)
下からナットと共にボタン下部を天板に固定するためのフタ
4,スイッチホルダー
プリント時間:50分
使用フィラメント量:3g
![](https://assets.st-note.com/img/1655703750230-1G1WMxyMHO.jpg)
IIDXボタンからの流用。両側から挟んでスイッチを固定する
5,ボタン上部の足
プリント時間:22分
使用フィラメント量:1g
![](https://assets.st-note.com/img/1655703854210-HNBFXv3kii.jpg)
これもIIDXボタンからの流用。足が折れないように分割して印刷する
6,ナット
プリント時間:44分
使用フィラメント量:3g
![](https://assets.st-note.com/img/1655703932784-k8qK1Hcpk6.jpg)
ボタン下部を固定するためのナット。噛み合わせが悪いとなかなか入りづらいので、締める、緩めるを繰り返して慣らしながら使うとよい
上記を組み立てたもの
![](https://assets.st-note.com/production/uploads/images/81059856/picture_pc_c0fae6669769db6ca01485ee8efc2f73.png?width=1200)
1、2、4、5を組み立ててボタンの体を成したもの
4,SDVXの3Dモデルを作る(つまみ)
DLはこちら
SDVX用つまみSTLファイル
1,つまみ本体
プリント時間:2時間28分
使用フィラメント量:10g
![](https://assets.st-note.com/img/1655704097152-H9ipL4VpFG.jpg)
肝心要のつまみの部分。ロータリーエンコーダーに刺して使う
ボタンを固定するネジ穴等は無し。ロータリーエンコーダー側の遊びを調整してはめ込む形で固定させる
2,ロータリーエンコーダー固定具
プリント時間:55分
使用フィラメント量:3g
![](https://assets.st-note.com/img/1655705544130-EQqGTzgASB.jpg)
![](https://assets.st-note.com/img/1655705561852-caudjG4LuP.jpg)
ロータリーエンコーダーは少し工夫して固定することにする。つまみと一緒に回ってしまってはプレイにならないからだ
組み立て方は後述する
3,固定用フタ
プリント時間:35分
使用フィラメント量:3g
![](https://assets.st-note.com/img/1655707380624-H2s1J3msMc.jpg)
ロータリーエンコーダー固定具を天板の固定するためのフタ
4,ナット
プリント時間:25分
使用フィラメント量:2g
![](https://assets.st-note.com/img/1655707620940-iYAf96SwWY.jpg)
上記固定用フタと合わせて使う
組み立て方
2にロータリーエンコーダーが入る。はんだ付けしたロータリーエンコーダーを突っ込む
![](https://assets.st-note.com/production/uploads/images/81059899/picture_pc_3fda6d41df6fd014408392b9420aadce.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/81059897/picture_pc_e2b7450360a3f273fc41845cae001674.png?width=1200)
天板に開けた2cm四方の穴にはめ、フタとナットで固定する
![](https://assets.st-note.com/production/uploads/images/81059900/picture_pc_81de78642e88a38e2ccef8292382580b.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/81059896/picture_pc_6e09ad7508d1f33132c499c8eb033319.png?width=1200)
これでいくら回しても微動だにしないロータリーエンコーダーとなる
5,SDVXの3Dモデルを作る(FXボタン)
わざわざ別項に分けたが、IIDXのボタンと同じなのでそちらのモデルを使う
詳しくは下記の記事を参照
6,SDVXの3Dモデルを作る(STARTボタン)
24mm四方の正方形ボタン。IIDXのE1~E4などにも使える
DLはこちら
汎用24mm正方形ボタンSTLファイル
1,ボタン上部
プリント時間:1時間20分
使用フィラメント量:6g
![](https://assets.st-note.com/img/1655710876669-K4qz8uDoBj.jpg)
説明がめんどくさくなってきた各パーツの組み立て方はBTボタンと同じ
2,ボタン下部
プリント時間:2時間30分
使用フィラメント量:11g
![](https://assets.st-note.com/img/1655710987940-UwEhEhydjK.jpg)
3,固定用フタ
プリント時間:1時間3分
使用フィラメント量:5g
![](https://assets.st-note.com/img/1655711525680-KSlu8caTdn.jpg)
4,スイッチホルダー
プリント時間:50分
使用フィラメント量:3g
![](https://assets.st-note.com/img/1655711351830-QFA8ZzCLYa.jpg)
IIDXボタン、及びBTボタンと同じ
5,ボタン上部の足
プリント時間:22分
使用フィラメント量:1g
![](https://assets.st-note.com/img/1655711425072-jXJKjvNwI3.jpg)
IIDXボタン、及びBTボタンと同じ
6,ナット
プリント時間:44分
使用フィラメント量:3g
![](https://assets.st-note.com/img/1655711594272-7XEhgWGofX.jpg)
BTボタンと同じ
6,配線とスケッチ
これもほぼIIDXと同じ。GNDと各ピンを繋ぐだけ。ロータリーエンコーダーは10kΩの抵抗を挟んで使う。下記記事を参考
![](https://assets.st-note.com/production/uploads/images/81063645/picture_pc_bf1531a1c0219026beff4979026b01cb.png?width=1200)
Arduinoのスケッチは下記の通り。2~8ピンをボタンに使い、10~16をロータリーエンコーダーに使う
#include <Arduino.h>
#include "HID-Project.h"
#include <limits.h>
#include <Encoder.h>
#define log_timer 50 //つまみの感度
Encoder EncL(10, 16);
Encoder EncR(14, 15);
//ピン番号 0は欠番 10~16はロータリーエンコーダー用
int button[8] = {0, 2, 3, 4, 5, 6, 7, 8};
int input_logL[50];
int prev_L;
int max_valueL;
int min_valueL;
int input_logR[50];
int prev_R;
int max_valueR;
int min_valueR;
int timer;
int i;
void setup() {
for (i = 1; i < 8; i++) pinMode(button[i], INPUT_PULLUP);
Gamepad.begin();
}
void loop() {
delay(1); //1ミリ秒ごとに処理
Serial.println(digitalRead(10));
Serial.println(digitalRead(16));
max_valueL = INT_MIN;
min_valueL = INT_MAX;
//過去50ミリ秒分のロータリーエンコーダーの値を記録し最小値と最大値を調べる
for (i = 0; i < log_timer; i++) {
if (i == log_timer - 1) input_logL[i] = EncL.read();
else input_logL[i] = input_logL[i + 1];
max_valueL = max(max_valueL, input_logL[i]);
min_valueL = min(min_valueL, input_logL[i]);
}
max_valueR = INT_MIN;
min_valueR = INT_MAX;
//過去50ミリ秒分のロータリーエンコーダーの値を記録し最小値と最大値を調べる
for (i = 0; i < log_timer; i++) {
if (i == log_timer - 1) input_logR[i] = EncR.read();
else input_logR[i] = input_logR[i + 1];
max_valueR = max(max_valueR, input_logR[i]);
min_valueR = min(min_valueR, input_logR[i]);
}
for (i = 1; i < 8; i++) {
if (digitalRead(button[i]) == LOW) {
Gamepad.press(i);
}
else {
Gamepad.release(i);
}
}
if (max_valueL != min_valueL) {
if (input_logL[log_timer - 1] > input_logL[log_timer - 2]) {
Gamepad.release(20);
Gamepad.press(21);
}
if (input_logL[log_timer - 1] < input_logL[log_timer - 2]) {
Gamepad.release(21);
Gamepad.press(20);
}
}
else {
Gamepad.release(20);
Gamepad.release(21);
}
if (max_valueR != min_valueR) {
if (input_logR[log_timer - 1] > input_logR[log_timer - 2]) {
Gamepad.release(23);
Gamepad.press(22);
}
if (input_logR[log_timer - 1] < input_logR[log_timer - 2]) {
Gamepad.release(22);
Gamepad.press(23);
}
}
else {
Gamepad.release(22);
Gamepad.release(23);
}
Gamepad.write();
}
7,完成
スタートボタンだけ未実装だけどなんとか3Dプリンター製SDVXコントローラー完成した! pic.twitter.com/YdBbEWkHjG
— Enter🏳️🌈 (@eraBEMANI) June 19, 2022
とりあえずテストしたい気持ちがあったのでスタートボタンは省略。早速遊んでみることにした
が、筆者はSDVXはほとんどやったことが無いため、下手くそなテストプレイとなっている
恒例のテストプレイ動画ですがボルテ素人なので初心者丸出しプレイです pic.twitter.com/bpLjby4Bo3
— Enter🏳️🌈 (@eraBEMANI) June 19, 2022
つまみも問題なく動く。高難易度はともかく、ある程度は遊べそうだ
スタートボタンもちゃんと作ったよ pic.twitter.com/90me1zmGiz
— Enter🏳️🌈 (@eraBEMANI) June 20, 2022
スタートボタンもちゃんと作りました。3Dプリンター製SDVXコン製作記おしまい
8,費用
IIDXコントローラーと同じく、フィラメントは1g3円で計算してみる
BTボタン:使用フィラメント量52g×4×3円=624円
FXボタン:使用フィラメント量25g×2×3円=150円
つまみ:使用フィラメント量18g×2×3円=108円
STARTボタン:使用フィラメント量23g×3円=69円
20gバネ121円×7=847円
スイッチ209円×7=1463円
ロータリーエンコーダー90円×2=180円
木材 約1,000円
その他電子工作部品等 見積もって約300円
合計4800円ほど(送料別)。多分これが一番安いと思います