プログラムを実行すると音をたてて赤い風船がどんどんふくらんでいきます。
画面いっぱいに膨らみ、真っ赤になります!
約 1 分でバンッ!😆(割れる音も作ってます)
小さい頃、MSX 実機でつくってみたかったプログラムなのですが、
丸い風船を塗りつぶした状態にできず、
SOUND も仕様がわからなくてつくれなかったんですよ。
大人になった今だからこその仕上がりとなっています。
Z80 を用いて SCREEN 3 で画面いっぱいにしてほぼ 1 分でした。
SCREEN 2 だともう少し時間を要してしまうので、
1 分で画面いっぱいにできるように SCREEN 3 としています。
IchigoJam BASIC 版、PanCake+IchigoJam BASIC 版もあります。
1 分タイマー風船 | イチゴジャム レシピ - IchigoJam BASIC 版
1 分タイマー風船 | イチゴジャム レシピ - PanCake+IchigoJam BASIC 版
MSXPen・WebMSX では MUTE(消音) 状態で起動しますので、
音を聞きたい場合は WebMSX 画面をクリックします。音量注意。
100 SCREEN 3
110 SOUND 6,3
120 SOUND 7,135
130 SOUND 8,5
140 FOR S=0 TO 160 STEP 2
150 CIRCLE(128,96),S,8
160 NEXT S
170 COLOR ,8,8
180 SCREEN 1
190 KEY OFF
200 SOUND 6,0
210 FOR I=15 TO 0 STEP -1
220 COLOR ,RND(1)*16,RND(1)*16
230 SOUND 8,I
240 SOUND 9,I
250 SOUND 10,I
260 NEXT I
270 COLOR 15,4,7
音階ドレミで使用する PLAY に比べると SOUND は難解ですね。
ここではノイズに限定して記載します。
トーンはドレミの音階を SOUND 0~5 で指定します。
Nyan Cat で使用しているので、こちらで触れています。
まず SOUND 7 でチャンネル 1~3 毎にトーン・ノイズの出力を決めます。
値 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2 進数 &B | 1 | 0 | ノイズ 0=ON 1=OFF | トーン 0=ON 1=OFF | ||||
チャンネル | 固定 | 固定 | 3 | 2 | 1 | 3 | 2 | 1 |
128・64 のところは MSX の場合 1・0 で固定です。
したがって指定する値は 128~191 となります。
それ以外の 6 ビットは 0=ON 1=OFF と記載している音にご注意下さい。
140 は 2 進数表記にすると、こうなります。
140 SOUND 7,&B10000111
ノイス部分は 000 なので 3 チャンネル共に ON、
トーン部分は 111 なので 3 チャンネル共に OFF、となり、
3 チャンネル共にノイズのみの出力にしてあります。
SOUND 8~SOUND 10 はチャンネル 1~3 の音量です。
これは PLAY と同じで 0 で消音、15 で最大となります。
(16 も設定でき、この場合は SOUND 11~13 のエンベローブ設定が有効です)
150 SOUND 8,5
風船をふくらましてる時の音はチャンネル 1 だけ V5。
ガスや電動空気入れを用いた感じの音にしてます。
230 FOR I=15 TO 0 STEP -1
250 SOUND 8,I
260 SOUND 9,I
270 SOUND 10,I
280 NEXT I
風船が割れた音は短時間で 3 チャンネル共に V15(最大)⇢V0(最小) としています。
これでパンッ!という音っぽくしてます。
ノイズ周波数を指定します。値の範囲は 0~63 です。
周波数の値ではよくわからないので、聞いて確認してしまった方が良いですね。
SOUND 7 でノイズに設定し、SOUND 8 で音を出した後、
SOUND 6 の値を 0~63 でいろいろ可変させて、音の変化を聞いてみて下さい。
SOUND 7,135
SOUND 8,15
SOUND 6,0 :'0-63
SOUND 8,0 で音が止まります。
とりあえず、これだけで SOUND のノイズは扱えるようになります。
SCREEN 2 を用いて TIME の値で大きさを調整しています。
110 M=3 の 3 を変えて割れるまでの分を設定できますが、
線画の都合で、M を 2 にしても 2 分を少しオーバーするので最低 3 分、
TIME は 65535 までなので 18 分が最長になります。
100 DEFINT A-Z
110 M=3
120 SCREEN 2
130 TIME=0
140 SOUND 6,3
150 SOUND 7,135
160 SOUND 8,5
170 FOR S=0 TO 160
180 CIRCLE(127,96),S,8
190 CIRCLE(128,96),S,8
200 IF 3600*M/160*S>TIME THEN 200
210 NEXT S
220 COLOR ,8,8
230 SCREEN 1
240 KEY OFF
250 SOUND 6,0
260 FOR I=15 TO 0 STEP -1
270 COLOR ,RND(1)*16,RND(1)*16
280 SOUND 8,I
290 SOUND 9,I
300 SOUND 10,I
310 NEXT I
320 COLOR 15,4,7