-------------------------------------------------------------------------------
【  名  称  】 Pxtone Collage Decoder
【ファイル名】 kbpxtone.kpi
【バージョン】 0.05
【対応拡張子】 .pttune/.ptcop
【 Platform 】 x86(32bit) / x64(64bit)
【 公 開 日 】 2022/10/03
-------------------------------------------------------------------------------

【概要】

開発室Pixel様制作のピストンコラージュの音楽データを再生するためのデコーダプラグ
インです。対応拡張子は .pttune/.ptcop です。

ピストンコラージュについては

https://pxtone.org/

を参照して下さい。

kbpxtone.kpi には pxtone-source-code 220910a が組み込まれています。

ピストンコラージュのデータは

ザ・ピストンコラージュ・コレクティブ: http://pxtone.haru.gs/
PXTONE WEB: https://www.ptweb.me/

などにあります。

【ループ再生】

kbpxtone.kpi はループにも対応していますが、ループ曲かどうかを確実に判別する方
法が分からない為、設定で調整出来るようになっています。

再生時に本体の「ドキュメント」タブに

・MEAS_NUM
・MEAS_END
・MEAS_REPEAT
・MEAS_LAST
・MEAS_LOOP

の値が表示されます。ループ再生時は MEAS_END まで再生後、MEAS_REPEAT の位置に
戻ります。それの繰り返しです。

イントロ時間 = MEAS_REPEAT
ループ時間   = MEAS_LOOP(=MEAS_END - MEAS_REPEAT)

となります。

「イントロがない曲をループと見なす」

は MEAS_REPEAT が 0 のときにループと見なすかどうかを意味します。
先頭に戻るわけですから、普通に考えればループと見なすべきですが、実際にはループ
であることの方が少ないようです。

「イントロ時間/ループ時間」

MEAS_REPEAT / MEAS_LOOP の値がいくつ以上ならループと見なすかの設定です。
値を大きくするほど、イントロ時間に対してループ時間が短くてもループと見なすよう
になります。

この設定に関わらず、ループ時間(MEAS_LOOP)の値が 1 以下のときはループではないと
見なします。MEAS_LOOP の値が 0 のときにループでないと見なす方が自然な気がするの
ですが、そのようなデータは存在しないようです。

これらの値はループ判別を調整するときの参考にして下さい。

MEAS_LAST は参考値として表示しています。その値の意味するところは不明です。
MEAS_END は MEAS_LAST が 0 の場合は MEAS_NUM、MEAS_LAST が 0 でない場合は MEAS_
LAST の値となります。ループの判別をする決め手にはならないようです。

-------------------------------------------------------------------------------

【更新履歴】

Version 0.05(2022/10/03)

・ベースのソースコードを pxtone-source-code 220910a に更新
　・IO 関係のインターフェースが変わっただけで音質等の違いはない

/*---------------------------------------------------------------------------*/

Version 0.04(2021/06/25)

・libogg を 1.3.5(2021/06/04) に更新

/*---------------------------------------------------------------------------*/

Version 0.03(2021/04/18)

・libvorbis を 1.3.7(2020/07/04) に更新

/*---------------------------------------------------------------------------*/

Version 0.02(2019/04/15)

・設定項目を追加
　・音量
　　・音割れが気になる場合や、連続再生時に他の形式と比べて音量が大きいと感じる
　　　場合に小さくする
　・ループ回数
　・フェード時間(秒)
　・ループ判別
　　・判別条件に従う
　　・ループと見なさない
　　・ループと見なす
　・イントロがない曲をループと見なす
　　・ループと見なすと連続再生時に「ループ回数」と「フェード時間」に応じた時間
　　　だけ再生される
　　・実際はループ曲なのにループと見なさなくても単曲リピート時には問題なくルー
　　　プ再生される
　　・実際はループ曲なのにループと見なさないと連続再生時にフェードアウトされず
　　　にぷつっと途切れるように演奏終了する
　　・イントロがなくてループである曲は少ない為、デフォルトは false
　・イントロ時間/ループ時間
　　・イントロに対してループが短い曲の多くはループではないが、どの程度長ければ
　　　ループなのか確実に判別することは出来ないのでこの設定で調整する
・64bit float で出力するようにした
　・クリッピングを最終出力の直前まで先送りする
　・音量を 1.0 以外にした時に失われる情報を最小限に抑える
・音量の初期値を 0.8 に変更(v0.01 では 1.0)
・イントロがあるループ曲の2ループ目以降の位置へのシークが誤っていたのを修正
・拍子、テンポ、クロック、小節数等を通知するようにした

/*---------------------------------------------------------------------------*/

Version 0.01(2019/04/10)

・初版

-------------------------------------------------------------------------------
Kobarin(hidkob@pb.highway.ne.jp)
https://kobarin.sakura.ne.jp/
