X68000ZでMIDI
そもそもMIDIってなにさ?
MIDIっていうと音楽っていうイメージしかないけど、そもそもMIDIってなんだろう。
あらためて調べてみよー。
MIDI(ミディ、Musical Instrument Digital Interface)は、電子楽器の演奏データを機器間で転送・共有するための共通規格である。ミュージカル・インストゥルメント・デジタル・インターフェイス。
MIDIとは 演奏情報を伝えるための規格。
たとえば MIDIキーボードの「ド(C4)」を押したら 90 3C 64 とかいうデータが送られるにゃ。9は音出しますよ。 0はチャンネル0だよ。3Cはドの音だよ、64はこの強さで! とか こんなかんじのが決まってるにゃね。
ずいぶんくわしいねー。
Windowsアプリ 合成音声とMIDIでうたをつくろう! イージーコーラス を作るときに猛勉強したにゃ。結局製品版には実装しなかったけど、MIDIファイルのデータを解析して再生させる勉強もしたにゃ。
さらっと宣伝するね….。
United States のユーザーさんから評価5。コメント。
Good:Great product it is a little buggy but…..
「素晴らしい製品です。少しバグがありますが…」
折角最高評価レビューしてくれてるんだからバグなおそうね。
このブログ落ち着いたら直します….。
話もどすにゃ。そういう情報をMIDIメッセージといって、その集まりで曲ができてるんにゃね。
X68000Z-UART-ラズパイ MIDIの再生
なるほど。ということはX68000ZとラズパイをUARTで繋いで、そのMIDIメッセージの集まりの曲のデータを再生するとUARTでMIDIメッセージが順次ラズパイに送られるのね。
そう。そして順次 送られてきたメッセージを
ラズパイ自体を音源に変身させたり、
ラズパイをハード音源との仲介役にして
MIDIを再生するにゃよ。
MIDI再生専用フロッピーを作成
MIDIを楽しむ専用フロッピーを作る
さて、準備していこー! まずはラズパイを音源にしてMIDIを楽しむ
mt32-pi用のフロッピーにゃ。 MIDIハード音源を楽しむには少し改変しないといけないからそれは最後にゃ。
おー!
MIDIを楽しむため専用フロッピーをつくるにゃよ。SDカードを整理にゃ! 前回作ったシステムディスクをバックアップしといたり、用途別にしとくにゃ。ねこっぴは以下のようにしたにゃ。これからいじる予定のファイル名はHUMAN302(midi).XDFって名前にしたにゃよ。
番長の、「手間が増えてももっさりしててもGUIでできるところはGUIでやる」のポリシーに乗っ取り、AUTOEXEC.bat と CONFIG.SYSの編集はSX-WINDOWでやるにゃ!
もっと簡単にwindowsのメモ帳と前回使ったDiskExplorerで出来るような気もするけどおっけーですよ!
・・・・
こうすれば簡単に編集できるのでは…..
採用!SX-WINDOWはHDDが実装されたらにしますにゃ。
※2023年6月25日現在 まだX68000ZはHDDが使えません!
必要なデータを揃えよう!
では必要なファイルを揃えるにゃよ!ダウンロードしたらWindowsで解凍してね。
- Z-MUSIC ver2 ZM208.LZH をダウンロード ※サウンドドライバ
- BdifSet BdifSet.Lzhをダウンロード ※差分更新 ZMSC_RS232C(UART仕様にする)
- TwentyOne.x tw136c14.lzhをダウンロード ※ロングファイルネーム
- HIOCS.X hiocs16.lzhをダウンロード ※画面表示を高速化
- MMDSP BdifSet.Lzhをダウンロード ※リアルタイムディスプレイ&ファイルセレクタ
- MZP rel.3o+2 ※Z-MUSICでいろいろなドライバのデータが演奏できる
MZP rel.3o+2 (c)1991-93 NOVAさんのデータ
付属ドキュメントに「このプログラムはフリーソフトウェアです。配布は自由です。」とあったので甘えさせていただき手持ちのデータより自サーバーにUPいたしました。
おっけー! 揃えて解凍しましたー!
MIDIデータを用意しよう!
フリーで公開してくださってる方のMIDIデータをもらってこよー。
TAM Music FactoryさんのここのMIDIデータいい曲いっぱいだったにゃ。
ファイルを仕分ける
MUSICシステム用のフォルダをつくるにゃよ。そのあと仕訳にゃ。
「MUS」って名前に変更したのね。
あと、フロッピーの容量がきびしいから「BASIC2」と「ETC」を右クリックからまるごと削除するにゃ。
では仕分けましょー。仕分リストから解凍したフォルダを追って、指定フォルダにいれます。
- BdifSetフォルダ → binフォルダ → bup.x を MUSフォルダに
- hiocs16フォルダ → HIOCS.Xを BINフォルダに
- MMDSP030フォルダ → MMDSP.r を MUSフォルダに
- MZP2BR3Oフォルダ → MZP03o2 フォルダ → 中身全部を MUSフォルダに
- tw136c14フォルダ → TW136C14フォルダ → TwentyOne.xを BINフォルダに
- ZM208フォルダ → ZMUSIC.X と ZMUSIC_RS232C.BFD を MUSフォルダに
※DiskExplorerで移動するとZMUSIC_RS232C.BFD などのロングファイルは通常の8文字にカットされるみたい。ZMUSIC_R.BFDになります。今回は問題なさげなのでそのまま続行です。
おっけー! 仕分かんりょー!
2枚目のSDカードにMIDIデータを入れる
フロッピーきつきつだから2枚目のSDカードにMIDIデータいれるにゃよ。
ネットでいただいたデータをいれましたー!
CONFIG.SYS と AUTOEXEC.BAT
さて、ここからは少しとっつきにくいお話。がんばろー。
MIDI専用起動ディスクつくるのに一部てきとうに追記するだけで済みそうだけど、少し調べてみようにゃ。
config.sysとは、とは、DOS(Disk Operating System)において主に環境設定を記述するためのファイルのことである。config.sysは、システムが起動されると最初に読み込まれる。
続いて自動実行 autoexec.bat などの設定ファイルが順次読み込まれていく。
あんまり深く考えてなかったけど config.sys → autoexec.bat の順なのね。
もうここはサクッと、
シャープ無償公開のシステムディスク Human68k version 3.02
HUMAN302.XDFの初期状態 がどうなってるか一気にしらべるにゃよ。
シャープ無償公開システムディスク CONFIG.SYS を確認変更
HUMAN302.XDF config.sys 初期状態と機能の説明
FILES = 30 ※同時にオープンできるファイル数は30 無設定時のでデフォルト値は15
BUFFERS = 20 1024 ※ディスクとメモリ間の一時バッファ。バッファ数/バッファ容量バイト:無設定20/1024
LASTDRIVE = Z: ※最終ドライブをドライブZに設定 無設定Z:
KEY = ¥KEY.SYS ※キー定義 読み込み
USKCG = ¥USKCG.SYS ※外字登録用データファイル読み込み
BELL = ¥BEEP.SYS ※ビープ音PCMファイルの読み込み
DEVICE = ¥SYS¥PRNDRV.SYS ※プリンタドライバの読み込み
DEVICE = ¥SYS¥RSDRV.SYS ※RS232Cドライバの読み込み
DEVICE = ¥SYS¥FLOAT2.X ※数値演算パッケージの読み込み
DEVICE = ¥SYS¥ASK68K.SYS /DB:¥X68K.DIC /E¥ASK¥ENV1.ASK ※日本語フロントプロセッサ
DEVICE = ¥SYS¥OPMDRV3.X #180 /P64 /OPM ※FM音源・ADPCM (機能してません)
DEVICE = ¥SYS¥FDDEVICE.X ※2HD以外のFDを読み書きするためのドライバ
DEVICE = ¥SYS¥IOCS.X ※グラフィック描画テキスト表示の高速化
DEVICE = ¥SYS¥HISTORY.X /D¥HIS¥ /SH2,8,4 ※ヒストリ機能を使用可能する
ENVSET = 512 ¥STARTUP.ENV ※環境エリアとして512バイト確保、環境ファイルSTARTUP.ENVを設定
EXCONFIG = ¥SYS¥CONFIGED.X ※CONFIG.SYSの選択や修正できる -KSHIFT とかのOPTで起動時選択
機能の説明があるとなんとなくわかるねー。
よしっ MIDI演奏に関係なさそうなの削っていくにゃよ!FILES、BUFFERS、LASTDRIVE もともとデフォ値だからカット!プリンタ、RSDRV、動いてないFM音源もカット、IOCSはもっといいのに変えるからカット!
ENVSETはCONFIG.SYSの「SHELL」起動前にPROIGRAMでプログラムを起動する場合やコマンドプロセッサとしてCOMMAND.X以外(たとえばBASIC.Xなど)を起動する場合に使用します。とのこと。今はいらないよね。カット。
EXCONFIG CONFIGの選択しないからカット!
IOCSのいいやつHIOCS.Xと、ロングファイルネームが使えるTwentyOne.Xを追加!
HUMAN302.XDF config.sys 修正後
KEY = \KEY.SYS
USKCG = \USKCG.SYS
BELL = \BEEP.SYS
DEVICE = \SYS\FLOAT2.X
DEVICE = \SYS\ASK68K.SYS /DB:\X68K.DIC /E\ASK\ENV1.ASK
DEVICE = \SYS\FDDEVICE.X
DEVICE = \SYS\HISTORY.X /D\HIS\ /SH2,8,4
DEVICE = \BIN\TwentyOne.X
DEVICE = \BIN\HIOCS.X
スッキリしたね~
前回のお話のように、windowsでメモ帳とDiskExplorerで編集してもいいし、UPしたので ここからDLして 下の写真の編集すっとばした④のもどすで上書きしちゃってもいいにゃよ!
資料:CONFIG.SYS ファイルの内容設定に使用できる全コマンド
BELL | ビープ音に使用するPCMファイルの指定 |
BREAK | 「CTRL」+「C」のチェック機能の設定 |
BUFFERS | ディスクバッファの数とバッファ容量の設定 |
COMMON | COMMON ファンクションで使用するメモリ容量の指定 |
DEVICE | デバイスドライバをシステムリストに登録 |
ENVSET | 環境エリアの確保と環境ファイルのセット |
FILES | ファンクションコールで同時にオープンできるファイルの数を指定 |
KEY | キー定義ファイルの指定 |
LASTDRIVE | 仮想ドライブを含めた最大のドライブ数を指定 |
PROCES | 並行処理のための制御情報の設定 |
PROGRAM | シェル起動の前に実行するプログラムの指定 |
SHARE | ファイルの共有と排他制御の指定 |
SHELL | 指定したファイルをシェルとして実行 |
TITLE | タイトルファイルの指定 |
USKCG | 外字登録用データファイルの指定 |
VERIFY | ベリファイ機能の設定 |
次はAUTOEXEC.BATにゃ!
シャープ無償公開システムディスク AUTOEXEC.BAT を確認変更
HUMAN302.XDF autoexec.bat 初期状態と機能の説明
ECHO OFF ※コマンド行表示の設定・メッセージの表示 (ON OFF <メッセージ>)
PATH A:\;A:\SYS;A:\BIN;A:\BASIC2;A:\ETC; ※設定しておくと設定内で探してくれる
SET FASTIO=DONE ※環境文字列の値の設定
IF %FASTIO% == DONE GOTO SKIP ※通常はSETの「DONE」IF分にてSKIPに。
FASTIO 384 -S32 -D -F -E ※I/O関連の高速化
FASTSEEK 128 ※デバイスの管理領域サイズの指定
FASTOPEN 100 ※ファイル名の管理環境設定
SET FASTIO=DONE ※環境文字列の値の設定
:SKIP ※IF分からの条件先
今度は自動起動ね。こっちは少し謎おおいね。
とりあえず先の2行。
ECHO 部分はこのままでいいとして、PATHを調べました。
外部コマンドを実行するときは、実行したいコマンドファイルがカレントドライブのカレントディレクトリになくてはなりません。そうでない場合は、実行したいコマンドファイルにドライブ名とファイル名を指定する必要があります。しかしこれでは、外部コマンドの所在位置をつねに覚えておかねばなりませんし、実行のたびにドライブやパス名をつけなければならないため入力もたいへんです。その解決策!とのことです。説明書より。
ということでPATHの一行は分解すると
PATH
「A:\;」
「A:\SYS;」
「A:\BIN;」
「A:\BASIC2;」
「A:\ETC;」
となるから、MUSフォルダをふやした分、「A:\MUS;」を追記すれば良いにゃね。
なんかその先…..。
うん、どうもSETした変数らしき部分を外から変えられるとのことなんだけど、どういうシーンでこのAUTOEXEC.BATのここが書き換えられるのかわからないにゃ。普通にいけば青字に行かないでSKIPに行くはず。
でもアクセスが速くなりそうなやつだからにゃー。
とりあえず表に出して残しとこにゃ。
はいな!
あとはZMUICの自動起動と、mmdspの自動起動を入れて、完成!
HUMAN302.XDF autoexec.bat 修正後
ECHO OFF
PATH A:\;A:\SYS;A:\BIN;A:\BASIC2;A:\ETC;A:\MUS;
FASTIO 384 -S32 -D -F -E
FASTSEEK 128
FASTOPEN 100
zmusic.X -T1024
MMDSP.r
あらま こっちもシンプル!!
ということでまたもやこれも、windowsでメモ帳とDiskExplorerで編集してもいいし、UPしたので ここからDLして 下の写真の編集すっとばした④のもどすで上書きしちゃってもいいにゃよ!
さてー、X68000Z側は最後にやることがあるにゃ! Z-MUSICでUART使えるようにX68000Zから1行コマンド実行します。今回つくったHUMAN302(midi).XDFをX68000Zに挿して起動にゃ!
Z-MUSICでUARTが使えるようにbup.xでパワーアップさせる。
コマンド1つだけ実行するにゃよ! つくったSDカードで起動にゃ。
順調に起動中。
MMDSPが立ち上がったら「ESC」で止めちゃうにゃ。この状態じゃまだUARTでの演奏できないにゃ。
MUSフォルダの中までいくにゃよ。 MUSフォルダの中で再度ファイルの一覧だしてね。
dir/w
cd MUS
dir/w
ここでパワーアップコマンドね!!
※DiskExplorerで移動するとZMUSIC_RS232C.BFD などのロングファイルは通常の8文字にカットされるみたい。ZMUSIC_R.BFDになってます。
BUP ZMUSIC_R.BFD
UARTを使えるようにしてくれる差分ファイル ZMUSIC_RS232C.BFD を、Bup.xで合体したかんじにゃ。これでフロッピー完成にゃ!!
ついにUART ラズパイMIDI音源再生用フロッピー完成!!
きみたちよくこの戦禍の中
ここまでがんばったっぺ!! はい、これ!!
- X68000Z UARTでなにができるの?
- X68000Zを動かしてみよう! X-Basic準備
- どのラズパイを選べばいいかな?
- ラズパイUART設定とケーブル接続
- ラズパイとのUART接続確認テスト
- MIDI再生専用FDを作成(mt32pi)
- MIDI再生専用FDを作成(ttymidi)
- mt32-piでラズパイをMIDI音源にする
- MIDIハード音源を試す
- DACとちびモニターを用意する
- X68uartRasModuleの製作 準備編
- X68uartRasModuleの製作 組立編
- アップデートとHDDの設定
- SX-Window HDDにインスト
- SX-Window MIDI演奏設定
- SX-Window MIDIハード音源設定
- プログラミング編 X-Basicになれてみる
- プログラミング編 Pythonに少し慣れてみる
- プログラミング編 UARTでX68kZからラズパイを操作!
- シェルスクリプトSW分岐とLチカ
- ちびモニタとLEDを制御する!
- ttymidiのUSBの関連付け自動
- Python実行形式にするPyInstaller
- Winkipedia/2chSC閲覧 X68k RasNet
- X68000Zの基本操作などのまとめ
- 番外編はTOPから!