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

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



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