3DSのニンテンドーeショップでの販売が今日ちょうど終了しました。
ハードも発売から10年以上が経過していて今では過去の仲間入り。
そんな3DSをワイヤレススピーカー化してみようと思います。
まず、前提条件として改造済み3DSが必要です。 PCはWindowsでもLinuxでもmacOSでも多分OKです。
〜検証環境〜
PC: MacBook Air (2022, M2), macOS Monterey
3DS: 3DS LL, 11.16.0-48J
何が必要? 最初は自作アプリでPCMあたりで直接やり取りしようと考えていたんですが、低レベルな層にアクセスしてごにょごにょできるのがC++しかないみたいなので諦めました。
そして思いついたのが音楽プレイヤーの「LimePlayer3DS」にインターネットラジオを聴く機能があったことです。
これを使えばストリーミングができると思ったので、今回は配信サーバー Icecast とDJソフト Mixxx を用意します。
「なぜDJソフト?」と言われると、GUIでまともそうなのがこれしかなかったからです。他にも、本来ならFFmpegから直接Icecastに流すことができるんですが、自分の検証環境のmacOSのFFmpegだと音声入力がブチブチ途切れるという問題が発生していました。Mixxxは音声入力の垂れ流しに対応しているので心配無用です。
今回はこういう構成になります。 Icecastをインストール・設定 Icecastは、公式サイトから入手できます。
https://icecast.org/download/ また、OSのパッケージとして配布されている場合もあります。Ubuntuだと icecast2 で提供されていると思います。macOSのHomebrewでは icecast のようです。
インストールできたら icecast.xml という設定ファイルを開きます。macOSはHomebrew経由で入れた場合は /opt/homebrew/etc/icecast.xml、Linuxは /etc/icecast.xml にあると思います。
開いたら、<hostname>localhost</hostname> という行を探します。見つけたら、値を PCのローカルIPアドレス に置き換えます。
さらに下にあるbind-addressのコメントアウト (<!-- --> の囲み)を解除して、値を同じくPCのローカルIPアドレスで置き換えます。 そしてさらにその下にこれを書き加えます。localhostでも繋がるようにします。
<listen-socket> <port>8000</port> <bind-address>127.0.0.1</bind-address> </listen-socket> これで設定ファイルの編集はできました。
Icecastはすでに立ち上がっているので再起動しておきます。
最後に3DS側で読み込ませるファイルを作成します。適当にmainとか何でもいいのでファイル名を決めて、拡張子を .m3u にします。
エディタで以下の内容を入力して保存します。
http://PCのローカルIPアドレス:8000/main このファイルは3DSのSDカードにコピーしておきます。ルート階層に投げるだけでもいいです。
Mixxxをインストール・設定 次は音楽プレイヤー代わりのDJソフトを入れます。
https://mixxx.org/download/ からインストーラーをダウンロードします。
Ubuntuなどはリポジトリが用意されているみたいなので確認しておくといいかもしれません。
インストールして起動したら、最初に音楽フォルダを選ぶように求められると思います。自分は選びましたがキャンセルしてもいいと思います。
先に進むとこのような画面が現れます。いかにもDJソフトって感じで様々なボタンがあります。ワケワカメですね。
上部のメニューバーから設定を開いて、左側のリストから「ライブ放送」を選択します。それから右側に入力していきます。...