簡易プレイヤ

簡易プレイヤにwindows版の零の軌跡のogg対応版、steam版の閃の軌跡 IとIIを対応させました。
零の軌跡はtextフォルダにt_bgm._dtがあることが前提。(ループ情報取得)
閃の軌跡はループ情報がwavファイル内にあるため、別途ファイルは不要。
3つのソフトともファイル名で判定しているため、ファイル名は変更していない状態でプレイリストに載せてください。

ダウンロード(Ver 0.8e 32bit SSE2版 UNICODE版 VS2015ビルド)
2019.11.27
ダウンロード(Ver 0.8e 32bit AVX版 UNICODE版 VS2015ビルド)
2019.11.27

空の軌跡 evolutionのwindows版でないかなぁ。BGMをループで対応させたい。

追記 2019.11.14 、閃の軌跡 I or IIのbgm(wav)に対応。プレイリストにドロップしてください。
閃の軌跡はwavファイルにループ情報があるため、別途ファイルを参照していません。

追記 2019.11.16 閃の軌跡 I or II・零の軌跡のタイトル入れを行いました。(すでにプレイリストに入れている方は削除してもう一度載せてみてください)
零の軌跡はサントラとの聞き比べたときサントラに乗ってない曲がいくつかありましたので、「不明」「効果音」等になっている曲名がいくつかあります。
分かる方いらっしゃれば、曲名とファイル名を教えてもらえれば対応します。

追記 2019.11.19 細々とした修正を入れました。fix版です。(零の軌跡のタイトルがプレイリストの方に反映されてませんでした)

追記 2019.11.27 細々とした修正を入れました。fix2版です。
閃の軌跡 IIのbgmがループ時途切れる問題。

ファルコム bgm プレイヤ (簡易mp3/m4a/flac/DirectShow(avi,mp4,mkvなど)/kpi含む)

昨日の深夜最新版をアップしました。
シークで落ちる問題を根本的に解決しました。
7時間くらいかかったかなぁ。

《ファルコムメディアプレイヤ》
Ogg/Wav/Mp3/m4a/Avi/mp4/kpi
簡易プレイヤ

(2019.07.24)

追記 2019.07.24
こそっとUPDATE
Ys Memories of Celcetaのループに対応。
ただし、bgmtbl.tbbが解析できなかったので、1曲1曲調べながら。
ループテーブルもしくはtbbの解析法が分かりましたら教えてください。
手動でツールを作ってループポイント探し出して埋め込んでますので正解のループポイントではありませんので。

 

いろいろなツール使って、解除したものがこちら、

これを見やすいよう10進数の形式に直したのがこちら。

ファイル名、ループ開始、ループ終了(ループ終了からループ開始を引いたもの)、ID、ループフラグ

ここで注目は、まずyc_f101です。
yc_f101: 618926; 6788404( 6169478); 10, 1;
この曲のoggは2分25秒。
つまり、サンプル数が6394864となります。
なのに6788404がループエンドを指してます。
明らかに超えているんですねぇ。
これがそのまま使えればいいんでしょうけど、これを使うのはまだダメのようです。

追記2 2019.8.2

間違いがあったー


filename      サンプル(Loop差分) Loop開始(  -50000) Loop終了[HEX   ](終了-開始(差分   :手計算値));ID    ,Loop flg;
---------------------------------------------------------------------------------------------------------------------;
yc_title:size: 4986149(  392950);   19200(  -30800); 5379099[52141b](  5359899( -509899: 4850000));     1,       1;
   yc_op:size: 4518014(       0);       0(  -50000);       0[     0](        0(       0:       0));     2,       0;
 yc_over:size: 4986149(  392950);   19200(  -30800); 5379099[52141b](  5359899( -479899: 4880000));     3,       1;
  yc_end:size:14589926(       0);       0(  -50000);       0[     0](        0(       0:       0));     4,       0;
 yc_logo:size:  442367(       0);       0(  -50000);       0[     0](        0(       0:       0));     5,       0;
 yc_e001:size: 4115706(  -94856);  331248(  281248); 4020850[3d5a72](  3689602( -299352: 3390250));     6,       1;
 yc_f101:size: 6394853(  393551);  618926(  568926); 6788404[679534](  6169478( -503551: 5665927));    10,       1;
 yc_f201:size: 7193239(  203825);  638624(  588624); 7397064[70dec8](  6758440( -548640: 6209800));    11,       1;
 yc_f301:size: 7234872(  595856); 1195404( 1145404); 7830728[777cc8](  6635324( -675172: 5960152));    14,       1;
 yc_f401:size: 4095185( -195172);  458974(  408974); 3900013[3b826d](  3441039( -280039: 3161000));    15,       1;
 yc_f501:size: 7437024(  428176); 2754464( 2704464); 7865200[780370](  5110736( -550512: 4560224));    16,       1;
 yc_f601:size: 4737404(   19524);  771264(  721264); 4756928[4895c0](  3985664( -323664: 3662000));    17,       1;
 yc_f701:size:10138811(   43226);  374287(  324287);10182037[9b5d95](  9807750( -794750: 9013000));    18,       1;
 yc_f801:size: 5422148( -107975);  365435(  315435); 5314173[51167d](  4948738( -402738: 4546000));    19,       1;
 yc_f901:size: 5640060( -201660);  228544(  178544); 5438400[52fbc0](  5209856( -422856: 4787000));    20,       1;
 yc_t101:size: 5486943(  238397);  925353(  875353); 5725340[575c9c](  4799987( -389987: 4410000));    22,       1;
 yc_t201:size: 6801102(  -80398);   58906(    8906); 6720704[668cc0](  6661798( -543488: 6118310));    24,       1;
 yc_t301:size:10177486(  754098);  475910(  425910);10931584[a6cd80]( 10455674( -848177: 9607497));    25,       1;
 yc_e003:size: 5957146( -406200);  896906(  846906); 5550946[54b362](  4654040( -378152: 4275888));    26,       1;
 yc_t501:size: 9091583(  461297);  932252(  882252); 9552880[91c3f0](  8620628( -838628: 7782000));    27,       1;
 yc_d101:size: 3390643( -471485);  106732(   56732); 2919158[2c8af6](  2812426( -230000: 2582426));    32,       1;
 yc_d201:size: 4528658( -243474);  497792(  447792); 4285184[416300](  3787392( -307392: 3480000));    33,       1;
 yc_d301:size: 4693651(   28264);  401836(  351836); 4721915[480cfb](  4320079( -351079: 3969000));    34,       1;
 yc_d401:size: 4713019(  165071);  143865(   93865); 4878090[4a6f0a](  4734225( -384225: 4350000));    35,       1;
 yc_d501:size: 8503891(  385814);  882720(  832720); 8889705[87a569](  8006985( -787985: 7219000));    37,       1;
 yc_b002:size: 6003246(  450885);  844538(  794538); 6454131[627b73](  5609593( -455593: 5154000));    38,       1;
 yc_d701:size: 8197602( -213986);  859264(  809264); 7983616[79d200](  7124352( -579352: 6545000));    41,       1;
 yc_d702:size: 1290778(   38374);   34816(  -15184); 1329152[144800](  1294336( -144336: 1150000));    42,       1;
 yc_d703:size: 4022743( -519523);  719876(  669876); 3503220[357474](  2783344( -223344: 2560000));    43,       1;
 yc_b001:size: 5522908( -187996);  173438(  123438); 5334912[516780](  5161474( -143174: 5018300));    49,       1;
 yc_b001:size: 5522908( -187996);  173438(  123438); 5334912[516780](  5161474( -143174: 5018300));    50,       1;
 yc_b002:size: 6003246(  111607);  504378(  454378); 6114853[5d4e25](  5610475( -456475: 5154000));    51,       1;
 yc_b002:size: 6003246(  111607);  504378(  454378); 6114853[5d4e25](  5610475( -456475: 5154000));    52,       1;
 yc_b002:size: 6003246(  111607);  504378(  454378); 6114853[5d4e25](  5610475( -456475: 5154000));    53,       1;
 yc_b004:size:10134298(  567174);  103237(   53237);10701472[a34aa0]( 10598235( -858235: 9740000));    54,       1;
 yc_b005:size: 9843383( -155487); 1173422( 1123422); 9687896[93d358](  8514474( -833474: 7681000));    55,       1;
 yc_b003:size: 7194069(  224794);   82845(   32845); 7418863[7133ef](  7336018( -380818: 6955200));    56,       1;
 yc_e001:size: 4115706(  -94856);  331248(  281248); 4020850[3d5a72](  3689602( -299352: 3390250));    57,       1;
 yc_e002:size: 4727108( -535956);  269224(  219224); 4191152[3ff3b0](  3921928( -531678: 3390250));    58,       1;
 yc_e003:size: 5957146( -406200);  896906(  846906); 5550946[54b362](  4654040( -378152: 4275888));    59,       1;
 yc_e004:size: 5717154( -658153);  376209(  326209); 5059001[4d31b9](  4682792(  263096: 4945888));    60,       1;
 yc_e005:size: 3652866(  299043);   24000(  -26000); 3951909[3c4d25](  3927909( -322021: 3605888));    61,       1;
 yc_e006:size: 1802514( -366866);  119040(   69040); 1435648[15e800](  1316608( -106608: 1210000));    62,       1;
 yc_e008:size: 4184972(   68244);  325476(  275476); 4253216[40e620](  3927740( -317740: 3610000));    64,       1;
 yc_e009:size: 1012087(       0);       0(  -50000);       0[     0](        0(       0:       0));    65,       0;
 yc_e010:size: 6475882(  150870);  857040(  807040); 6626752[651dc0](  5769712( -610212: 5159500));    66,       1;

どうやっても計算が合わない。
どういう計算でやっているのかいろいろ試したりしたけど、手計算値と一致させるのはかなり難しい。

ファルコム簡易プレイヤ!

一部環境にてゲームのボタンを押しても音楽選択ダイアログが出ないというものに対する修正です。
今までもたまにあったのですが、OS入れ直しとかで直っていました。
修正しましたので、どの環境でも出るようになったと思います。(dynabook z83で実際出なかった)

《ファルコムメディアプレイヤ》bgm ループ 日本ファルコム
Ogg/Wav/Mp3/m4a/Avi/mp4/kpi
簡易プレイヤ

(2019.07.03)

簡易プレイヤ更新

更新しました。

もろもろ更新したので書き切れないくらいですね。

スペアナの表示調整や、モーダルウィンドウの呼び出し方法変更、AVX2版からAVX版にするためにすべてのライブラリをリビルド、すべてスタティックリンクに変更、画面スケールが100%以外に対応、などなど。

確認環境は、私のPCと、2in1タブレット(atomPC)です。

《ファルコムメディアプレイヤ》
Ogg/Wav/Mp3/m4a/Avi/mp4/kpi
簡易プレイヤ

簡易プレイヤ更新

flacのジャケット画像を表示しようとすると、対応してませんとでるのを対応。
プレイリストの枠線を、画面スケールが100%ではないときでも正常に出るよう変更。
ジャケット画面で画面スケールが100%ではないときでも正常に出るよう変更。

ジャケット画像を一度ファイルに落としてから読み込み直していたところをメモリ上だけで展開するよう変更。
(ファイルは使わない)

oggのジャケットが開けなくなっていたのを修正

簡易プレイヤ更新

steam版用Ys VIIIのoggのループに対応しました。
Ys VIIIには元々対応してましたが、ループにまでは対応してませんでした。
今回対応を行いました。

ファイルはこちら

追記

ループテーブルファイルにコメントが載ってるのですが、それをタイトル欄に表示するようにしました。

ループデータは、textフォルダ内のbgmtbl.tblに入ってますが、そのまま表示すると

このように文字化けします。
ようは暗号化されています。

これを複合化すると

このようになるわけですね。
で、ここのループテーブルの数値と、コメントをタイトルとして見なし、処理を行っています。

復号化は根気が必要です。

さらに追記

ys8のロゴとオープニング、エンディングのoggを再生すると、movieの動画を一緒に表示するようにしました。

さらに追記

今までUPXで圧縮してましたが、CPUパワーが足りないと展開に時間がかかるという問題があり、UPX圧縮やめました。
4/9現在、UPXで圧縮していないものが上がっております。

簡易プレイヤ 致命的ミス

簡易プレイヤにはSSE2版とAVX2版がありますが、mp3とm4aのライブラリのリンクが両方ともavx2用でした。

Windowsタブレットで動作させようとしたときに発覚しまして、修正済みです。

ファイルの中身更新してありますので、SSE2の方はダウンロードお願いします。

Vectorへは申請しておきます。

簡易プレイヤその2

alac対応出来ました!

Kb Media Player作者のKobarinさん多謝。

少し変数と受け渡し値が間違っていたようです。
新仕様と旧仕様を見比べて分かりました。

こちらで16bit、24bit、32bitは確認とれました。(シークも問題ないようです)
一応64bitまで対応はしてますが、64bitのalac作ってない物でわかりません。

https://ppp.oohara.jp/ogg.html

追記

今度はflacのシークで問題が。。。。
16bitのflacは正常にシーク出来るのに、24bitのflacでシーク出来ない状態になってます。
何か渡すのがおかしいんだと思うのですが、現在調査中

2019.01.13 11:58 新しいものに入れ替えを行いました。
m4a部分の修正と、flacの調査(24bitのシークのみ出来ません、再生は問題無く出来ます)

https://ppp.oohara.jp/ogg.html

追記2

前バージョンに戻してもだめなので、VS2015を再インストールしてみる。
VCしか使わないから不要な物は入れないことにする。
実は最近VC2015がおかしくなって再インストールしたのでそのせいかもしれないので、念のため。

追記3
VS2015アンインストールしたらインストールできなくなった。

原因をgoogle先生で10時間くらい格闘したけど、治らなかったのでVS2017入れ始めてる。

追記4
VS2017も同じエラーとなった。
どうやら、どっかおかしいっぽい。
10時間くらい調べて、なんとかなりましたので書いておきます。
問題のあるパッケージをlogから見つけます。ここではVC_MFC.source.msiで説明します。
そのままダブルクリックすると、

to install this product please run setup.exe. for other installation options"

と出ますので、
msiexec命令を使って、

msiexec /i VC_MFC.source.msi ADDEPLOY=1

として、問題のパッケージの競合を強引に消していきます。
消せたら普通にインストール出来ます。

簡易プレイヤ

SteamのYs8のoggに対応できました。
近々公開します。

まず、ys8のoggのバイナリを見て観ましょう。

これだけでは、何がどうなっているのか分からないですよね。
私もこれが何なのかoggのヘッダ部分取っ払ってデータ部分だけなのか、解析する上で全然分からず2,3日掛かりました。

で、ずっと解析を続ける中で先頭部分に注目しました。

これがys8のoggの先頭部分。


これが普通のoggの先頭部分。

なんかパターンみたいなものが見えてきました。

なにか暗号化されているみたいに見えますね。
Address 00 が 04になってます。実際は4Fです。
差分とか色々行うと以下のようになります。
まず、下位4ビットと上位4ビットが入れ替わります。
0x0fとxorを取ります。
04⇒40⇒0x0fとxor⇒4f
ぴったりですね。

他のSteamはパック化されてoggみたいに外に出てないので無理がありますが、Ys8は出来ました。
実装の際、デコードされたogg、ファイル名_dec.oggとして作成します。
内部で処理行ってメモリに置くことも考えたのですが、ファイルとして外に出して、それを再生する形を取りました。

https://ppp.oohara.jp/ogg.html
更新日付変わってませんがファイルは新しくなってます。

m4aのalacは再生しようとすると落ちますのでドロップしないように。(実装中ではありますが)

簡易プレイヤちょっと修正

ちょっと修正しました。
リンクは同じなので、このブログからかHPからどうぞ。

修正内容はHPの方に載せてある物だけでなくもう1つあります。

HPの方に載せてあるものは、はっきりいってどうでもいい機能です。
CPU名の表示と、AVX2に対応しているかの表示
CPUID命令から獲得して表示しているに過ぎないので(汗

もう1つの修正は、HPの方に載せていませんが、kpiでKSS(MSX)ファイルのm3uに日本語があった場合、文字化けするというものの修正です。

簡易プレイヤ自体はUNICODEですが、m3uはSJISの場合がほとんど。
そのまま読み込むと文字化けするのは当然といえば当然。
なので、読み込んだ後、UNICODEに変換しています。
これはKSSのみしか修正入れてませんが、他にも応用は利くので、もし文字化けするkpiのファイル形式ありましたら対応します。
kpiの方もファイル内部からの獲得とか一部しかまだ対応できてないんですよね。
KSSやM,OVIとか。
ファイルに情報があるものについては、基本出来ると思うので、これ対応してないよーとかあれば対応は出来ると思います。

HPの方にも書いてありますが、Windowsでファルコムのゲームが発売されなくなったので、そっちの方での追加は基本できないです。
Steam版とかに対応という線もあるかもですが、やらないのに購入ってのもねぇ。
シェアウェアなら出来るかもだけど、フリー(カンパ)ウェアなので。(ってまだ誰からもカンパ来てませんが)
Steam版のデータか、ファイル形式が分かれば対応も不可能では無いかもしれません。
(解析できるかどうかですね)

なので、基本、メディアプレーヤーです。
そっちに今は力いれてます。
mp3,mp4,mkv,m4a,flac,aviなど。

簡易プレイヤ バグ修正

2つほどバグがありましたので修正を行いました。
・flac,m4aでループ再生されない問題を修正。
これはそのままでflac、m4aのループ処理が抜けてました。

・動画再生で音量が反映されない問題を修正。
これは、以前LAVに対応させるため、フィルターをピンコネクト方式を止めた時に要らないところを消した時、消しすぎたみたいです。

ダウンロード(Ver 0.8c 32bit SSE2版 UNICODE版 VS2015ビルド)
2018.06.29
ダウンロード(Ver 0.8c 32bit AVX2版 UNICODE版 VS2015ビルド)
2018.06.29

簡易プレイヤ AVX2版 公開

簡易プレイヤのAVX2版を公開しました。
AVX2の載っているCPU(Intel i7 4000番台以降/AMD Excavatorアーキテクチャ以降)で動きます。
SSE2版は比較的古いPCでも動作するのに対し、AVX2版は近年のCPUでしか動作しません。
ライブラリの類いからすべてAVX2有りでビルドし直し、exeを作りました。
少々サイズは大きくなりましたが、(おそらく)動作は速くなっていると思います。
元々そこまで高負荷なものでもないので、実感できないので正直なところ公開して意味あるのかというのは自分の中にあったりしましたが・・・。
Intel C++とかだともっと高速になるんでしょうけど、めちゃ高いもんねぇ。
VC2015 Communityのcl.exeもそこそこの速度は出るので、そこまで最適化しなくてもいいかなぁと思っています。

ダウンロード(Ver 0.8c 32bit SSE2版 UNICODE版 VS2015ビルド)
2018.05.09
ダウンロード(Ver 0.8c 32bit AVX2版 UNICODE版 VS2015ビルド)
2018.05.16

WASAPI

簡易プレイヤをWASAPIに対応しようとちょっとやってみたけど、うまくいかなかった。
フォーマットチェックは通るんだけど、initializeにてこける。
あと6chだとフォーマットチェックでこける。

DirectSoundは音が悪いと言われているけれど、リミットぎりぎりの音を鳴らすときに悪くなるだけで、0.2dbほど下げた音データならば劣化はほぼない。
DirectSoundも内部ではWASAPIを呼んでいる模様。
音楽再生方式にも色々ありますよね。
XAudioやASIOなど。
実装形式が違うから再生スレッドだけは作り直さないと行けないわけだけど。

WASAPIの2ch,6chのwav再生で、96000Hzとかも大丈夫なサンプルソースがあれば実装可能かもしれないです。
色々サンプルあたってみてもmixformat使ってるのが多くて曲毎にサンプルを替える方式のサンプルはみたことないんですよね。
いいサンプルあったら教えて下さいね。

メディアプレイヤ その2

今日、久しぶりにoggの日本ファルコムの曲を再生したら、強制終了した。
なぜだーってことで、デバッグモードで動かすことに、。。。問題なく演奏される。
ということはコンパイルオプションとリンクオプションに問題があるということになる。
色々試してみた結果、最適化の1つを外すとうまく演奏されることが分かったので、
それを外してリビルドし公開してあります。

現在Vectorに上がっているものは上記の状態のものなので強制終了するはずです。
公開申請はしてあるので、何日かすれば解決したものが公開されると思います。
全部確認するには機能が付きすぎたのでこういうミスしちゃうんですが、
出来るだけ試してバグを無くしていきたいですね。