fuの戯言日記
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
bgmfadeout
今回はONSに実装されていない命令である
bgmfadeoutを簡易的に作成できないか試してみました。

フェードと言うのは段々と音が小さくなったり、
大きくなったりする処理です。
ONSの関数でbgmstopはbgmfadeout 0と同義ですね

それでは本題のスクリプトです

※20090803にスクリプトを変更しました


;mode800,value500
*define
defsub bgmfade
numalias bgmsp,500

game

*bgmfade
getparam %2
resettimer
for %0 = 0 to 9999999
gettimer %1
if %1 >= %2 break
mov %3,%bgmsp-%bgmsp*%1/%2
bgmvol %3
wait 10
next
bgmstop
bgmvol %bgmsp
return


*start
mov %bgmsp,100
bgm ""
あああああああああああ\
bgmfade 1500 ;ここで音楽が1500msで止まります
end

試してみると効果は絶大で段々と音量が少なくなり
そして最後には消えました。
問題としては非同期ではない為、処理が終わらないと
次の行動に移れない事ぐらいですね
なお、今回のスクリプトでコンフィングも有効になりました
しかもwaitずれがありません

神様に感謝~~
次回はbgmfadeinです。
お楽しみに~~~~~~~
コメント
コメント
No title
bgmfadeoutはほしい命令後のひとつですよね。
waitを入れるのがみそですね。

>コンフィングの設定が反映されません!!
もしかしたら

*bgmfade
getparam %2,%4
mov %3,%2/100
for %1=100 to 0 step -1
bgmvol %1
wait %3
next
bgmstop
bgmvol %4
return

として%4に%bgmspの値を代入してやればいけるかも。

非同期は、今思いつかないなぁ
でも、こうやって機能を自分で構成してうまくいったときは気分が上昇しますね。
2009/08/03(月) 01:19:21 | URL | 今宵の空 #- [ 編集 ]
No title
本当に欲しいですね。
これがあれば対策を立てずに済みます
それとwaitがみそなの正解です
これがないとbgmstopになりますね

コンフィングの設定が活かされないと言ったのは
そこの部分ではなく
(むしろそこの部分はコンフィングの設定が反映されます)

forの繰り返しが100から始まっています
これでは音量が99以下の時に不具合がでます
また waitの部分もコンフィングを活かす場合は
少し変更する必要がありますね。
うむむ難儀ですorz
2009/08/03(月) 01:36:30 | URL | fu #- [ 編集 ]
コメントの投稿
URL:
本文:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
トラックバック
トラックバック URL
http://futawagoto.blog92.fc2.com/tb.php/138-6b3bfdae
この記事にトラックバックする(FC2ブログユーザー)
トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。