N88-BASIC(86) PLAY命令

PLAY

機能
音楽演奏を行う
書式
PLAY [#モード番号,][文字列1][,文字列2][,文字列3][,文字列4][,文字列5][,文字列6]
文例
PLAY #0,"L4O5CDEFG","L4O3GAB>CD"

〈文字列1〜6〉で指定するMML(ミュージックマクロランゲージ)の指示に従って,音楽を演奏します.

〈文字列1〜3〉はチャンネル1〜3に対応するFM音源,〈文字列4〜6〉はチャンネル4〜6に対応するSSG音源で,合わせて同時に6音までの同時演奏が可能です.

#〈モード番号〉はチャンネル3のFM音源に対しどのようなモードで演奏するかを指定するものです.指定する値とモードの関係は次のとおりです.

〈文字列1〜6〉 にはそれぞれ, MMLのコマンドを文字列で指定します.MMLには次のようなコマンドがあります.

Cx, Dx, Ex, Fx, Gx, Ax, Bx

音程をアルファベットで指定します.音長の指定は,各音程のあとのx(音長数字)で行います.数字の意味はLxコマンド(後述)と同じで, 4は4分音符を表します.このコマンドで音長の指定を省略した場合は, Lxコマンドにより指定された音長をとります.

Mx

SSG 音源(チャンネル4〜6) のエンベロープ周期を設定します. xの値は1〜65535 の範囲になくてはいけません.初期値は"M255"です.

xに指定する値は,発生しようとするエンベロープ周期に対して,次の式により求められます.

x=667*T/256 (T:エンベロープ周期(ms), x:設定値)
Sx

SSG 音源(チャンネル4〜6) のエンベロープ形状を指定します. x の値は1〜15 です.xの値とエンベロープ形状の対応は次の図のとおりです.初期値は"s1"です.

x エンベロープ形状 x エンベロープ形状
0,1,2,3,9 Image: N88 Basic86 PLAY S0 11 Image: N88 Basic86 PLAY S11
4,5,6,7,15 Image: N88 Basic86 PLAY S4 12 Image: N88 Basic86 PLAY S12
8 Image: N88 Basic86 PLAY S8 13 Image: N88 Basic86 PLAY S13
10 Image: N88 Basic86 PLAY S10 14 Image: N88 Basic86 PLAY S14

SSG音源には固定音量出力モードとMxコマンド, Sxコマンドで指定される可変出力モードがありますが,各チャンネルを可変出力モードにするのはSxコマンドです.Mxコマンドは周期を設定するだけでモードは変えません.また,固定音量出力モードにするのは,後述するVxコマンドです.

Vx

各チャンネルに対して大まかに音量を設定します.

"V0"が最小で"V15"が最大音量です.SSG音源に対する初期値は"V7"です.FM音源については各音色ごとに最も適した音量が設定されるので初期値は存在しません.また,FM音源については音量の大小により音色も多少変化します. @xコマンドで音色番号を切り換えると, @Vxコマンド, Vxコマンドによる設定は無効になります.

Lx

このコマンドで音の長さを指定すると, Cx, Dx, Ex, Fx, Gx, Ax, Bxコマンドで音長を省略したときには,すべてこの長さになります.

x は1〜64 の範囲で,1は全音符, 8は8分音符といったように指定します.このコマンドによる設定を省略した場合の初期値は,"L4" (4分音符)です.

Qx

音長により定められる長さ(ステップタイム)と,その聞で実際に音を出している長さ(ゲートタイム)の比を設定します.xの値は1〜8 の範囲で,ゲートタイム/ステップタイムの比はx/8で求められます.初期値は"Q7"です.

Ox

オクターブ値を設定します.xの値は1〜8で,数値が大きいほどオクターブは高くなります.初期値は"O4"です.

<,>

現在のオクターブを1オクターブだけ上げ(>), 下げ(<)します.

Kx

xで指定された高さの音を発生します. x (キ一番号)と実際に発生される音程の対応は 次のとおりです.ただし, FM音源においては"O9C"は"O1C"と同じになります.

音程/オクターブ O1 O2 O3 O4 O5 O6 O7 O8 O9
C 0 12 24 36 48 60 72 84 96
C# 1 13 25 37 49 61 73 85  
D 2 14 26 38 50 62 74 86  
D# 3 15 27 39 51 63 75 87  
E 4 16 28 40 52 64 76 88  
F 5 17 29 41 53 65 77 89  
F# 6 18 30 42 54 66 78 90  
G 7 19 31 43 55 67 79 91  
G# 8 20 32 44 56 68 80 92  
A 9 21 33 45 57 69 81 93  
A# 10 22 34 46 58 70 82 94  
B 11 23 35 47 59 71 83 95  
Tx

演奏するテンポを指定します.どのチャンネルでテンポを指定しでもかまいません.ただし,全チャンネルを通してテンポはただ1つしか指定できないので,最後に指定したチャンネルのテンポが有効となります.xの範囲は32〜255までで, "T120"が初期値です. T120は"♪=120"に相当します.

Rx, Px

休符です.xの値は1〜64で,音長を指定します.1が全休符, 4が四分休符といったように指定します.

+(#), -

いずれも音程(Cx,Dx, Ex, Fx, Gx, Ax, Bx)のあとにつけて半音階を表します."+"または"#"で半音上げ,"-"で半音下げます.

. (ピリオド)

音程(Cx,Dx, Ex, Fx, Gx, Ax, Bx)に指定する音長数字のあとにつけることによって,符点音符を表します.休符(Rx,Px)のあとにつけて符点休符とすることもできます.

^x

前後の音長をつないで1つにします. x の値は1〜64 で,音長を指定します.たとえば,"C8^8"のように表現される音は"C4"と等しくなります.

{ … } x

連符を表します.xで指定された音長を{ }内の音符の個数で等分します.ただし,{ }内で音長を指定した場合は正しい連符となりません.また,連符の中に連符や間接指定を含めることもできません.

@x

xで示される音色番号の音に音色を切り換えます.

x の範囲は0〜81 です.このコマンドは, FM 音源チャンネルについてのみ有効です.音色番号と音色の対応は,初期状態では次のようになっています.音色番号の初期値は"@0"です.

内蔵基本音色
音色番号 音色名 説明 備考
0 DEFAULT (HARPSIC-11番と同じ)  
1 BRASS2 低域の金管楽器  
2 STRING2 高域の弦楽器  
3 EPIANO3 丸みを持ったエレクトリックピアノ  
4 EBASS1 シンセサイザベース  
5 EORGAN1 堅めのエレクトリックオルガン  
6 PORGAN1 低域のパイプオルガン  
7 FLUTE フルート O5が最適です
8 OBOE オーボエ  
9 CLARINET クラリネット  
10 VIBRAPHN ビブラフォン  
11 HARPSIC ハープシコード  
12 BELL ベル  
13 PIANO アコースティックピアノ  
14 MUSHI 虫の鳴き声  
15 DESCENT 下降するような効果音  
16 UFO UFOが飛んでいるような効果音  
17 GRANPRI レーシングカーが走って行くような効果音  
18 LASER1 SF的な効果音1  
19 LASER2 SF的な効果音2  
20 SINWAVE 正弦波  
21 BRASS1 高域の金管楽器  
22 BRASS2 低域の金管楽器  
23 TRUMPET トランペット O5が最適です
24 STRING1 低域の弦楽器  
25 STRING2 高域の弦楽器  
26 EPIANO1 エレクトリックピアノ  
27 EPIANO2 堅めのエレクトリックピアノ  
28 EPIANO3 丸みを持ったエレクトリックピアノ  
29 GUITAR エレキギター O5が最適です
30 EBASS1 シンセサイザベース  
31 EBASS2 ウッドベースに近い音 O3が最適です
32 EORGAN1 堅めのエレクトリックオルガン  
33 EORGAN2 やや丸いエレクトリックオルガン  
34 PORGAN1 低域のパイプオルガン  
35 PORGAN2 高域のパイプオルガン  
36 FLUTE フルート O5が最適です
37 PICCOLO ピッコロ  
38 OBOE オーボエ  
39 CLARINET クラリネット  
40 GROCKEN グロッケン  
41 VIBRAPHN ビブラフォン  
42 XYLOPHN シロフォン  
43 KOTO  
44 ZITAR チター  
45 CLAVINET クラビネット  
46 HARPSIC ハープシコード  
47 BELL ベル  
48 HARP ハープ O5が最適です
49 BELL/BRASS ベルと金管楽器のユニゾン  
50 HARMONICA ハーモニカ  
51 STEELDRUM スチールドラム  
52 TIMPANI ティンパニー O3が最適です
53 TRAIN 汽笛の音  
54 AMBULANCE 救急車の音 長めの音が適します
55 TWEET 小鳥の声 O6, Q4が最適です
56 RAIN DROP 雨だれの音 長めの音が適します
57 HORN ホルン  
58 SNARE DRUM スネアドラム  
59 COW BELL カウベル  
60 PERC1 バネのはじけるような音  
61 PERC2 水の入ったグラスをはじくような音 O5が最適です
62 PERC3 ウインドチャイムのような音 O6が最適です
63 MUSIC BOX オルゴールのような音  
64 CELLO チェロ  
65 LOW BRASS チューバのような低域の金管楽器  
66 WW ENSMBL 木管楽器のアンサンブル  
67 AC GUITAR アコースティックギター  
68 FLUTE/HARP フルートとハープのユニゾン  
69 FUNK PLUC 打弦楽器の音  
70 FUNK BASS ファンキーなベースの音  
71 SYN LEAD メロディーライン向けのリードに適した音  
72 METAL CLES 金属的な効果音1 O3が最適です
73 STAIN 金属的な効果音2 O3が最適です
74 CUBIN GLASS 氷がグラスの中を転がるような音 O5が最適です
75 HUMAN 人の声のような音  
76 WOOD BASS ウッドベース O3が最適です
77 CHIMES チャイム O5が最適です
78 SPACY 機械的な口笛の音 O5が最適です
79 OBOE/BCLAR オーボエとバスクラリネットのユニゾン  
80 OLD STRING 古いレコードのバイオリンのような音  
81 STEEL'S CRY 金属的な泣き声のような音  

備考の欄に特に記入のないものは,どのような音域でもよいか,またはデフォルトが最も適していることを示します.

Yr, d

シンセサイザLSIのレジスタに直接値を設定します. VOICE REGと同じ機能を行うものです.

r はレジスタ番号で0〜178, d はレジスタ内容で0〜255の範囲です.定義されていないレジスタに対するこのコマンドの動作の保証はありません.また,サウンド制御命令がハードウェアの制御のために使用しているレジスタについて書き込みを行った場合も,動作の保証はありませんので注意してください.

@Vx

FM音源に対する音量を細かく設定します.

x は0〜127 の範囲で, 0が最小音量, 127で最大音量となります.

@Wx

xで指定された長さだけ何もしないで待ちます.x は1〜64 の範囲で, 1は全音符, 8は8分音符といったように指定します.

@WxコマンドはYr,dコマンドなどで直接音を発生させる場合に有効です(Rx,PXコマンドでは, -s.発音を停止させてしまいますので音がとぎれてしまいます).普通の音符(Cx,Dx, Ex, Fx, Gx, Ax, Bx)のあとに@Wxがきた場合は, Rx, PXコマンドと同等です.

_x

x移調を指示します. xは音程で, A, B, C…のように指定します.xによって示される音程を, Cの音とみなして以降のMMLを移調します.各チャンネルごとに独立して指定できます.ただし, Kxコマンドによる指定は移調しません.

移調は次の規則により行われます.

指定調 Gb G Ab A Bb B C C# D D# E F
ベース値 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5

たとえば, PLAY "_DDEFG"と指定した場合,実際に発生される音は, PLAY "EF#GA"と等しくなります.

!

LFO効果(ビブラート, トレモロ)を加えます.

音色番号指定直後や, VOICE LFO実行直後は, LFO効果が自動的に加えられています.ただし,音色データの値によって, LFO効果がかからない場合があります.

*

!コマンドの逆で, LFO効果を切ります.

Zp,v

指定チャンネルの音色パラメータの内容を設定します.

pはパラメータ番号で, 0〜49 の範囲です.また, vはパラメータの内容で0〜16383 までの値です.Pのパラメータ番号は, VOICEやVOICE COPYにおける音色用配列の添字に,次のように対応します.

p=(第1添字)+(第2添字)*5

たとえば,音色用配列(3,1) に対応するパラメータ番号は,次のようになります.

3+1*5=8

vの値については,各音色パラメータの有効範囲外の値を設定しようとした場合,動作は保証されません.また,負の値は8ビットの符号付数値に直して指定してください.たとえば, -5を指定したいときは,次のように256を加えた値を指定します.

256+(-5)=251
MF, MB

PLAYの演奏形態を指定します.

"MF"を指定すると, PLAYによる演奏が終了してから次の命令の実行へ移ります.これを"フォアグラウンド指定"といいます.初期状態は"MF"になっています.

"MB"を指定すると, PLAYの音楽情報をサウンドバッファに格納してすぐに次の命令に移ります.これを"バックグラウンド指定"といいます."MF","MB"ともに各チャンネルごとに指定できますが, "MF"で指定されたチャンネルと"MB"で指定されたチャンネルが同時にあった場合, "MF"指定のチャンネルが終了するまで次の命令へは移れません."MB"が指定された場合であっても,次の条件が起こると演奏は中断されます.

MMLの間接指定

MMLの一部を文字変数や数値変数で置き換えることも可能です.このことを間接指定といいます.間接指定には,次のものがあります.

注意:

PLAYを使用する際には,次のことに注意してください.

  1. PLAYを実行する前には,必ずPLAY ALLOCを実行して,サウンドバッファを各チャンネルのために用意しておかなければなりません.
  2. エラー発生時には音色は自動的に0番に設定されます.
  3. PLAYにより演奏される音長は他の処理などの影響により若干長くなることがあります.
  4. MBによる演奏時, BASICプログラムの実行は若干遅くなります.
  5. MFによる演奏時に連続してPLAYを実行させた場合,命令解析の時間のためにMMLの最後の音長が長めになったり,演奏が息つぎをしているように聞こえることがあります.
  6. 音量が大きすぎると音がひずむおそれがあります.また, 2チャンネル以上を使って演奏を行う場合, 1チャンネルで演奏するときに比べ音量が増し,音がひずむ場合があります.このようなときは, @Vxコマンドで音量を調節してください.
  7. MMLの中で,音を各種調節するコマンドをひんぱんに使用する(たとえば, 1音ごとに音量を設定する)とリズムが少し遅くなります.

参照:VOICE, VOICE COPY, VOICE REG, PLAY ALLOCサンプルプログラム41

出典:N88-日本語BASIC(86)(Ver6.2) リファレンスマニュアル、日本電気株式会社、1991年発行


inserted by FC2 system