2009-09-11T06:57:26の更新内容

works/tools/ThbgmExtractor/index.wiki.txt

current previous
1,35 1,30
~
${smdncms:keywords,ThbgmExtractor,東方,音楽,抜き出し,吸い出し,抽出,bgm,thbgm}
${smdncms:keywords,ThbgmExtractor,東方,抜き出し,thbgm}
 
*東方シリーズ音楽抜き出し機
*東方シリーズ音楽抜き出し機
 
**概要
**概要
 
#ref(thbgmextractor.jpg,center)
#ref(thbgmextractor.jpg,center)
~
東方シリーズ音楽抜き出し機(ThbgmExtractor)は[[上海アリス幻樂団:http://www16.big.or.jp/~zun/]]製作の東方シリーズの音楽を抜き出すためのツールです。
[[上海アリス幻樂団:http://www16.big.or.jp/~zun/]]製作の東方シリーズの音楽を抜き出すためのツールです。 ループ回数やフェードアウトの設定ができます。 出力形式はWAV形式の他、mp3形式やogg形式への変換に対応しています。 本体とは別に曲目ファイルを用意することで、東方シリーズの各作品の音楽の抜き出しができます。
 

        

        
~
-ループ回数やフェードアウト処理の編集ができます。
**ダウンロード(最新版)
~
-本体とは別に曲目ファイルを用意することで、東方シリーズの各作品の音楽の抜き出しができます。
#googleadunit
~
-別途エンコーダを容易することで、mp3形式やogg形式へ変換することもできます。
-${smdncms:distfilelink,thbgmextractor_1_3_exe.lzh,version 1.3 パッケージ}
-
-${smdncms:distfilelink,thbgmextractor_1_3_src.lzh,version 1.3 ソース}
 

        

        
~
**ダウンロード
最新版では以下の機能を追加しました。
~
***最新版
:mp3形式やogg形式での出力に対応しました|[[lame.exe:http://www.rarewares.org/mp3-lame-bundle.php]]や[[oggenc2.exe:http://www.rarewares.org/ogg-oggenc.php]]などのコマンドライン型のエンコーダを用いることで、mp3形式やogg形式で出力することができます。 詳しくはパッケージに含まれるEncoders.confをご参照ください。
~
#googleadunit
:東方紅魔郷 製品版に対応しました|東方紅魔郷 製品版の音楽抜き出しに対応しました。 version 1.3では東方紅魔郷以外に、東方妖々夢(製品版)、東方永夜抄(製品版・体験版)、東方花映塚(製品版・体験版)、東方風神録(製品版・体験版)に対応しています。
~
-パッケージ
:フェードアウトの種類が選べるようになりました|フェードアウトの波形変化の種類として、線形・対数・指数・余弦の四種類から好みのものを選択できるようになりました。
+
--安定版 ${smdncms:distfilelink,thbgmextractor_1_3_exe.lzh,version 1.3 パッケージ}
+
--beta版 ${smdncms:distfilelink,thbgmextractor_1_4_beta1_exe.lzh,version 1.4 beta1 パッケージ}
+
-ソース
+
--${smdncms:distfilelink,thbgmextractor_1_3_src.lzh,version 1.3 ソース}
+
--${smdncms:distfilelink,thbgmextractor_1_4_beta1_src.tar.bz2,version 1.4 beta1 ソース}
+
---ソース中に含まれる各ライブラリはMIT X11ライセンスでのリリースとなります
 

        

        
~
***過去のバージョン
**ダウンロード(過去のバージョン)
 
-パッケージ
-パッケージ
 
--${smdncms:distfilelink,thbgmextractor_1_2_exe.lzh,version 1.2}
--${smdncms:distfilelink,thbgmextractor_1_2_exe.lzh,version 1.2}
 
--${smdncms:distfilelink,thbgmextractor_1_1_exe.lzh,version 1.1}
--${smdncms:distfilelink,thbgmextractor_1_1_exe.lzh,version 1.1}
~
--${smdncms:distfilelink,thbgmextractor_exe.lzh,version 1.0}
--${smdncms:distfilelink,thbgmextractor_exe.lzh,version 1.0} ※東方永夜抄体験版のみに対応しています
 
-ソース
-ソース
 
--${smdncms:distfilelink,thbgmextractor_1_2_src.lzh,version 1.2}
--${smdncms:distfilelink,thbgmextractor_1_2_src.lzh,version 1.2}
 
--${smdncms:distfilelink,thbgmextractor_1_1_src.lzh,version 1.1}
--${smdncms:distfilelink,thbgmextractor_1_1_src.lzh,version 1.1}
 
--${smdncms:distfilelink,thbgmextractor_src.lzh,version 1.0}
--${smdncms:distfilelink,thbgmextractor_src.lzh,version 1.0}
 

        

        
~
上記のパッケージに含まれていない曲目ファイルは、以下からダウンロードしてください。 version 1.3以降を使用する場合は必要ありません。 曲目ファイルはexeファイルと同じ位置にコピーしてください。
パッケージに含まれていない曲目ファイルは、以下からダウンロードしてください。 曲目ファイルはexeファイルと同じ位置にコピーしてください。
 
-製品版用曲目ファイル
-製品版用曲目ファイル
 
--${smdncms:distfilelink,titles_th10.txt,「東方風神録」用曲目ファイル}
--${smdncms:distfilelink,titles_th10.txt,「東方風神録」用曲目ファイル}
 
--${smdncms:distfilelink,titles_th09.txt,「東方花映塚」用曲目ファイル}
--${smdncms:distfilelink,titles_th09.txt,「東方花映塚」用曲目ファイル}
40,62 35,18
 
--${smdncms:distfilelink,titles_th09tr.txt,「東方花映塚 体験版」用曲目ファイル}
--${smdncms:distfilelink,titles_th09tr.txt,「東方花映塚 体験版」用曲目ファイル}
 
--${smdncms:distfilelink,titles_th08tr.txt,「東方永夜抄 体験版」用曲目ファイル}
--${smdncms:distfilelink,titles_th08tr.txt,「東方永夜抄 体験版」用曲目ファイル}
 

        

        
~
***未対応作品の曲目ファイル
**その他の曲目ファイル
~
以下のサイトにて公開されている曲目ファイルを使用できます。
-[[Variabler Stern:http://variabler-stern.sakura.ne.jp/]]さんにて東方文花帖、東方萃夢想などに対応した曲目リストが公開されています。
+
-[[Variabler Stern:http://variabler-stern.sakura.ne.jp/]]さんにて東方地霊殿以降の作品、東方萃夢想などに対応した曲目ファイルが公開されています。
+
-[[また〜り不定期日記(仮):http://www.selena-net.com/~piabrpg/mata-ri/tohotool.html]]さんにて東方地霊殿以降の作品に対応した曲目ファイルが公開されています。
+

          
+
version 1.4以降の曲目ファイルのフォーマットについては、[[works/libs/Smdn.Formats.Thbgm]]を参照してください。
+

          
+
**必須環境・動作確認済み環境
+
-必須
+
--.NET Framework 2.0以上またはMono 2.0以上
+
-動作確認済み
+
--Windows Vista Ultimate Edition + .NET Framework 3.5 SP 1
+
--Ubuntu 9.04 + Mono 2.5
 

        

        
 
**簡単な使い方
**簡単な使い方
~
***version 1.3
-「曲目ファイル」を選択する。
~
+「曲目ファイル」を選択する。
-「出力先フォルダ」で抜き出したファイルを保存するフォルダを指定する。
~
+「出力先フォルダ」で抜き出したファイルを保存するフォルダを指定する。
-「抜き出し開始」をクリックすれば抜き出し開始。
+
+「抜き出し開始」をクリックすれば抜き出し開始。
 

        

        
 
:指定した曲目だけ抜き出したい場合|「抜き出し設定」の曲目のところで、抜き出したい曲目だけにチェックを付ける。
:指定した曲目だけ抜き出したい場合|「抜き出し設定」の曲目のところで、抜き出したい曲目だけにチェックを付ける。
 
:フェードアウトの設定をしたい場合|フェード種類を選び、曲目毎にフェードアウト開始位置と終了位置を設定する。
:フェードアウトの設定をしたい場合|フェード種類を選び、曲目毎にフェードアウト開始位置と終了位置を設定する。
 
:mp3形式やogg形式で抜き出したい場合|エンコーダのexeファイルをThbgmExtractor.exeと同じフォルダに入れて、外部エンコーダを(なし)以外に設定する。
:mp3形式やogg形式で抜き出したい場合|エンコーダのexeファイルをThbgmExtractor.exeと同じフォルダに入れて、外部エンコーダを(なし)以外に設定する。
 
:「thbgm.datが見つかりません。」というエラーが出る場合|デフォルト設定ではない場所にインストールした場合は、このエラーが出ます。 「音楽ファイル」の所に、thbgm.datのパスを設定してください。 (thbgm.datはインストールしたフォルダにあります) 
:「thbgm.datが見つかりません。」というエラーが出る場合|デフォルト設定ではない場所にインストールした場合は、このエラーが出ます。 「音楽ファイル」の所に、thbgm.datのパスを設定してください。 (thbgm.datはインストールしたフォルダにあります) 
 

        

        
+
-HOWTOs
+
--English [[Extracting the Background Music from Touhou Scarlet Weather Rhapsody | ZeroMaid.info:http://zeromaid.info/articles/software/extracting_the_background_music_from_touhou_scarlet_weather_rhapsody]]
+
--繁体字中国語 [[東方系列作BGM割出器 @ 文月の手帖 :: Xuite日誌:http://blog.xuite.net/lkwaoi/touhou/13069089]]
+

          
+
***version 1.4 beta1
+
+音楽ファイル(thbgm.dat)をドラッグアンドドロップするか、「ファイル」メニューの「開く」→「音楽ファイル」で場所を指定する
+
+曲目ファイルが自動的に選択されない場合は、曲目ファイルを自分で指定する
+
+「抜き出し」メニューの「抜き出し開始」をクリックして、保存するフォルダを指定すれば抜き出し開始。
+

          
+
:HOWTO|(準備中)
+

          
+
**その他
+
英語の翻訳を修正してくれる方、英語以外の言語(主に繁体字中国語・ロシア語あたり)に翻訳してくれる方を募集しています。
+

          
+
**変更履歴
+
***version 1.4 beta1
+
-波形の表示とフェードアウト設定の編集が出来るようにした
+
-曲目ごとにフェードアウト・ループ回数の設定を編集出来るようにした
+
-抜き出し設定の読み込み・保存に対応
+
-再生機能を追加、ただし
+
--Windowsでは状況によりハングアップする場合あり(原因不明)
+
--ALSA環境では、音量変更・シークに未対応
+
--その他の環境での再生は未対応
+
-thbgm.datファイルからの製品情報の自動判別に対応
+
-Linux+Monoの環境に対応
+
-added English translations
+

          
+
***version 1.3
+
-外部エンコーダによるエンコードに対応
+
-東方紅魔郷 製品版の音楽抜き出しに対応
+
-フェードアウトの種類を線形・対数・指数・余弦の四種類から選べるように改善
+

          
 
**注意事項
**注意事項
 
-本ツールの使用は自己責任でお願いします。
-本ツールの使用は自己責任でお願いします。

works/libs/Smdn.Formats.Thbgm/index.wiki.txt

current previous
1,208 0,0
+
${smdncms:keywords,Smdn.Formats.Thbgm,thbgm.dat,抜き出し,ライブラリ}
+
*Smdn.Formats.Thbgm
+
C#で書いた.NET Framework/Mono用のthbgm.dat処理ライブラリ、[[works/tools/ThbgmExtractor]]のコアライブラリです。
+

          
+
**機能概要
+
主な機能一覧。
+
-thbgm.datからのリニアPCMストリーム、WAVEストリームの作成
+
-曲目ファイルの読み込み機能
+
-thbgm.datからの作品情報の自動判別
+

          
+
本ライブラリには、以下の作品に関する曲目データが含まれています。
+
-[[東方紅魔郷 ~ the Embodiment of Scarlet Devil.:http://www16.big.or.jp/~zun/html/th06.html]] 製品版
+
-[[東方妖々夢 ~ Perfect Cherry Blossom.:http://www16.big.or.jp/~zun/html/th07.html]] 製品版
+
-[[東方永夜抄 ~ Imperishable Night.:http://www16.big.or.jp/~zun/html/th08top.html]] 製品版および体験版
+
-[[東方花映塚 ~ Phantasmagoria of Flower View.:http://www16.big.or.jp/~zun/html/th09top.html]] 製品版および体験版
+
-[[東方風神録 ~ Mountain of Faith.:http://www16.big.or.jp/~zun/html/th10top.html]] 製品版および体験版
+

          
+
thbgm.datと同様のフォーマットを持つ音楽ファイルであれば、東方シリーズ以外にも対応出来ます。 なお、本ライブラリには抜き出したストリームにフェードアウト等のエフェクトを施す機能は含まれていません。
+

          
+
**ダウンロード
+
#googleadunit
+
[[works/tools/ThbgmExtractor]] version 1.4以降に含まれているものを使ってください。
+

          
+
**使い方
+
***作品情報の取得とストリームの作成
+
基本的な使い方。
+
#code(cs){{
+
using System;
+
using System.IO;
+

          
+
using Smdn.Formats.Thbgm;
+

          
+
class Sample {
+
  public static void Main(string[] args)
+
  {
+
    // 東方永夜抄の作品情報を取得
+
    ProductInfo product = ProductInfo.Th08;
+

          
+
    // 作品のタイトルを表示
+
    Console.WriteLine(product.Title);
+

          
+
    // 1トラック目のタイトルを取得
+
    Console.WriteLine(product.Tracks[0].Title);
+

          
+
    // ループ部分を3回リピートした1トラック目のストリームを取得
+
    using {
+
      // ...
+
    }
+
  }
+
}
+
}}
+

          
+
音楽ファイルから作品情報を自動的に判別して取得するにはProductInfo.FindMatchedProductを使います。
+
#code(cs){{
+
public static void Main(string[] args)
+
{
+
  ProductInfo product = ProductInfo.FindMatchedProduct(@"C:\Program Files\東方永夜抄\thbgm.dat");
+

          
+
  if {
+
    // ファイルが見つからないか、音楽ファイルに対応する作品情報が見つからなかった
+
    Console.Error.WriteLine("not found");
+
    return;
+
  }
+

          
+
  Console.WriteLine(product.Title);
+
  Console.WriteLine(product.Tracks[0].Title);
+

          
+
  // 1トラック目のストリームを取得(音楽ファイルのパスは指定しなくてもよい)
+
  using {
+
    // ...
+
  }
+
}
+
}}
+

          
+
曲目ファイルを読み込む場合はProductInfo.LoadFromを使います。
+
#code(cs){{
+
public static void Main(string[] args)
+
{
+
  // ライブラリに組み込まれている作品情報をリストに追加
+
  List<ProductInfo> products = new List<ProductInfo>(ProductInfo.EmbeddedProducts);
+

          
+
  // 曲目ファイルを読み込んでリストに追加
+
  products.Add(ProductInfo.LoadFrom(@"C:\Users\user\th97.txt"));
+
  products.Add(ProductInfo.LoadFrom(@"C:\Users\user\th98.txt"));
+
  products.Add(ProductInfo.LoadFrom(@"C:\Users\user\th99.txt"));
+

          
+
  // 対応する作品情報を取得する
+
  ProductInfo product = ProductInfo.FindMatchedProduct(@"C:\Users\user\th99\thbgm.dat", products);
+

          
+
  Console.WriteLine(product.Title);
+
}
+
}}
+

          
+
***WAVEストリームの作成
+
TrackInfo.GetStreamメソッドが返すBgmStreamはRIFF WAVEヘッダを含まないリニアPCMのデータストリームです。 WAVEストリームを作成するにはWaveStream.CreateFromを使います。 WaveStreamはBgmStreamをラップし、Readメソッドが呼ばれる際に必要に応じてRIFF WAVEヘッダを返します。
+

          
+
#code(cs){{
+
public static void Main(string[] args)
+
{
+
  TrackInfo track = ProductInfo.FindMatchedProduct(@"C:\Program Files\東方永夜抄\thbgm.dat").Tracks[13];
+

          
+
  using {
+
    using {
+
      player.PlaySync();
+
    }
+
  }
+
}
+
}}
+

          
+
また、RIFF WAVEヘッダだけが必要な場合は、WaveStream.CreateRiffWaveHeaderFromを使います。 以下の例は抜き出したリニアPCMのストリームをWAVEファイルとして保存する例です。
+

          
+
#code(cs){{
+
public static void Main(string[] args)
+
{
+
  TrackInfo track = ProductInfo.FindMatchedProduct(@"C:\Program Files\東方永夜抄\thbgm.dat").Tracks[13];
+

          
+
  using {
+
    using {
+
      var writer = new BinaryWriter(outStream);
+

          
+
      // RIFF WAVEヘッダを書き込む
+
      writer.Write(WaveStream.CreateRiffWaveHeaderFrom(inStream));
+

          
+
      // PCMデータを書き込む
+
      var buffer = new byte[track.StreamFormat.BytesPerSecond];
+

          
+
      for {
+
        var read = inStream.Read(buffer, 0, buffer.Length);
+

          
+
        writer.Write(buffer, 0, read);
+

          
+
        if
+
          break;
+
      }
+

          
+
      writer.Flush();
+
    }
+
  }
+
}
+
}}
+

          
+
**曲目ファイルのフォーマット
+
曲目ファイルは作品に関する情報を含むヘッダ部分と曲ごとの情報を含む部分に分かれます。 書式は次のとおりです。
+

          
+
:@で始まる行|音楽ファイル(thbgm.dat)のパス(インストーラのデフォルト設定でインストールされる場所)を表します。 相対パスを指定した場合は%PROGRAMFILES%からの相対パスとして解釈されます。 カンマ以降(パスの後ろ)は製品名を表します。
+
:#=ProductInfoで始まる行|作品に関する情報を表します。 現在以下のエントリが定義されています。
+
::Creator,hoge|作品の原作者名を表します。
+
::ReleaseDate,yyyy-MM-dd|作品の頒布年月日を表します。
+
::BgmSourceLength,xxxx|音楽ファイルのサイズをバイト単位で表します。 作品情報の自動判別の際に使用されます。
+
::BgmSourceHash,MD5Sum,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|音楽ファイルのMD5ハッシュ値を表します。 音楽ファイルの妥当性検証(現時点では未実装)の際に使用されます。
+
::BgmSourceIdentificationHash,MD5Sum,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|音楽ファイルの末尾4MBytesのMD5ハッシュ値を表します。 作品情報の自動判別の際、BgmSourceLengthだけで判別できない場合に使用されます。
+
:上記以外のシャープ記号(#)で始まる行|すべてコメントとして扱われます。
+
:上記以外の行|曲ごとの情報を表します。 音楽ファイル上での開始位置(バイト単位)、イントロ部の長さ[Bytes]、ループ部の長さ[Bytes]および曲名の順に記述します。
+

          
+
以下は[[東方永夜抄:http://www16.big.or.jp/~zun/html/th08top.html]]製品版の曲目ファイルの例です。
+

          
+
#code(,曲目ファイルの例){{
+
#「東方永夜抄 ~ Imperishable Night.」 製品版曲データ
+
#デフォルトのパスと製品名
+
@東方永夜抄\thbgm.dat,東方永夜抄 ~ Imperishable Night.
+
#原作者名
+
#=ProductInfo,Creator,上海アリス幻樂団
+
#頒布年月日
+
#=ProductInfo,ReleaseDate,2004-08-15
+
#thbgm.datのサイズ(バイト単位)
+
#=ProductInfo,BgmSourceLength,449961024
+
#thbgm.datのハッシュ値(MD5)
+
#=ProductInfo,BgmSourceHash,MD5Sum,38d3aeac961e93014643b064dcb30e3f
+
#thbgm.datの識別用ハッシュ値(末尾4MBのハッシュ)
+
#=ProductInfo,BgmSourceIdentificationHash,MD5Sum,6198ac09d529be7bc285459ca490dc93
+
#曲データ
+
#開始位置[Bytes]、イントロ部の長さ[Bytes]、ループ部の長さ[Bytes]、曲名
+
#位置・長さは16進値として記述する
+
00000010,000f1ac0,00b2ed40,永夜抄 ~ Eastern Night.
+
00c20810,000aae00,01563b00,幻視の夜 ~ Ghostly Eyes
+
0222f110,002a8000,00a78000,蠢々秋月 ~ Mooned Insect
+
02f4f110,00077400,018b5c00,夜雀の歌声 ~ Night Bird
+
0487c110,0044d680,00be3a80,もう歌しか聞こえない
+
058ad210,0029d200,00ceae00,懐かしき東方の血 ~ Old World
+
06835210,0048a600,00eb8400,プレインエイジア
+
07b77c10,00165200,00ea2e00,永夜の報い ~ Imperishable Night.
+
08b7fc10,0023acc0,0195d340,少女綺想曲 ~ Dream Battle
+
0a717c10,001bbc40,013963c0,恋色マスタースパーク
+
0bc69c10,0011f000,01c3b900,シンデレラケージ ~ Kagome-Kagome
+
0d9c4510,00082200,013b5c00,狂気の瞳 ~ Invisible Full Moon
+
0edfc310,00197000,00cf4500,ヴォヤージュ1969
+
0fc87810,0012d180,01ccb280,千年幻想郷 ~ History of the Moon
+
12847810,0065ea00,017e8600,竹取飛翔 ~ Lunatic Princess
+
11a7fc10,00bc9500,001fe700,ヴォヤージュ1970
+
16763f10,000d7600,019e0700,エクステンドアッシュ ~ 蓬莱人
+
1821bc10,00145800,01c77f00,月まで届け、不死の煙
+
1468e810,002f2200,00c26000,月見草
+
155a6a10,00347e00,00e75700,Eternal Dream ~ 幽玄の槭樹
+
19fd9310,0010e200,00c36700,東方妖怪小町
+
}}
+

          
+
**その他
+
現在対応していない作品の曲目ファイルを募集しています。 提供していただける方はご連絡ください。
+

          
+
**変更履歴
+
:version 1.4|[[works/tools/ThbgmExtractor]]本体から分離し、ライブラリ化
+
曲目ファイルのフォーマットを拡張し、製品情報などを含められるようにした
+

          
+
**動作状況
+
以下の環境で動作することを確認済みです。
+
-.NET Framework 3.5
+
-Mono 2.4
+