BOOTHで購入したレトロ音源サウンドインターフェースを使って、10MHz機のX68000による負荷の高いPCM8再生にチャレンジ

RaspberryPiを利用したX68000用外部音源キット

キット注文

BOOTHで面白そうなキットを発見。RaspberryPiをX68000用の外部音源として利用できるようにするキットらしい。

最初、「なにそれおいしいの?」と思ったのですが、X68000初代でもPCM8の曲が鳴らせる(RaspberryPiが演奏負荷を担うので)というのは興味深いなと。

また、プリンタポートを使うので余ってるポートの有効活用としても面白そう。

そしてなにしろお安いのが良い。

見たところ、そこまで工作も大変そうじゃないので、ハンダ付けも楽しめそう。

というわけで、2ヶ月ほど入荷待ちしていたら、入荷通知が来たのでポチってみました。

キット到着

修理やメンテナンスではなくて、普通の電子工作、楽しみ!

基板が黒くて格好良い・・・。

もちろん、別途RaspberryPiが必要です。あとは、最低限のLinuxの知識ですかね。

ハンダ付け

部品の確認

抵抗とダイオードはそれぞれ全部同じ種類なので間違えにくいです。

部品の取り付け

ダイオードの向きにだけ注意しながら取り付けていきます

GPIOのコネクタ、RaspberryPi zeroのとき、つけたなあ・・・。

裏からつける部品もあるので要注意です。

サクッと1時間くらいで完成!

ロジックICはソケットが付属してたので交換することはなさそうですが、せっかくなので使ってみました。

モトローラの74LSがついてました。

RaspberryPiは3B+を用意。基板を合体接続して電源を入れてLEDが光れば、ここまではOKのようです。

RaspberryPi側のセットアップ

ハードウェアの次はソフトウェアを設定していきます。

OSのセットアップ

OSは特に指定がなかったので、一番メジャーな「Raspbian」をセットアップしていきます。

「圧倒的に速い」──ラズパイにOSをインストールする新ツール「Raspberry Pi Imager」:名刺サイズの超小型PC「ラズパイ」で遊ぶ(第21回)(1/2 ページ) – ITmedia NEWS :

ras68k-ext サポートページ :

と・・・このあと、最新のRaspberry Pi OS Lite(32-bit)を指定して、色々試したのですが音が出ず・・・OSがだめな可能性も考えてこのOSを断念。

実績のある別の古いバージョンのOSを再セットアップ

試行錯誤してもどうしても音が出なかったので、すでに動いた方のところと同じバージョンのOSにすること。

Index of /pub/raspberrypi/raspbian_lite/images/raspbian_lite-2019-04-09 :

こちらの、 2019-04-08-raspbian-stretch-lite.zipで試していきます。

先程紹介のインストーラーで上記のイメージを直接指定できました。5分もかからずセットアップ完了(ダウンロードの方が10分くらいかかりました)

RaspberryPiのハードウェアの設定

有線LANをつなぐのが厄介なのでWi-Fiの設定と、WindowsPCから操作できるようにSSHをONにしたくらいです。

$ sudo raspi-config

デフォルトアカウントは「pi」、パスワードは「raspberry」です。すっかり忘れてました。

アプリケーションのセットアップ

再生するためのアプリを作者のサイトからダウンロードしてきます。

RaspberryPiがLite版でX-windowやブラウザがなかったので、コマンドラインです。

$ cd ~
$ curl -OL http://opmregisters.web.fc2.com/ras68k/pcmd_bin_20200517.tgz

$ tar -xzvf pcmd_bin_20200517.tgz

ファイル名や拡張子が変わってる場合があるみたいなので要注意です。

実際には、動作実績のあった勧められた20191016版を利用しましたが、最新版でも問題ないかもしれません。

設定ファイルの更新

pi68k.shというシェルスクリプト内で色々設定ができます。最低限、確認が必要なのはRaspberryPiの音声出力設定です。

音声デバイスの設定をコマンドで確認します。

$ aplay -l

ここの、card番号とdevice番号を設定します。

nanoというテキストエディタが最初から入っていたのでファイル編集に利用しました。

$ sudo nano pcmd/pi68k.sh

hw:0,0のところです。今回はこれでヘッドフォン端子から出力されました。

その他、出力周波数やキャッシュディレクトリなども指定できますが、ここでは出力デバイスの設定のみでOKです。

(おまけ)RaspberryPi起動時の自動実行

このあたりはランコマンドのレベルなどお好みで。

# cp -p pi68k.sh /etc/init.d
# cd /etc/rc3.d
# ln -s /etc/init.d/pi68k.sh ./S90pi68k

起動

RaspberryPi側

先にRaspberryPi側のプログラムを起動します。(midiはつないでいないのでmidi周りの設定がエラーになってます)

$ sudo pcmd/pi68k.sh start

X68000側

続いて、X68側ですが、インストールなどは不要です。

まず初回は、piinit.x – を接続テストを実行します。

続けて、plib.xを実行します。成功すると、installedと表示されます。

最後に、音楽ドライバを常駐させます。MXDRV.x、zmusic_r.xを利用してみました。ちなみにPCM8対応データ再生でもPCM8.xは不要です。

再生するとPCMデータを作成してるのか数秒待たされますので、慌てずに待ちましょう。

不具合発生の調整事項

RaspberryPi側

PCMパートがきちんと鳴らない

全然PCMパートが鳴らなかったり、ぶちぶちした場合は、RaspberryPi側のキャッシュデータをクリアすることで改善しました。

キャッシュデータは、定義ファイル(pi68k.sh)のデフォルトだと/var/tmp/cache/にあります。

ただ、しばらくするまた何故かなってしまいます。

Zmusicドライバではこの現象が起きにくいようなので、Zmusicドライバを常駐させてmxtoz(mmdspでもOK)でMDXデータを再生するという方法でとりあえず聞けています。

再生が音痴(ピッチがおかしい)

定義ファイルのdevice_waitの値を増やすことで改善しました。ハイパワーマシンほど大きい数字にするのが良いらしいです。

060turbo(50MHz)で、16000にしてみました。

ソーサリアンが音痴になったのが直りました。

X68000側

ゴミファイルがAドライブのルートに作成されてしまう

環境変数「MXDRV_CACHE」に、再生時にテンポラリファイルが作成されるので適当なドライブを指定しておきます(RAMDISKがいいですかね)

autoexec.bat内に SET MXDRV_CACHE=D:\ と記載しました。

その他

演奏中にRaspberryPiを再起動すると、X68000がハングアップするようです。

また、pi68k.sh stopで、プログラムを停止させてもフリーズするようです。このあたりは今後の改善に期待でしょうか。

まとめ

ソフトウェアの設定で苦労しましたが、簡単に工作できるし2,500円でかなり楽しめました。

X68000だけでなく、それこそWindowsでも利用できれば、用途が広がるかも?(詳しいことはわかりません)

ベンチマーク

CACHE OFFのX68030+060turbo(50MHz)で、再生なし(174%)、PCM8+MADRV再生(109%)、レトロ音源基板(159%)を比べてみました。

これくらいのパワー使用率なら、たしかに10MHz機でもPCM8対応のデータ再生ができるかもしれませんね。

これから

ぜひ、初代X68000が直った暁にはテストしてみたいです。

そして、RaspberryPiにつないだUSBMIDIや、MercuryUnitのエミュレーションもできるようなのですが、いつかまた。

今日はひとまずここまで~。いい感じのケースがほしいですね(右のはRaSCSI)