寝ても覚めてもゲーム製作 - ウェブログ-ログ

ニコニコのブロマガで書いてたやつの保守。更新予定ほぼなし。

HSPでのOGG再生について【hspogg.dll】


ぐっもーにん☆

たぶん、今までにないぐらい役に立つのでは!

要するに、hspogg.dllなるものがhspに付属しているよって話です。
それの使い方を大雑把にチェックしていきます。

(2015/10/10追記分)
使用ライブラリ表記とサンプルの話はこっち(かなり重要)
http://ch.nicovideo.jp/milky_way/blomaga/ar889365
追記ここまで

上級者の方はもう戻ってもいいんじゃないですかね。
でもんすとれーしょんにあったのである

今は昔、こんなゲームを私は作りました。
マーケティングはしっかりしてゆく)


で、このときoggファイルの再生に苦労していたわけです。
ogg再生できるdllファイルとか探したりしてやっと見つけたものが
メモリ食いまくって続編も作れなくなったやつですね。

飽きたのもあるけど。

そして今もとあるゲームの体験版をリリースするために
asファイルとdllファイルを漁っていたのですが、

DEMOの中にoggファイルが…?どうやって再生しているんだろう…
→「hspogg.dll」が使われていた!
しかも綺麗にループしてやがる

ゆるせねぇです。(一年前の苦労を思いながら)

前置きはここまでにしておいて
使い方を見てゆきましょう!

簡単!
HSPで綺麗に曲をループさせよう!
~oggファイル編~

そんなわけでHSPのエディタでF1を押してもらって
ヘルプからogg_sndtest.hspというサンプルをみながら
最低限の機能が使える感じに。

■読み込み
#include "hspogg.as"
■初期化
dmmini

おまじないだと思ってとりあえず記述。
配布時はきちんとdllも同梱しようね。

■ファイルをロード
dmmload "ファイル名",p1 ,p2

この命令でoggファイルと一応wavファイルも読み込めます。

p1はサウンドIDといって読み込んだファイルを
識別する番号です。-1にしておけば自動で割り当ててくれます。
安心。

p2が再生モードです。
1にするとwavがループしますが、
今回はoggをループさせるので無関係。

■ファイルを再生
dmmplay p1 ,p2

さっき指定されたサウンドIDをp1に代入して
再生できます。

p2は初期スタート地点を指定できます。
oggの場合の単位はサンプル数です。

これで再生はできるね!

■ファイルのループ設定
dmmloop p1 ,p2

p1は例の如くサウンドID


p2でループ地点の設定が出来ます。
当然ながら再生前に行っておく必要があります。
そして単位はサンプル数です。

サンプル数だと細かい数値になるので
調整が意外と大変。
単位を覚えればいいんですけど。
ヘルプには
(44.1kHzの場合は、44100分の1秒)
って書いてありますので、自作曲でない場合は
お手持ちの素材のサンプリング数をお確かめください
としか。

詳しい説明はヘルプに載ってるし、こんなもんでいいかな。
あとはdmmstopで再生を停止できるよぐらいのもんです。

その他はじっさいに使い始めてからじゃないと
こうピンとこないかな。

■あとがき。
わあい、これで無駄に苦労していたoggが再生できるぞー!

…とんでもねえもん見つけてしまったせいで
年末は「マジカルな拳」のアップデート祭りに
なってしまうではないか。
ボスの挙動もコピペのまんまだし。

ああ、新作いつ完成するんだろ。

おわり。