ThbgmExtractorに関するスレッド。 バグ報告・要望など。 Atom 1.0

1:smdn (管理人)2009-09-07T08:58:24ID:cipeco0y

ThbgmExtractorに関する質問・バク報告・要望用のスレッドです。

以下ありがちな質問と答え。

「アプリケーションを正しく初期化できませんでした」と表示される
.NET Frameworkをインストールしてください。
抜き出し後のファイルのサイズが大きい
エンコードするようにしない限り、抜き出し後に出来るファイルは無圧縮のwavファイルです。
エンコーダを指定してもエンコードされない
ThbgmExtractor.exeと同じフォルダにエンコーダのexeを置くか、Encoders.confにエンコーダの.exeへのフルパスを指定してください。 またEncoders.confに書いたコマンドライン引数を確認してください。
エンコーダの設定について
エンコーダの開発元に質問してください。
最新作の音楽を抜き出したい
曲目ファイルを自分で書くか、公開されているところからダウンロードしてきてください。
エラーが出る
設定した内容と出たエラーメッセージ、その時の動作ログを教えてください。
うまく抜き出せない
設定した内容と起きた現象の詳細を教えてください。

その他、下らない質問が多いので、同じような質問がないか調べてから書き込んでください。
最新版で動作しない場合、過去のバージョンも試してみてください。

2:ななし2009-09-26T03:46:47ID:z3r39xGR

初めまして。
ThbgmExtractor version 1.4 beta2のソースをダウンロードさせて頂きました。
個人的な用途で使うソフトを作るのに、
c#で音楽ファイルの区間リピート再生できるソースを探していたので、大変助かりました。
特にalsaにまで対応しているのでありがたいです。

ところで、使わせていただく過程でバグを発見したので報告させて頂きます。
すでに修正済みの場合はご容赦下さい。

  • 壊れたwavファイルが出力されている

デフォルトの設定で複数曲出力すれば容易に再現します。
ファイル出力で出力されたファイルのWAVEデータ(dataチャンク)の末尾に
数バイトのゴミデータが付加されています。

原因は、EffectAppliedBgmStreamのLengthのgetのTimeSpanからのサイズ計算に誤差が発生し、
間違ったサイズのデータを出力しているようです。
試しに、データサイズが4の倍数になるように

-          return (long)(base.Format.BytesPerSecond * (effect.FadingStart + effect.FadingLength + effect.TrailingSilenceLength).TotalSeconds);
+          return (long)(base.Format.BytesPerSecond * (effect.FadingStart + effect.FadingLength + effect.TrailingSilenceLength).TotalSeconds) / 4 * 4;

というコードに変更すると、現象が発生しなくなります。

  • Smdn.Interop.WinMM.PcmStreamPlayerのVolumeが、setした値とgetした値で食い違う (Windows)

ThbgmExtractorには使用されていないので、ソース上のみのバグです。
次のソースで再現します。

 Smdn.Media.PcmStreamPlayer player = Smdn.Media.PcmStreamPlayer.Create();
 player.Volume= 50;
 int v = player.Volume;		// vには49が入る

原因は、PcmStreamPlayerのVolumeのgetの整数同士の計算で誤差が発生しているようです。
試しに、次のように

-        return 100 * (vol.Left - WaveOutVolume.Min.Left) / (WaveOutVolume.Max.Left - WaveOutVolume.Min.Left);
+        return (int)Math.Round(100 * (vol.Left - WaveOutVolume.Min.Left) / (double)(WaveOutVolume.Max.Left - WaveOutVolume.Min.Left));

doubleで計算してRoundすると発生しなくなります。

3:smdn (管理人)2009-09-26T20:45:59ID:cipeco0y

>>2
はじめまして。
詳細な報告ありがとうございます。 2件ともこちらでは把握していないバグでした。
次のリリースでご指摘頂いた箇所をしておきます。

4:ななし2009-10-14T22:34:37ID:xSEiNy3/

Ver1.3から使わせて頂いてます。
Ver1.4について要望とエラーの報告をさせて頂きます。

■要望
現状では、一括設定で長さの基準を「ループ回数」にすると、設定したループ回数に達する手前からフェードが開始されますが、達した後でフェードが開始されるような設定が欲しいです。
例えば、「1ループ後、5秒後から10秒間フェード」という感じです。

■エラーの報告
曲目を選択した状態で、フェードの時間等が表示されているボックスに手打ちで適当に大きな数字を入力するとエラーが出たり動作が不安定になるようです。

以上よろしくお願い致します。

5:smdn (管理人)2009-10-14T23:10:26ID:cipeco0y

>>4
要望ありがとうございます。 便利そうなので次バージョンにて取り入れようと思います。

エラーについてですが、CPUが弱かったり入力した時間が長すぎると不安定になると思います。
参考までに、どれくらいの時間を入力ときに不安定になったか、具体的な設定をお教え頂けますか?

現状数十分を越える長さは通常指定しないだろうという前提で作ってありますが、
それよりも長く設定したいようであれば、不安定にならない対処しようと思います。

6:ななし2009-10-15T23:23:52ID:xSEiNy3/

>>5
要望の件、前向きに検討して頂けるようで感謝感謝です。

エラーですが、例えば「フェードアウト開始」のボックスに整数で10とか突っ込むとメモリが不足していますといった内容のエラーを吐いて落ちてしまいます。ループ回数を見ると5000回を超えてるのでまずこんな設定をすることはないでしょうがw

私は1ループ聞ければよいので長時間の設定をすることはありませんが、上限は合った方がいいのかもしれないですね。

7:smdn (管理人)2009-10-16T22:23:32ID:cipeco0y

>>6
先ほどversion 1.4.1をリリースしました。 ご要望頂いた一括設定でのフェード開始位置の設定を出来るようにしてあります。

エラーの方ですが、10程度で不安定になるのはおかしいと思ったのですが、version1.4では10と入力すると10日として解釈されるようになってました。
それが原因で不安定となったようです。 1.4.1では10日ではなく10秒として解釈されるように改善しました。

あと、ついでなので、時間を入力できる場所はとりあえずの上限として各6時間にしました。
これでも十分不安定になり得ますが、無応答になって設定すら保存出来なくなるということは少なくなるかと思います。

8:ななし2009-10-17T21:57:28ID:xSEiNy3/

>>7
対応ありがとうございます。
早速使わせていただきますm(_ _)m

9:ななし2009-10-23T04:34:56ID:nfz66TOS

はじめまして。バグなのかわかりませんが一応報告させていただきます。

version1.3までは外部エンコーダのプルダウンにLAME等が選択できるようになっていたのですが、version1.4の外部エンコーダからは(なし)しか選択できず、外部エンコーダが使用できません。

version1.4ではエンコーダのexeファイルをThbgmExtractor.exeと同じフォルダに入れるだけでなく、外部エンコーダで選択できるようにするための別の操作が必要なのでしょうか。

10:ななし2009-10-23T04:57:50ID:nfz66TOS

すみません。>>9ですが自己解決しました。私はEncoders.confをTeraPadを利用して参照していたのですが、コマンドが

; [FAAC 1.28]
; executable=faac.exe
; arguments=-w -b 128 --title "%THBGM_TITLE%" --artist "%THBGM_CREATOR%" --album "%THBGM_ALBUM%" --track %THBGM_TRACK% --year %THBGM_RELEASE_YEAR% -o "%THBGM_OUTPUTFILEPATH%" "%THBGM_INPUTFILEPATH%"
; extension=m4a

; [LAME 3.98.2]
; executable=lame.exe
; arguments=-h -b 192 --tt "%THBGM_TITLE%" --ta "%THBGM_CREATOR%" --tl "%THBGM_ALBUM%" --tn %THBGM_TRACK% --ty %THBGM_RELEASE_YEAR% --ignore-tag-errors "%THBGM_INPUTFILEPATH%" "%THBGM_OUTPUTFILEPATH%"
; extension=mp3

; [OggEnc 2.85]
; executable=oggenc2.exe
; arguments=-b 192 --title "%THBGM_TITLE%" --artist "%THBGM_CREATOR%" --album "%THBGM_ALBUM%" --tracknum %THBGM_TRACK% --date "%THBGM_RELEASE_YEAR%-%THBGM_RELEASE_MONTH%-%THBGM_RELEASE_DAY%" -o "%THBGM_OUTPUTFILEPATH%" "%THBGM_INPUTFILEPATH%"
; extension=ogg

となっていたので、

[FAAC 1.28]
executable=faac.exe
arguments=-w -b 128 --title "%THBGM_TITLE%" --artist "%THBGM_CREATOR%" --album "%THBGM_ALBUM%" --track %THBGM_TRACK% --year %THBGM_RELEASE_YEAR% -o "%THBGM_OUTPUTFILEPATH%" "%THBGM_INPUTFILEPATH%"
extension=m4a

[LAME 3.98.2]
executable=lame.exe
arguments=-h -b 192 --tt "%THBGM_TITLE%" --ta "%THBGM_CREATOR%" --tl "%THBGM_ALBUM%" --tn %THBGM_TRACK% --ty %THBGM_RELEASE_YEAR% --ignore-tag-errors "%THBGM_INPUTFILEPATH%" "%THBGM_OUTPUTFILEPATH%"
extension=mp3

[OggEnc 2.85]
executable=oggenc2.exe
arguments=-b 192 --title "%THBGM_TITLE%" --artist "%THBGM_CREATOR%" --album "%THBGM_ALBUM%" --tracknum %THBGM_TRACK% --date "%THBGM_RELEASE_YEAR%-%THBGM_RELEASE_MONTH%-%THBGM_RELEASE_DAY%" -o "%THBGM_OUTPUTFILEPATH%" "%THBGM_INPUTFILEPATH%"
extension=ogg

と修正したところ、外部エンコーダですべて表示されるようになり、LAMEではエンコードされる事も確認しました。

;が混入していたのはTeraPadによるものなのかが私にはわからないのですが、上記で解決できたということをあらためて報告させていただきます。

11:smdn (管理人)2009-10-23T22:28:48ID:cipeco0y

>>10
version 1.4以降に含まれるデフォルトのEncoders.confは、記述例をすべて;でコメントアウトしてあります。
そのため、編集して;を消さない限り外部エンコーダのメニュー項目には表示されないようになっています。

これは、エンコーダのexeファイルが無い状態(ダウンロードして展開した直後の状態)でもメニューに
エンコーダの一覧が表示されてしまうと、exeファイルのあるなしに関わらずエンコードできるように見えてしまうと考え、
version 1.4以降はEncoder.confを編集しない限りメニューには表示されないように変更したためです。

12:ななし2009-11-03T01:51:26ID:gUwehRhI

はじめまして。
使わせていただきました所、1.4~1.5までのバージョン全てで
紅魔郷の07. 明治十七年の上海アリス.wavがなぜかエンコードされませんでした。

外部エンコーダーは LAME 3.98.2 を使いました。

13:smdn (管理人)2009-11-04T19:49:10ID:cipeco0y

>>12
LAMEにはダメ文字を含むファイル名をエンコードできない不具合があります。
「明治十七年の上海アリス」だけエンコード出来ないのはそれが原因です。

先ほどダメ文字を含んでいてもエンコードできるように修正したversion 1.4.2を
リリースしましたので、1.4.2を使ってください。

もともと1.3ではエンコード出来ていたのですが、1.3から1.4でダメ文字対応を削ってしまったので
1.4.1までではエンコード出来なくなっていました。
万が一1.4.2でエンコード出来ない場合は、1.3を試してみてください。

14:ななし2009-11-22T14:21:14ID:du0UTrwN

こんにちは。1.3から愛用させて頂いていました。
新しいVer.1.4ですが、設定項目が変わりすぎていて非常に困惑しています。
フェードアウトの設定など前は特に気にせず出来ていたのに、自分で細かく秒数指定するとなると本当に悩んでしまいます。切り取りカーブの呼称も変わっていますし。デフォルトでも前回と全く違いますよね?

また、保存しなければ最後に使った設定やフォルダパスも記憶してくれないので余計に困ります。
前と同じ設定はどのようにすればいいでしょうか?新しい安定版が出た以上、そちらを使わなければ気がすみません。
設定項目を以前のようなおまかせモードと、詳細設定に分ければ良かったのでは?

15:smdn (管理人)2009-11-22T22:48:36ID:cipeco0y

>>14
ご意見ありがとうございます。
version 1.4では機能を増やすことを優先したので、1.3と比べて分かりにくくなったと思っています。 ご不便をおかけしてすみません。

以下、質問頂いた点についてそれぞれお答えします。

1.3と同じ設定の仕方

フェードアウトの設定

1.4では、波形部分のアンカーを移動させることで秒数指定せずともフェードアウトの設定が出来ます。 1.3のスライダと同様の設定がしたい場合は、アンカーを使って設定してください。

切り取りカーブの設定

1.3と1.4の切り取りカーブの呼称対応は次の表のとおりです。

1.31.4
通常(線形カーブ)直線
急激(指数カーブ)急激
緩やか(対数カーブ)緩やか
S字(余弦カーブ)滑らか
デフォルトの設定

デフォルトの設定は1.3と1.4で同じで、変更はしていません。 具体的には

  • ループ2回
  • フェードアウト時間は20秒
  • フェードアウト終了位置は2回目のループ終了位置と同じ
  • 切り取りカーブは線形カーブ

のままです。

設定やフォルダパスの記憶

1.4は最後に設定した内容を記憶するようにはなっていないので、設定した内容は抜き出し設定を保存しない限り破棄されます。 同じ設定を使いたい場合は抜き出し設定を保存してください。
ただそれでもフォルダを選択するときのデフォルトパスは保存されないので、その点はご容赦ください。

なお、まだテスト版ですが、1.5以降では抜き出し設定を保存しなくても、最後に設定した内容は記憶するようになっています。

おまかせモードと詳細設定について

デフォルトの設定は変えていないので、設定を変更しないで抜き出すか、編集メニューの一括設定を使えば、1.3に近いやり方で設定ができます。

一括設定よりも簡単に設定を済ませられるような案があれば採用したいと考えているので、
もし「おまかせモード」について提案や要望などあればお聞かせ頂ければと思います。

16:142009-11-23T09:45:34ID:du0UTrwN

>>15
非常に丁寧なご回答を有難うございます。
参考にさせて頂きます。

17:ななし2010-02-17T20:40:54ID:MjowpUmA

初めまして。
Ver.1.4.3を使っている者ですが、起動するとCLR.エラー80004005と出てきてしまい対処に困っています。 是非アドバイスをいただけませんでしょうか?

18:smdn (管理人)2010-02-17T22:04:00ID:Uc3GKKlM

はじめまして。
.NET Frameworkは既にインストールされている状態だと思いますので、
その前提でいくつか対処法を書きます。

エラーコードをもとに調べて見ましたが、はっきりとした原因と対処法が
みつからなかったのでうまくいくか分かりませんが、

  1. exeファイルのプロパティを開き「互換モードでこのプログラムを実行する」に
    チェックが付いている場合は、チェックを外す
  2. コントロールパネルで.NET Frameworkの修復を試す
  3. それでもダメなら.NET Framework自体を再インストールする

ことで治ったという例があるようなので、試してみてください。

あと、再インストールは面倒だと思うので、再インストールを試す前に、
ver 1.4.3以前のバージョンが動くかどうか試してみることをお勧めします。

19:ななし2010-03-27T02:56:07ID:RR9u3QBF

始めまして、このような素晴しいソフトを知り使おうと思ったのですが
下のようなエラーが出てエンコードできません

EventType : clr20r3 P1 : thbgmextractor.exe P2 : 1.4.3.0
P3 : 4b39d462 P4 : thbgmextractor P5 : 1.4.3.0 P6 : 4b39d462
P7 : 5 P8 : 1b P9 : system.missingmethodexception

ThbgmExtactorのバージョンは1.4.3でlameは3.98を使用しました
このようなソフトを使うのは初めてなので判らない事だらけですがよろしくお願いします。

20:smdn (管理人)2010-03-27T06:10:21ID:Uc3GKKlM

はじめまして。
見慣れないエラーなのでちょっと原因がわかりません。

とりあえず、

  1. お使いのOS
  2. 調べられたらインストールされている.NET Frameworkのバージョン
  3. エラーが出たときの操作 (抜き出しを開始したとき、起動したとき、など)

を教えてください。

また、以下のことを試してみてください

  1. Windows Updateで最新の.NET Frameworkにアップデートする
  2. 1.4.3より前のバージョンを使う
21:ななし2010-03-28T22:56:03ID:mtXzEKiC

返事遅くなってすいません

使用しているOSはwindowsXPで
最初、インストールされてなかったので.NET Framework2.0をインストールしました
エラーが出たのは抜き出しの作業をしたときです。

一応最新の.NET Frameworkを最新にして古いバージョンの物を試してみたいと思います。
よろしくお願いします。

22:ななし2010-04-04T21:48:02ID:mtXzEKiC

以前質問した19ですが、最新版のNet Framework2.0をインストールしたら使えるようになりました。

お騒がせして申し訳ありませんでした。

23:smdn (管理人)2010-04-05T03:30:14ID:Uc3GKKlM

>>22
ご報告ありがとうございます。 解決したようで何よりです。

入れ違いになってしまいましたが、原因と思しき箇所を修正したバージョン1.4.4を
先ほどリリースしました。
機能的な差異はないので、1.4.3が問題なく動作しているのであれば、
引き続き1.4.3を使って頂いて問題ありません。

24:ななし2010-04-24T20:21:08ID:KO3J3Fun

初めまして
1.44を使っているのですが
音楽フォイルを変更すると他の曲目ファイルに変更してもずっと同じになってしまいます。
あと少しどうでもいいですが
設定の保存で曲目ファイルを変えてたときに出るのでやると変えたあとの名前が保存ファイル名に入ってしまいます

よろしくお願いします

25:smdn (管理人)2010-04-26T00:10:33ID:+iq/7O8y

>>24
2つとも意図している動作で不具合ではありません。

まず1つめについて。 曲目ファイルを変更しても、音楽ファイルは変更されません。
音楽ファイルの方を変えたい場合は、手動で希望の音楽ファイルを設定してください。

つぎに2つめについて。 設定を保存するときのデフォルトのファイル名は、
選択されている曲目ファイルのタイトルで決まります。

これらの動作に不都合があるのかと思いますが、書かれた内容からはいまいち
要望が読み取れなかったのでよくわかりません。
もし違うようでしたらご希望する動作をお教えください。

26:ななし2010-05-16T23:41:38ID:3aVbWdC7

はじめまして。
便利なソフトウェアを公開してくださってありがとうございます。
東方以外の曲抜き出しにも活用させてもらっています。

要望なのですが、
「ループしない曲」の抜き出しを定義したいとき、
Ver1.3系では、曲目ファイルの「ループ部の長さ[Bytes]」に「00000000」と書くことで対応できたんですが、
Ver1.4系でその曲目ファイルを読み込ませると、フリーズしてしまいます。
何とかフリーズしないように出来ないものでしょうか。
よろしくお願いいたします。

27:smdn (管理人)2010-05-18T00:37:01ID:+iq/7O8y

>>26
先ほどversion 1.4.5をリリースしました。
このバージョンでループ部の長さに0を指定してもフリーズしないように
しましたので、お使いください。

なお、ループしない曲でもフェードアウト等を設定して抜き出せますが、
プレビュー再生ではオリジナルの曲の長さの分までしか再生されません。
この不具合については修正が少し面倒なので、今後のバージョンか
1.5系の方で修正します。 ご了承ください。

28:ななし2010-06-06T13:45:33ID:ZrPFUZX4

はじめまして。

かなり低レベルな質問だと思うのですが、ファイルのダウンロードで「このファイルを開くか、または保存しますか?」と出て「開く」を押しても何の反応もなくうまく抜き出し機を起動させることができないのですが・・・ご助言よろしくお願いいたします。

29:smdn (管理人)2010-06-07T01:49:25ID:+iq/7O8y
  • >>1と入力すると1番へのアンカーになります。
  • 投稿内容はPukiWiki記法で整形されます。
    • 以下のPukiWiki記法が使えます。
      • 引用文
      • 番号付きリスト、番号なしリスト、定義リスト
      • 整形済みテキスト
        • 複数行のコードブロック・コマンド出力を書き込むには#code{{〜}}、#prompt{{〜}}と記入してください。
        • AAを書き込むには#aa{{〜}}と記入してください。
      • 表組み
      • 見出し
      • 強調・斜体、取り消し線・下線
      • 文字色(&color)、文字サイズ(&size)
      • 注釈
    • URL・メールアドレスは自動的にリンクになります。
    • 詳しくはPukiWikiのFormattingRulesを参照してください。
  • 書き込み後に投稿内容を編集することは出来ません。