今回は音の鳴らし方をやります。
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とか書いてないので、ウインドウズ版では無いのかもしれません。
 インストール(かどうかは分からんけど)とか色々めんどくさいので、その辺は割愛します。
 
 
 以上です。
