GIMONS DEVELOPER WORKS/PilederX

最終更新:2024/7/1

X68000 サウンド拡張ボード PilederX
-Pileder system of sound extension for X68000-
LOGO

告知

2024/6/25 作業途中ですがページを新設しました

注意!

RaspberryPi Picoをオーバークロックして使用する場合があります。
定格を超えた動作のため使用は自己責任です。

最近の変更

Version0.10

はじめに

PilederXは簡潔にいえばサウンド機能に特化したX68000用の拡張ボードです。 MIDIボード(CZ-6BM1/A)及びMercury-Unit V4(MKMU-1O)の複合ボードとして動作します。

さらにMT32-PI(RaspberryPI Zero2Wもしくは3A+)をボード上に実装できます。 MIDI(MT32-PI)、まーきゅりーゆにっとV4のPCM及びFM音源、外部入力の4つをミキシングすることも可能です。

CZ-6BM1/A,MKMU-1Oの一部機能についてはサポートしていませんが実用上問題にならないでしょう。

PilederXの名前の由来はマジンガーZのホバーパイルダーです。
マジンガーZの本体にホバーパイルダーが合体(パイルダーオン!)する様に憧れて
ベースボードに様々な機能のモジュールを合体させて機能強化するコンセプトです。
ロゴも兜甲児のヘルメット姿をイメージしています。

全てのX68000シリーズで使用することが可能な筈です(PRO/ACE/XVIで確認済み)。

MKMU-1OのPCMに関してはPCM8PP等のドライバの負荷が高いため高性能な機種が必要となります。
XVI 24MHz改造モデル、X68030(040turbo,060turbo含む)、拙作のPhantomXが必要でしょう。

因みにPilderXではありませんPilederXです(ここテストに出ます)。

OMOTE URA NANAME


まーきゅりーゆにっと V4について

"まーきゅりーゆにっと"が正しい表記らしいです(商標の関係とか)。

同人ハードウェアである"まーきゅりーゆにっと"を満開製作所が機能拡張(V4)して販売していた拡張ボードです。

型名はMK-MU1とMK-MU1Oの二つがあります。

MK-MU1はPCMのみ(FM音源無し)を実装。
MK-MU1OはPCMに加えてFM音源(YMF288×2)を実装(最後のOはOPNのO何でしょうか?)。

以下、文中に型番が出てきますので補足しておきました。

"まーきゅりーゆにっと"は文章として読みにくいので以下"Mercury-Unit"もしくは型名で表記します。


全体概要

全体の概要を説明するために機能ブロック図を示します。 影付きのブロックは何らかの基板が存在することを表しています。

ベースボードに各モジュール(以下パイルダーと呼ぶ)を実装する構造です。 また音声出力に関する全ての機能はDACパイルダーに集約しています。

MIDIパイルダー、PCM音源パイルダー、FM音源パイルダーはRaspberryPi Picoを採用しました。 MT32-PIは基板レイアウトの制約上RaspberryPi 3A+もしくはZero2Wが実装されます。

DACパイルダーにはMIDI関係のコネクタ、各音源の音声出力、アンプ機能を備えたミキサーが 実装されています。

ABOUT

PilederXの設計思想は "使い勝手の良さ" に拘るです。

ボードのみでサウンド機能を網羅的に強化しながらも外部MIDI音源、ミキサー、アンプを必要としない環境が構築できます。 ヘッドフォンさえあれば面倒な配線や外部機器の無いスマートさが特徴です。

HEADPHONE

もちろん拘る人は外部にミキサーやアンプ、良質なスピーカー等を用意して楽しむのも可能です。

もう一歩進んでオリジナルのDACパイルダーを開発してみてはどうでしょうか。 良いものが出来たらを同人ハードとして頒布してもかまいませんよ。


ハードウェア

ベースボード

PilederXのハードウェアで中心となるベースボードです(ベースボード単体では機能しません)。 各実装エリアに各パイルダーを取り付けて使用します。 ベースボードにはバス信号変換用のレベコンやD-FFとバス制御用のGreenPAK(SLG46824G)で構成されています。 GreenPAKには専用ファームウェアが書き込まれておりアドレスデコーダや多くのバス制御機能を提供します。

GreenPAKのファームウェアは頒布する基板には導入済みですのでユーザーでの作業は必要ありません(現時点)。

BASEBOARD

MIDIパイルダー(CZ-6BM1/Aエミュレーション)

RaspberryPi Pico及びそのピン互換ボードです。 MIDIパイルダー実装エリアに取り付けて使用します。 別途MIDIボードをエミュレーションするためのファームウェアを書き込む必要があります。 MIDI OUT及びMIDI IN信号はDACパイルダーのMIDI OUT/INコネクタに接続されています。 また内部的にMT32-PIのMIDI IN(GPIO)に接続されています。

純正MIDIボード(CZ-6BM1/A)との違いはID(0固定)及びIRQのレベル(4固定)は変更できないことと、 MIDI OUTが1系統かつTAPE IN及びOUTをサポートしていないことです。

MIDIPILEDER

PCMパイルダー(MK-MU1O PCMエミュレーション)

RaspberryPi Pico及びそのピン互換ボードです。 PCMパイルダー実装エリアに取り付けて使用します。 別途Mercury-Unit V4のPCMをエミュレーションするためのファームウェアを書き込む必要があります。 PCM出力信号はDACパイルダーの接続コネクタに出力されます。 出力信号はI2Sでありアナログ信号への変換はDACパイルダー上で行います。

MK-MU1Oとの違いはPCM入力および光デジタル入出力をサポートしていないことです。

PCMPILEDER

FM音源パイルダー(MK-MU1O YMF288エミュレーション)

RaspberryPi Pico及びそのピン互換ボードです。 FM音源パイルダー実装エリアに取り付けて使用します。 別途Mercury-Unit V4のFM音源をエミュレーションするためのファームウェアを書き込む必要があります。 FM音源出力信号はDACパイルダーの接続コネクタに出力されます。 出力信号はI2Sでありアナログ信号への変換はDACパイルダー上で行います。

FM音源パイルダーを使用するにはPCMパイルダーの実装が必要です。 Mercury-Unit V4(MK-MU1O)の構成上PCMが主体でYMF288はオプションという制御になります。 なおIRQのレベル(4固定)も変更できません。

FMPILEDER

MT32-PIパイルダー(MT32エミュレーション)

RaspberryPi Zero2W及び3A+が使用可能です。 MT32-PIパイルダー実装エリアに取り付けて使用します。 別途MT32-PIのファームウェア書き込みとセットアップが必要です。 MT32の出力信号はDACパイルダーの接続コネクタに出力されます。 出力信号はI2Sでありアナログ信号への変換はDACパイルダー上で行います。

RaspberryPi 2B,Zero,3B,3B+,4B等は使用できません。
消費電力を抑えるためにZero2Wを推奨します。

MT32PIPILEDER

DACパイルダー(サウンド出力モジュール)

PilederX用に設計したサウンド出力のための複合ボードです。 DACパイルダー実装エリアに取り付けて使用します。 DACパイルダーの接続コネクタには各パイルダーのI2S信号や MIDIパイルダーのMIDI IN/OUT、MT32-PIの制御GPIO等が接続されています。

接続コネクタの仕様は公開しますのでDACパイルダーはユーザー自身でオリジナルを設計することが可能です。

DACPIPILEDER1

標準では以下の機能をサポートします。

美意識的に裏側にICやコネクタ等を実装することでスッキリとした見た目に仕上げました。

アナログ回路設計初心者の私が設計した基板ですから音質等に過度な期待は禁じます!

DACPIPILEDER2


MIDI IN/OUT端子についての補足。

TRSコネクタ(所謂ステレオヘッドフォンと同じもの)を使用しています。 一般的なDINでもなく純正MIDIボード(CZ-6BM1/A)のようなMiniDINでもありません。 注意しなければならないのはTRS MIDIの規格(配線の仕方)にはTypeAとTypeBという物があって コネクタのTip,Ring,Sleeve(頭文字でTRSです)への配線が異なります。 PilederXでは"TypeA"を採用しています。

TRS MIDIの変換ケーブルを調達する場合は"TypeA"であることを確認してください。 "TRS MIDI 変換"で検索すればすぐに見つかると思います。


MIDI THRUスイッチ(OUT MODE)についての補足。

THRUスイッチを"OUT"側に設定した場合はMIDIパイルダーからの MIDI出力はDACパイルダーのMIDI OUTとMT32-PIのMIDI INに接続されます。 つまり外部にMIDI機器を繋げて演奏したりMT32-PIを利用して演奏できる状態です。

THRUスイッチを"THRU"に設定した場合はMIDIパイルダーのMIDI出力は切断され、 DACパイルダーのMIDI IN信号はOUTに転送されます。 合わせてMIDI IN信号はMT32-PIのMIDI INに接続されます。

MT32-PIをX68000の外部から利用できるようになります。

MIDITHRU


ファームウェア

MIDIボード(CZ-6BM1/A)エミュレーション

XM6 TypeGのMIDIボードエミュレーションをモディファイしてRP2040向けのファームウェアを開発しました。 TAPE OUT/INを除くすべての機能をエミュレーション可能です。

Mercury-Unit V4(MK-MU1O) PCMエミュレーション

XM6 TypeGのMK-MU1OボードエミュレーションのPCM機能をモディファイしてRP2040向けのファームウェアを開発しました。 PCM入力および768ドット×512ドット 256色モードはサポートしていません。


使い勝手向上のため一部仕様を変更しています。

MK-MU1Oの標準仕様ではリセット後にDMAC向けのPCLやREQ信号を出力しません。 PCMを使用していない時にDMACに不必要な信号出力を抑制することが目的となっています。 PCLやREQ信号を出力するためには製品に付属するReqEn.xコマンドが必要でした。

一方、Mercury-Unit V3までは常にPCLやREQ信号を出力します。 V3当時に開発されたであろうPCM8PP等のドライバはまずPCLやREQ信号が出力されている ことを前提に初期化を行うためReqEn.xを実行していないV4ではドライバの常駐に失敗します。

MK-MU1Oを所有していなかった方がこの仕様を知らないといきなりハマル訳です。 実際XM6 TypeGにMK-MU1Oエミュレーションを実装した時に同様の問い合わせがきました。 この経験を元にトラブルを未然に防ぐように仕様を変えます。

まずリセット直後はMK-MU1Oと同様にPCLやREQ信号を出さない状態にして待機し、 ドライバ常駐等により初めてI/Oポートにアクセスした段階で強制的にPCLとREQ信号の出力を有効にします。

電源オンもしくはリセット直後は無駄なPCLやREQ信号を出さない仕様を踏襲しながらも、 面倒なReqEn.xの実行は必要ありません。

Mercury-Unit V4(MK-MU1O) FM音源エミュレーション

XM6 TypeGのMK-MU1OボードエミュレーションのFM音源機能をモディファイしてRP2040向けのファームウェアを開発しました。 FM音源エンジンにはYMFMを使用しています。 FMGENは再現度に難はあるものの非常に軽量でRP2040でも動作するのですがライセンス的に利用しずらいため採用を見送りました。
YMFMはFMGENに比べて再現度は非常に高いのですが負荷が高くてRP2040のマイコンレベルで動作させることはできません。

そこでYMFMの処理を解析してコードを再構築することで大幅に軽量化させて動作可能にしています。 その中で再現性が低下している等の問題が発生している可能性は否めません。 さらにMK-MU1OはYMF288を2個実装しているのでエミュレーションも2個分必要です。 どう足掻いてもRP2040の定格である125MHz(最大133MHz)では処理が間に合わないため オーバークロック動作させました。

定格を超えた設定で使用した場合メーカーの保証等は受けられなくなります。 使用は自己責任ですのでオーバークロックが許容できない場合はFM音源パイルダーを実装しないでください。 現時点で180MHzまでオーバークロックしています(ファーム内で指定していますのでユーザーに作業は必要ありません)。


YMF288のリズム音源データについての補足。

YMF288にはリズム音源を持っておりIC内のROMにリズムデータ(ADPCM形式)が書き込まれています。 YMFMの前身であるMAMEのソースコード(かなり昔)にはこのADPCMデータがそのまま記述されていましたが、 ここ数年のMAME及びYMFMからはコードが削除されており外部のROMファイルをロードする方式に変更されました。

RP2040には外部にフラッシュメモリを持っていますが所謂ファイルシステムではありませんので、 ユーザーがこのROMファイルを用意できたとしても配置する術はありません。 そこでYMF288のテストレジスタにROMファイルのデータを書き込むとフラッシュメモリに保存する機能を実装しました。

リズムデータを書き込むコマンドを別途提供しますのでROMファイルを用意できる場合にはリズム音源が使用できるようになります。


導入(ハードウェア)

パイルダーユニットの実装

ベースボードにはMIDIパイルダー、PCMパイルダー(MK-MU1OのPCM部)、FMパイルダー(MK-MU1OのYMF288部)、 MT32-PIパイルダー(MT32-PI)、DACパイルダー(サウンド出力)の各実装領域(コネクタ)がありますのでそこに接続してください。 但しMIDIパイルダー、PCMパイルダー、FMパイルダーのファームウェアを書き込む為にはMT32-PIパイルダーとDACパイルダーを 取り外して行う必要があります。

制約事項としては以下の通りです。

  • DACパイルダーは必須となります
  • MT32-PIパイルダーを使用するためにはMIDIパイルダーが必須となります
  • FMパイルダーを使用するためにはPCMパイルダーが必須となります

最小構成はMIDIパイルダーとDACパイルダーとなります(MIDIボード相当の機能)。 この構成にMT32-PIパイルダーを追加実装すると本体のみでMT32の音源が使用できます。

Mercury-Unit V4(MK-MU1O)を使用する場合はPCMパイルダーを実装してください。 PCMパイルダーのみ実装した場合はMK-MU1(FM音源なし)となります。 この構成にFM音源パイルダーを実装することでMK-MU1O相当となります。

MIDIパイルダー及びMT32-PIパイルダーを実装せずにPCMパイルダーのみ実装することも可能です。 この場合はMercury-Unit V4のMK-MU1相当となります。 追加でFM音源パイルダーを実装すればMK-MU1O相当です。 PilederXを単にMercury-Unit V4(MK-MU1またはMK-MU1O相当)として使用することも可能ということです。

導入(ソフトウェア)

ライセンス

PilederXはベースボードとDACパイルダーに加えてRaspberry Pi Pico上で動作する ソフトウェア(ファームウェア含む)の総称あるためソフトウェア単体でご利用頂くことはできません。

HP上等で案内する公式頒布サイト(ショップ等)で正規に購入していただいた方に限り ソフトウェアの使用が許諾されます。

なお公式頒布サイトでは譲渡やオークション等での転売禁止を購入条件としています。 譲渡やオークション等での転売で入手された方にはソフトウェアの使用は許諾されません。

同人ハード及びソフトウェアという特性上あくまであるがまま"AS IS"で頒布します。 従って使用者が受けたあらゆる損害に対して一切責任を持ちません。 またソフトウェアに不備もしくは不具合があったとしてもそれを修正する責任もありません。 PilederXを利用することでRaspberry Pi(Pico含む)やX68000が故障するリスクがあります。 あくまで自己責任でチャレンジしてください。 この条件に納得できない場合はご使用をお控えください。

またソフトウェアに関してはこのHP以外での配布を認めておりません。

RaspberyPi Picoへのファームウェア導入

Windowsを利用したファームウェア導入について説明します(Macは分かりません)。

MIDIパイルダー、PCMパイルダー、FM音源パイルダー全てで同じ手順となります。

まずベースボードに各パイルダーが実装されている状態にします(MT32-PIパイルダーとDACパイルダーは外して下さい)。
FARM0

各パイルダーのBOOTSELボタン(白いプッシュボタン)を押下しながらUSBケーブルを接続してください。

当然ながらUSBのもう片方の端子はWindows機にUSB接続されています。

FARM1 FARM2

Windowsに認識されると次のような画面が表示されます。

FARM3

このウィンドウにファームウェア(拡張子uf2のファイル)をドラッグ&ドロップすれば書き込まれます。

FARM4

ファームウェア書き込みが完了すればアンマウントされウィンドウは勝手に閉じます。

ダウンロード

zipファイルには以下のファイルが含まれています。

Version0.1
pilederx version0.10のダウンロード

設定方法

MT32-PIを使用する場合とFM音源パイルダーのリズムROMを使用する場合のみ作業が必要です。

MT32-PIの設定

"mt32-pi.cfg"が設定ファイルです。output_deviceをi2sに変更します。

# -----------------------------------------------------------------------------
# Audio options
# -----------------------------------------------------------------------------
[audio]

# Select audio output device.
#
# Values: pwm*, i2s
#
# pwm: Use the headphone jack
# hdmi: Use the HDMI port
# i2s: Use an I2S DAC
output_device = i2s

その他usbをoffにしたりgainを調整する等お好みに応じて設定してください。

MT32のROMのセットアップ等に関しては説明しません(質問もしないでください)。

FM音源パイルダーのリズムROM設定

ダウロードから得られるplxrhyld.xコマンドを使用してリズムROMファイルを設定します。 当然ながらFM音源パイルダーが実装されファームウェアが書き込まれている必要があります。 plxrhyld.xコマンドをX68000に何らかの手段で持ち込んでください。 plxrhyld.xコマンドはX68000起動直後に実行してください。 書き込まれたROMデータはフラッシュメモリに保存されますので一度だけ実行します。

使用方法は単純でPLXRHYLD.xにリズムROMデータファイルを引数に指定してください。 リズムROMデータは8192バイトのファイルです(入手方法等は説明しません)。

A>PLXRHYLD.x ym2608_adpcm_rom.bin
Rhythm data loading is complete.

使用方法

MIDIボード、Mercury-Unit V4も過去から存在していたものですので、 PilederXを使用するための特定のソフトウェアは必要ではありません。

MIDIボードはMIDI対応のゲームソフトやサウンドドライバで使用できると思います。 Mercury-Unit V4のPCMは定番のPCM8PPで使用することが殆どでしょう。 Mercury-Unit V4のFM音源は対応しているソフトウェアは限られてくるでしょう。 私が知っているのはMNDRVやBEEPから発売された復刻版のYS/YS2になります。 コミュニティに相談するなど色々アドバイスをもらってみてください。

PilederXのボード自体の使用方法としてはX68000シリーズの背面AUDIO OUTと DACパイルダーのMIX INをステレオケーブルで接続することを強くお勧めします。 内蔵音源とMIDI音源の両方を活用したゲームで不思議な満足感を得られるでしょう。

応用編

MT32-PIパイルダーを外部から使用する

MIDIパイルダーの項で説明した通りDACパイルダーのMIDI THRUスイッチを"THRU"に設定することで、 MIDI INから入力されたMIDIパケットをMT32-PIで演奏することができます。 MIDIインターフェースを備えたレトロPCを複数台所有している環境で役立つかもしれません。

DACパイルダーを自作される場合

各音源のボリューム調整がしたいであるとか、もっと音質の良いアンプが欲しいであるとか、MT32-PIの制御をしたいとか、 色々と標準のDACパイルダーに不満が出る場合はご自身で設計してみてはどうでしょうか?チャレンジされたい方は応援します。 まず最低限ですがジオメトリと信号線の情報を載せておきます。

基板ジオメトリ

DAC0

左右のコネクタは2.54ピッチのピンヘッダーです。 コネクタの内側のピン同士の間は4.8インチ丁度となります。 上下のマージンは最大で0.35インチと0.24インチ程度です。 ベースボードと固定する穴はM3ネジを想定しています。

コネクタ信号線

DAC1

ベースボードを上から見て(ベースボードのカードエッジは上側)左右のコネクタです。

5V,3V3,12V,-12Vは各電源、GNDはグランドです。

"_I2S"で始まるピンは各パイルダーのI2S信号線となります(MT32-PI、PCM、FM音源)。 3.3V系の信号線であることに注意。

"MIDI_OUT","MIDI_IN"はMIDIパイルダーのMIDI IN,OUTへの信号線ですがGreenPAKを中継 してレベル変換及びTHRUモードを制御しています。これは5V系の信号線です。

"MIDI_SW"はMIDI THRUモードを制御します(THRUモードはGND接続、通常はオープンです)。

"SDA,SCL,GP*"はMT32-PI用のRaspberryPiのGPIOコネクタに接続されています。

PilederXの頒布(BASEのショップページにリンク)

BASEショップにて有償頒布予定です。

履歴



[EOF]