概要
8ビット時代の古いパソコン PC-8801 の CMD PLAY
文を、現代の Windows パソコンのコマンドラインで再現するプログラムです。懐かしのCMD PLAY
文の音をそれなりに再現できます。
出力音声例
cmd_play.exe -reset "CDEFEDC"
cmd_play.exe -reset "@23L8CDE4.DC8R8CDEDCD2" "@30L4CEECCECD"
cmd_play.exe -reset #5 "@3L16FDEFDEFDEFDEFDEF" "@7L4DDD" "@34L4DDD" "@58L16CCCCCDDDDD" "@24O6L2EL16ECBAG"

cmd_play.exe -reset "T140O4@44 EEE EDC C<BA A>CE AAA AGF FED DEF EFE A-FE EDC C<BA BBB B>C<B A&A&A RRR" -DA$="{A>CE<}" -DB$="[A$][A$][A$]" -DC$="{DFA}" -DD$="[C$][C$][C$]" -DE$="{CDA-}" -DF$="[E$][E$][E$]" -DG$="{CFA}" -DH$="[G$][G$][G$]" "T140O3@12[B$][B$][B$][B$][D$][D$][D$][D$][F$][F$][B$][H$][F$][F$][B$]{CDE}{ADE}A" -DX$="RCC" -DY$="RCC" "T140O5@58[X$][X$][X$][X$][Y$][Y$][Y$][Y$][X$][X$][X$][X$][X$][X$][X$]CCL32CCDDEFGAA4"
使い方
基本的にコマンドプロンプトの黒い画面でコマンドを入力して使います。
使い方: cmd_play [オプション] [#n] [文字列1] [文字列2] [文字列3] [文字列4] [文字列5] [文字列6]
オプション:
-D変数名=値 変数に代入。
-save-wav 出力.wav WAVファイルとして保存(MIDI音源を除く)。
-save-mid 出力.mid MIDファイルとして保存(MIDI音源のみ)。
-reset 音楽を止めて設定をリセット。
-stopm 音色を変えない以外は -reset と同じ。
-stereo 音をステレオにする(デフォルト)。
-mono 音をモノラルにする。
-voice CH FILE.voi ファイルからチャンネルCHに音色を読み込む(FM音源)。
-voice CH "CSV" 配列からチャンネルCHに音色を読み込む(FM音源)。
-voice-copy TONE FILE.voi 音色をファイルにコピーする(FM音源)。
-bgm 0 演奏が終わるまで待つ。
-bgm 1 演奏が終わるまで待たない(デフォルト)。
-help このメッセージを表示する。
-version バージョン情報を表示する。
数値変数は、「L=数値変数名;」のように等号とセミコロンではさめば指定できます。
文字列変数は「[A$]」のように [ ] で囲えば展開できます。
ダウンロード
cmd_play-2.5-x86.zip
– Windows用バイナリ(x86) – 778 KB (797,286 バイト)
安心安全のベクターからダウンロードできます。
CMD PLAY
文 (8801のみ) (CMD拡張)
- 【機能】 音楽を演奏します。
- 【語源】 Command play
- 【書式】
CMD PLAY [#
音源モード,] [
文字列1][,
文字列2][,
文字列3][,
文字列4][,
文字列5][,
文字列6]
- 【文例】
CMD PLAY "CDE"
⇒ ドレミを演奏 - 【説明】 6和音まで演奏できます。文字列1、文字列2、文字列3はチャンネル1、2、3に、文字列4、文字列5、文字列6はチャンネル4、5、6に対応します。
音源モードは0
~5
の値で、次のような意味があります。
#0
… 外付けのSSG音源を使います。チャンネル1~6がSSG音源を使用します。#1
… 外付けのMIDI音源を使います。チャンネル1~6がMIDI音源を使用します。#2
… チャンネル1~3がFM音源を、チャンネル4~6がSSG音源を使用します。#3
… OPNを効果音モードに切り替えます。CMD PLAY
のY
文によって音を出します。#4
… OPNをCSM(サイン波)モードに切り替えます。CMD PLAY
のY
文によって音を出します。#5
… FM音源を使います。チャンネル1~6がFM音源を使用します。
音源モードを省略した場合は、#2
が選択されます。#5
は、サウンドボード2でなければ選択できません。通常、音源モードは、#0
、#1
、#2
、または#5
でお使いください。リズム音源はまだ未対応です。
各チャンネルの文字列は、MML (Music Macro Language)といい、次のような意味を持ちます。
文字列 | 意味 | 初期値 |
---|---|---|
Mx (SSGのみ) | エンベロープ周期を設定します(1≦x ≦65535)。x は省略可。 | M255 |
Sx (SSGのみ) | エンベロープ形状を設定します(0≦x ≦15)。x は省略可。 | S1 |
Vx | 音量を設定します(0≦x ≦15)。x は省略可。 | V8 |
Lx | 音符や休符の既定値の長さを設定します(1≦x ≦64)。x は省略可。 | L4 |
Qx | 音の長さの割合を設定します(1≦x ≦8)。x は省略可。 | Q8 |
Ox | オクターブを設定します(1≦x ≦8)。x は省略可。 | O4 |
> | オクターブを1つ上げます。 | |
< | オクターブを1つ下げます。 | |
Nx | x で指定された高さの音を発生します(0≦x ≦96)。x は省略不可。 | |
Tx | テンポを設定します(32≦x ≦255)。x は省略可。 | T120 |
Rx | 休符を演奏します(1≦x ≦64)。x は休符の長さです。x は省略可。 | R4 |
C ~B[+/-][x][.] | 音符を演奏します(1≦x ≦64)。x は音符の長さです。x は省略可。音符CDEFGAB は「ドレミファソラシ」に対応します。 | |
+ (# ) | 直前の音符を半音上げます。 | |
- | 直前の音符を半音下げます。 | |
. | 直前の音符や休符に符点をつけます。長さが1.5倍になります。 | |
& | 前後の音をつなげます。 | |
{ ... }x | 指定された長さのx 分音符を{ } の中の音符の個数で等分した連符を演奏します。x は省略可。 | |
@x (FM/MIDIのみ) | 音色番号x で指定された音色に切り替えます。x は省略不可。 | @0 |
Yr,d (OPNのみ) | OPNのレジスタr の内容をd にします(0≦r ≦178 かつ 0≦d ≦255)。 | |
Zd (MIDIのみ) | MIDIに1バイトのデータd を送ります(0≦d ≦255)。 | |
@M (サウンドボード2、FM/MIDIのみ) | 出力を左右両側に設定します。 | |
@L (サウンドボード2、FM/MIDIのみ) | 出力を左側に設定します。 | |
@R (サウンドボード2、FM/MIDIのみ) | 出力を右側に設定します。 | |
@Vx (FM/MIDIのみ) | 音量を細かく調整します(0≦x ≦127)。x は省略不可。 | @V106 |
@Wx | x で指定された長さだけ状態を維持します(1≦x ≦64)。x は省略可でL の値に。 | @W4 |
- 音色番号については、FM音源の音色一覧 と MIDI音源の音色一覧 をご覧ください。
- 実機のMIDIでは
@x
は指定できません。代わりにZd
を複数回使ってプログラムチェンジしてください。 - 実機のMIDIでは
@M
、@L
、@R
は指定できません。代わりにZd
を複数回使ってパンを設定してください。 - MIDIの詳細については、WikipediaのMIDIのページ や MIDI のリファレンスマニュアルを参照してください。
- いくつかの機種では
@V
設定後はV
の設定よりも@V
が優先されます。 CMD PLAY
文はCMD拡張命令であり、8801のみで使用できます。CMD PLAY
を使用する前にNEW CMD
を実行する必要があります(無制限モードを除く)。255文字を越える長さの文字列を指定すると、String too long
エラーが発生します(無制限モードを除く)。
対応環境
- Windows XP以降。
その他の注意
- BASICの
CMD PLAY
文はカンマ区切りですが、cmd_play
はコマンドラインの都合のため、空白区切りです。 - 現代的なデジタル音楽制作を楽しみたいのであれば、DTM のフリーソフトでも探してみてください。とは言っても、DTMでは音符入力が面倒臭いし、当時の遺産が…(以下略)
変更履歴
- リリースノートをご覧ください。
使用許諾
- 本ソフトウェアの使用においては、
LICENSE.txt
に記載されている「fmgon ライセンス」の使用条件に従ってください。 - 本ソフトウェアのソースコードは
https://github.com/katahiromz/cmd_play
からダウンロードできます。 - 本ソフトウェアの一部は、
cisc
さん (cisc@retropc.net
) が著作権を所有しています。
連絡先
開発に関するお問い合わせは GitHubのkatahiromz/cmd_play
で受け付けています。協力者歓迎!