忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。

プチコン4でWAVファイルを読み込んで効果音として使用しようと思ったのですが上手く鳴らせるようになるのに苦労したので忘備録。

まず大前提としてWAVファイルをプチコン4に転送するために麗の小屋さんのPetit4Sendを使用します。
WAVファイルを鳴らす方法として思いつくのがPCMSTREAM命令ですが、PCMSTREAM命令だと音を重ねる事が出来ない(私が鳴らす方法を知らないだけかもしれません)ので効果音を鳴らすのには向いていません。
なのでWAVSETA命令でWAVファイルを波形登録して鳴らすようにしてみました。

一応PCMSTREAM命令でのWAVファイルの鳴らし方も書いておきます。
01 OTO[]
02 OTO=LOADV("DAT:KOUKAON.WAV")
03 PCMSTREAM OTO,48000
04 PCMVOL 10000
05 WHILE 1
06  VSYNC 1
07 WEND
こんな感じで書けば任意のwavファイルを鳴らすことが出来ます。音は勝手にループしますので止めたい場合はPCMSTOP命令で止めて再開する場合はPCMCONT命令で、PCMPOSで再生位置を設定出来ます。

WAVSETA命令で鳴らす場合はこんな感じ。
01 OTO[]
02 OTO=LOADV("DAT:KOUKAON.WAV")
03 WAVSETA 244,127,0,0,127,OTO,69,0,99235,48000
04 BGMSET 128,"@244O4A2"
05 BGMPLAY 128
WAVSETA命令の内容は下記のようになっています。
***********************************************************
WAVSETA 楽器番号,アタック,ディケイ,サスティン,リリース,配列,基準音程,ループ先頭,ループ終端,サンプル周波数[,オフセット][,BEEPループ]
***********************************************************
配列の要素数はPRINT DIM (OTO,0)で調べる事が出来るので例えばDIM (OTO,0)が99236ならば1引いた99235を設定すればOKです。基準音程は69で「"O4A":オクターブ4のラ」を設定した事になりサンプル周波数を48000にした時にWAVファイルと同じ音程で鳴らすことが出来るようです。
WAVファイルの音長によって"@244O4A2"のA2の2の部分を1にしたり4にしたりして(音の長さを設定する)効果音がループしない良い感じのところに設定します。
実際に効果音を鳴らす場合は効果音毎にトラックを変更しないと音が重ならないのでショット音はBGMPLAY 0,128で爆破音はBGMPLAY 1,129とかにすれば上手く行くと思います。
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カウンター
Twitter
カレンダー
03 2020/04 05
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
最新コメント
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
[11/24 kt.]
[11/24 NONAME]
プロフィール
HN:
kt.
HP:
性別:
男性
自己紹介:
STG大好きな45歳。
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]