今回は音の鳴らし方をやります。
HSPの場合は dmmなのですが、Dishだと mmになります。
HSP → dmmload、dmmplay、dmmstop、dmmvol
Dish → mmload、mmplay、mmstop、mmvol
後はvol(ボリューム)の値が HSPだと -10000~0、dishだと -1000~0くらいの違いで、後は一緒です。
mmloadでファイルを読み込み、mmplayで鳴らし、mmstopで止めて、mmvolで音量を設定します。
#include "hsp3dish.as" mmload "test.wav",1 ; 読み込む mmplay 1 ; 鳴らす mmstop 1 ; 止める mmvol 1,0 ; ボリューム
数字は音のファイル No.です。
使用するフォーマットは、BGMは.mp3、SE(効果音)は.wavです。
それで統一したほうが良いようです。
mp3(BGM)は単音だと思ったほうが良いでしょう。
wav(SE)は多重再生できます。
webGL版の場合は、音楽ファイルも画像と同じデータフォルダに入れます。
以上です。
え?何?短い?
という訳で、今回は自分の使ってるボリューム設定の方法を紹介します。
まず変数として、BGMのボリューム値(0~10)と、SEのボリューム値(0~10)を設定します。
変数名は適当に、mu_vo、se_voくらいで良いでしょう。
次に、各音楽ファイルのボリューム値を0~100で設定します。
これはなぜかと言うと、音のバランスを細かに取るため、調整用です。
この変数を vo(n、音楽ファイルNo.)とでもしておきます。
後はボリュームをオプション等で変化させた時に、mu_vo × vo(n)の掛け算の値を mmvolで設定してやるだけです。
掛け算なので、マスターボリューム(mu_vo、se_vo)が0の時はボリュームは0になります。
#include "hsp3dish.as" gosub *syoki : end #deffunc vo_set ; ボリュームセット repeat 2 ; BGMのボリュームをファイルごとにセット mmvol cnt,-1000+mu_vo*vo(cnt) loop repeat 2 ; SEのボリュームをファイルごとにセット mmvol cnt+20,-1000+se_vo*vo(cnt+20) loop return *syoki ; 初期設定 mu_vo=10 ; BGMのマスターボリューム(0~10) se_vo=8 ; SEのマスターボリューム(0~10) dim vo,100 ; 音楽のファイルNo.に対応した各ボリューム値 mmload "bgm1.mp3",0 : vo(0)=100 ; 読み込む mmload "bgm2.mp3",1 : vo(1)=95 ; vo=(0~100) mmload "se1.wav",20 : vo(20)=80 mmload "se2.wav",21 : vo(21)=90 vo_set ; 始めに一回設定しておく *main ; メイン mu_vo=7 ; BGMのボリュームを再設定 se_vo=3 ; SEのボリュームを再設定 vo_set ; ボリュームをセット
#deffuncというのは、あらかじめ命令文としてセットしておけるものです。
しかし基本的には、ラベル GOSUBと違いありません。
SEのファイルNo.が 20~なのは、その前に BGMファイルが20個以内ある、という想定です。
オプション画面ででも mu_voと se_voを 0~10で変化させて、その都度 vol_setで変化させれば良いです。
さあ、これでオプションでのボリューム設定はバッチリですね。
後はオマケでコーディックでのつまずき(音が鳴らない)苦闘編をやります。
タイトルのテーマ曲として、これを見つけました。
王国への凱旋 by 天休ひさし
いやあ、良い曲ですね、ぜひタイトル画面で使いたい。
置いてあるブラウザ上や、ウインドウズのメディアプレイヤーでは再生できます。
しかしHSPではうんともすんとも言わない。
ファイル名が違う訳でも無いし、どうしても理由が分からない。
なら一度.wavにしてもう一度.mp3にし直したらどうだろうと思って、試しに午後のこ~だでデコードしてみたら「不明なエラー」となってデコードできない。
うむ、今まで例が無かったのでよくは分からんが、これはもしかしてコーディックとやらが違うのではないかと。
コーディックというのは、そのファイルフォーマット(例えばmp3とかjpgとかmp4とか)を作成する時の変換プログラムの事で、一種類ではなくて複数あるらしくて、それが違うと同じファイルフォーマットでもうまく再生できなかったりするらしい。
ビデオファイル(wmvとかmp4とか)では、ものによって再生されたりされなかったりはよくある。
う~ん、じゃあここは定番のAudacityでもう一度mp3ファイルとして出力しなおしてみたらどうだろうか。
やってみたら lame_enc.dllを用意しろ、と言う事でmp3ファイルは書き出しできない、ぐぬぬ。
まあググれば lame_enc.dllの用意ぐらいは簡単にできると思うので、やったらいいと思うけど、自分はめんどくさいのでAudacityで一度wavファイルに書き出してから、午後のこ~だでmp3ファイルにし直す、という方法を使った。
何?どっちがめんどくさいか分からない?
とにかく一応、この方法で鳴らせるようにはなった。
ちなみにAudacityは音圧の調整とか、リバーブとか、フェードアウトとか、ちょっと加工するのには丁度良い。
まあ、今回はオマケのオマケで lame_enc.dllのセッティングもついでにやってみましょうか。
まずAudacityを立ち上げて、編集→設定
LAME MP3ライブラリを見つけたらダウンロードを押すと
ダウンロードページが開くので、ダウンロードを選択して
自分はzipファイルを選びました
とりあえずファイルをaudacityと同じファイルに移して、と
audacityで今度は lame_enc.dllの場所を指定します
ファイルを選んで
OKを押して、と
閉じて
それじゃあ書き出してみましょうか
mp3を選択して保存
無事HSPでも再生されるようになりました。
ちなみに lame_enc.dllを移動したフォルダの絵を見てもらうと分かると思いますが、libmp3lame-win-3.99.3と lame3.99.5と2つあります。
はじめに別ルートで lame3.99.5ををダンロードして、フォルダ内の lame_enc.dllを指定しましたが「このバージョンはAudacityとコンパーチブルではありません」と出てダメでした。
どうもバージョンの違いではなくて、この lame3.99.5のほうは、フォルダ内にあるlame.exeを実行する形式のようです。
あるいはファイルにwinとか書いてないので、ウインドウズ版では無いのかもしれません。
インストール(かどうかは分からんけど)とか色々めんどくさいので、その辺は割愛します。
以上です。