M8 Headless Stagingの制作
M8 tracker headless staging を DIYしてみた際の記録です。
Dirtywave M8 tracker については、ここに来られている方には野暮だと思うので端折りますが、wavesynth, macrosynth, PCM, fm, サンプリング, GBライクと多様な音源でトラッキングする凄いやつです。使い方はYouTubeにお任せ、2020年後半辺りから日本語のTIPS動画も散見されます。
Dirtywave自身によるM8 Tracker トレイラー
@ymnkngさんが設計、頒布された M8 の海賊版 M8 Headless Staging をお裾分けいただけたので、基板の状態から組み上げた際の勘所を記録しています。海賊版と言っても、オープンソースの M8 Headless Firmware を駆使して、工夫して本家 Dirtywave M8 同様の操作性を目指したものと理解しています。
Headlessの本来の意図はハンズオンタイプにある小型液晶を省いて、Dirtywave M8 が動作している Teensy から送信される画面情報をPCの画面などにプロジェクションさせるもので、M8 Headless Staging はこの仕組みを応用して出来上がっています。実際、工程の中で一度はPCに表示させるステップがありますが、慣れたら直接Raspberry Pi用液晶に表示させて作業を完結させることもできます。
1. 手順
まずは@ymnkngさんのgithubリポジトリでREADME.mdを読んでみて、雰囲気を掴んでおくと良いです。
素の基板からの組み上げなので各種電子パーツの入手が必要になるのと、箇所は多くないものの、はんだ付け作業が発生します。入手時点で@ymnkngさんのご厚意により小さな表面実装部品は実装いただいてました。
私の作業環境です。
Windows 11
Raspberry Pi用の電源アダプター
マイクロB -ノーマルAケーブル1本 Teensy 用
Raspberry Pi 用 有線マウスとキーボード
目次の順序が、実際に私が作業してみた上で整理した作業手順です。
2. 必要なパーツの書き出し
元ページに主要部品はリストアップされてます。ここにいくつか代替入手先で手に入れたものと、作業に必要だった工具、TIPSを追加して再構成したリストです。リンクのないアイテムは元のリストの先か別の場所で購入しています。
パーツリスト
Raspberry Pi 3 Model B+
推奨は Pi 4 Model B
私の作例では +なし Pi 3 Model B
L字USBケーブル x 2
Raspberry Pi 用ディスプレイ
Pi 3系と Pi 4でディスプレイ端子の形状が異なるので注意
PCM5102 DACモジュール
ピンソケット 1列 x 2
表面実装用ピンヘッダー 2列
作例ではピンク軸リニアノークリック静音を使用、お好みで
リポバッテリー充電モジュール
スライドスイッチ 2.54mmピッチ 1回路
タクトスイッチ 6mm角
スペーサー 30mm M3 メスメス
スペーサー 15mm M3 オスメス
6角ボルト M3 1cm x 8
小鍋ねじ M2 1cm x 4
ナット M2 x 4
座金 M2 x 4
フォトカプラー
作例では 6N138の代わりにTLP553を使用
10芯リボンケーブル 10cm
フラットケーブルコネクタ x 2
電源等配線 AWS24
熱収縮チューブ 適宜
エクシルチューブ 適宜
ポリカーボネートパイプ M2.5以上 H3.0mm x 4
真鍮パイプでも代用可能
マイクロSDカード 64GBytes 以上 x 1 Teensy 4.1 用
マイクロSDカード 32GBytes x 1 Raspberry Pi 用
ピンハウジング 1pin用 x 2
ピンハウジング用ターミナル x 2
カプトンテープ 適宜
工具
フラットケーブルコネクタ圧着
万力やニッパーでも代用できますが、精度的に安心感が違います
ワイヤーストリッパー
ヒートガン
はんだごて
はんだ
チューブカッター
ピン圧着工具
3. 必要なパーツと工具の手配
2.のリストにあるリンクか、元のリストにある購入先でパーツを手配します。 Teensy 4.1 や Raspberry Pi が昨今の情勢でなかなか入手しずらくなっているので、見かけたらマストバイですよ。
4. PCで作業するためのツールの入手
Dirtywave M8 Headless のセットアップの説明を参考に、以下のツールをすべて揃えます。全てPC上の作業です。
TyTools
TouchDesigner
TOUCHDESIGNER社のアカウントの作成が必要です
ダウンロードは NON-COMMERCIAL版のFREEを選択
SD Card Formatter
またこの段階で Teensy 4.1が入手できていれば、次の 5. に進んで Dirtywave M8 Headless を先に試すこともできます。M8HeadlessSetup.md (以下リンク)に手順が載っています。
あまり細かな説明は要らないと思いますが、以下の点は留意しておくと良いかと思います。上記リンクのStep4まで進められれば画面に何らかそれと思しき画像が出てきます。
マイクロSDカードはできれば 64GBytes以上の容量で、A1グレードのものを使う
マイクロSDカードは SD アソシエーションが提供している純正のフォーマッターでフォーマットする
Teensy は 4.1を入手する
5. Teensy 4.1のセットアップ
直前に書いたとおり、MIDIの使用を想定している場合は ファームウェアのバージョン 2.0.5 を選択することと、できれば 64GBytes以上の容量のマイクロSDカードを使用してください。あとは 以下の点に注意して Dirtywave M8 Headless の Setup に書かれているまま進められると思います。
その他の注意点:
インストールの直前まで Teensy 4.1をPCに接続しないこと
インストールでは Teensy 4.1 はUSBハブを経由せず直接PCと接続すること
PCで音を鳴らすのでなければ Step.4 をスキップすること
6. Raspberry Pi のセットアップ
Piインストーラーがあるので、SDカードリーダーさえあれば特に問題なくSDカードのセットアップはできると思います。
Raspbian 64bitをインストールしますが、ここで私は 最新の Bulleseyeではなく、Busterをインストールしています。BulleseyeではPi 3B用の液晶にうまく画像が表示させられませんでした。Pi 4Bならば Busterでも問題ないかもしれません。元ページにリンクのある以下の Raspberry Pi のセットアップ動画も Busterを例にしていると思います。
動画はPC上の画面へのプロジェクションを目的としているため触れられていませんが、M8 Headless Stagingは小型液晶への表示になるので、解像度をできるだけ小さく(小型液晶表示時に大きく見えるように)しておきます。
800x600等だと後の作業が見やすいと感じました。
Raspberry Pi 上で Teensy からの出力を受けるプログラムは m8c と呼ばれるものです。ここも下記リンクのlaamaa氏のページのとおりにインストールを進めていきます。
途中、Build the program のステップで make とだけ記載があります。動画中では make install を実行していたので、私はそちらを参考にしました。 make install を実行すると、 /usr/local/bin の下に m8c のバイナリがインストールされます。
ページと動画を参考に、紹介されている事を手順通りすすめていきます。
後半で Teensy との通信が上手くいかない場合の対処が述べられていますが、同じ症状の場合は tty あたりの設定も上記 laamaa 氏のページの下部にあるFAQを参考に行います。
7. メカニカルキーとRaspberry PiのGPIOとを接続する設計検討
この段階でキーボードとRaspberry Piのピンとの配線を整理しておくと後の工程がスムーズです。
公式ドキュメントの図を参考に、USBコネクタに近い側の10ピンがメカニカルスイッチの接続用に使用できます。これを元ページで紹介されている GPIOnextで利用します。
M8 Headless Stagingのピンアサインと Raspberry Pi の空10ピンの紐づけにはGNDさえ気にしておけば、キースイッチの配置は後で GPIOnext での設定により何とでもできます。しかしGNDのピン配置はパネルとはずれているので、GND同士が結線されるように配慮してケーブルを作ります。キーの割り当てとGPIOの番号は気にする必要はないので、とにかくGPIOとキーが間違いなく配線されることだけを確実にしておきます。
元ページの作例は直接はんだ付けされています。私の作例はリボンケーブルとフラットケーブル端子とを用いて作成しています。
見えにくいですが、フラットケーブルコネクタの片側はシャットダウンボタンの配線を塞いでしまうため、ニッパーで切り落としています。
8. 配線の作成
各配線ともにほぼ15cm程度あれば問題なく配線できました。
以下の作例の画像が参考になると思います。
リチウムポリマーバッテリは車載用の両面テープで固定しています。
Raspberry Pi 本体への給電はバッテリー充電モジュールの配線の先に位置しますが、この配線は L字のUSBケーブルを途中で切って接続しました。
バッテリー充電モジュールの陽極の配線途中にスライドスイッチを挟んでいます。
またシャットダウン用のタクトスイッチのGNDとRaspberry PiのGNDピン、同じくタクトスイッチの信号用パッド(中間パネルにTO_SHUTDOWN_GPIOのシルクあり)とRaspberry Piの GPIO_5 との接続に 1pin ピンハウジングを用いて接続しています。高さが少しあるので、これもピンターミナルにぎりぎり干渉しない程度にハウジングを削りました。
9. 表パネルへのはんだ付け
Kailh のロープロファイルスイッチと、表面実装用ピンを10ピン切り出して表パネルにはんだ付けします。
10. DACモジュールのピンのはんだ付け
途中の中間パネルの全体画像を参考に、DACモジュール自体のピンをはんだ付けします。
中間パネルとの高さが気になるので、ピンヘッダをそのまま中間パネルにはんだ付けする都合上、中間パネル側のピンを途中で切り落とします。
11. 中間パネルへの部品のはんだ付け
途中の中間パネルの全体画像を参考に、DACモジュール、スライドスイッチ、タクトスイッチ、Teensy用のピンソケット、タクトスイッチ用の配線パッド(GPIO/GND)と配線、フォトカプラ―をはんだ付けします。
フォトカプラ―は足を90度に水平になるように曲げて、適度な長さで切り落とす必要があるので慎重に作業します。
また各はんだ付け端子部分との接触防止にカプトンテープを貼っています。
カプトンテープを貼る場合、はんだ付けする部分はできるだけ基板と面一になるようにすると安心です。
12.配線の作成と中間パネルへの配策
既に作った配線を中間パネルに空いている穴2か所にそれぞれとおしていきます。バッテリーからのUSB端子は液晶とRaspberry Piのどちらに接続しても問題ないです。
注意点
事前にバッテリーモジュールの出力電圧をテスターで計測して、5.1V程度が出力されていることを確認しておきます。
13. リチウムポリマー充電モジュールと配線のはんだ付け
途中の全体画像ですでにバッテリー充電モジュールとバッテリーとがはんだ付けされていますが、この段階ではんだ付けした方が安全に作業できると思います。
14. Teensy, Raspberry Piの搭載と配策
Teensyはピンソケットに差し込むだけなので最後に搭載します。
Raspberry Piと中間パネルとの間を確保するため、スペーサーで3mm程度浮かせた状態で M2ネジと座金で固定します。
作例ではスペーサーとしてポリカーボネートチューブをチューブカッターで切って4か所それぞれ挟んでいます。
Raspberry Pi が搭載されたら、もう一本の L字USBケーブルを装着し、できるだけ外にで出ないようにTeensyとの間を配策します。
最後にTeensyを搭載してUSBケーブルをつなぎます。
15. 火入れ確認
上下パネルで固定してしまう前に、バッテリー充電モジュールから5Vが出力されることと、正負極が逆転していないことを確認します。
その後、電源のUSBケーブルをRaspberry Piと接続し、正常に起動してくるか火入れして試します。おもにバッテリーからの出力で起動できることの確認です。
16. メカニカルキーを動作させるスクリプト実装
元ページで紹介されている GPIOnext のセットアップ手順に従って GPIOnextでキーを設定していきます。
キースイッチとGPIOさえ間違えなく接続できていれば、GPIOnextの設定中に実際に長押しで割り当てるキーが自動でGPIOに割り当たるので、どのキーがどのGPIOかは気にしなくて問題ないです。肝心なのはGPIOにキースイッチが割り当たっている事です。
17. 自動起動と電源OFF用のスクリプト実装
Raspberry Pi 上で、元ページで紹介されている キースイッチのPythonスクリプトファイルを編集し、紹介されているどおりの手順で保存します。
rc.local の中に記載することによって システムデーモンが絶えずこのGPIOを監視するようになります。
自動起動は crontab での編集が簡単です。
@genzouwさんのページで紹介されている方法が分かりやすいです。
$ crontab -e
>> 以下 crontab 編集画面で最後行に追加
@reboot /usr/local/bin/m8c
これが出来る方なら、カーソルを消す clutter などの手段は解説不要と思います。
また、最大化はm8cのインストールフォルダにconfigフォルダがあるので、その中の設定 display の設定項目で fullにしておきます。
18.ナットとスペーサーで組み上げ
全ての設定ができたら、スペーサーとネジで組み上げます。
私は好みで6角ネジを使いました。また背面にクッションゴムを4か所貼って、机に安定して平置きできるようにしています。