HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0302
あげだまoggファイルのループ再生について2解決


あげだま

リンク

2021/3/2(Tue) 02:22:13|NO.92378

hspogg.dllみたくスクリプト上でループ位置を設定するのではなく、oggファイルにあらかじめ設定してあるループ情報をそのまま適用して再生するようなプラグインとかってありますか?



この記事に返信する


こいる

リンク

2021/3/2(Tue) 10:46:27|NO.92381

LOOPSTART・LOOPLENGTHタグを取得し、実際にループ再生させるサンプルを作ってみたのでどうぞ。

ループ再生にovplayを使っているので、下記ページからダウンロードし、展開して中にあるovplay.asとovplay.dllをサンプルと一緒に置いて実行してください。
https://web.archive.org/web/20181105130509/http://www.geocities.jp/anachronism128/plugin.html

// oggファイルからLOOPSTART・LOOPLENGTHタグを取得するモジュール #module get_ogg_loop_tag #deffunc GetOggLoopTag str ogg_file_path, var loop_start_var, var loop_length_var // oggファイルを読み込む exist ogg_file_path if strsize==-1 : return sdim file, strsize bload ogg_file_path, file, strsize buf_tag = "" buf_num = "" loop_start = "" loop_length = "" // とりあえず先頭32KBまでを探す find_length = strsize if find_length > 32000 : find_length = 32000 repeat find_length if peek(file,cnt) == 76 { // まずタグの先頭文字である、Lを探す // Lがあった場合、それがタグかを判定 memcpy buf_tag, file, 10, , cnt if buf_tag == "LOOPSTART=" { if loop_start == "" { // タグの後にある数値を抽出 index = cnt+10 repeat buf_num = peek(file,index) if buf_num >= 48 && buf_num <= 57 { // 0〜9の文字コード loop_start += str(buf_num - 48) }else{ break } index ++ loop if loop_start!="" && loop_length!="" : break // 両方のタグを取得できれば中断 } } memcpy buf_tag, file, 11, , cnt if buf_tag == "LOOPLENGTH=" { if loop_length == "" { index = cnt+11 repeat buf_num = peek(file,index) if buf_num >= 48 && buf_num <= 57 { loop_length += str(buf_num - 48) }else{ break } index ++ loop if loop_start!="" && loop_length!="" : break } } } loop loop_start_var = int(loop_start) loop_length_var = int(loop_length) return #global // oggファイル選択 dialog "ogg", 16, "oggファイル" if stat==0 : end filepath = refstr // ループタグ取得 dim loop_start dim loop_length GetOggLoopTag filepath, loop_start, loop_length mes "LOOPSTART :"+loop_start mes "LOOPLENGTH:"+loop_length // 再生 #include "ovplay.as" ov_init 44100, 2, 16, 1 ov_load filepath, 0, GF_BGM ov_bloop 0, loop_start, loop_start, loop_start+loop_length, -1



あげだま

リンク

2021/3/2(Tue) 13:56:14|NO.92383

わざわざサンプルソースまで書いていただきありがとうございます。
解決しました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.92378への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2021(c) All rights reserved.