トップへ戻る

==============
FumenExtractor
==============
(ver. 131212)

1.何が出来るの?
2.動画のフレーム連番画像を用意する
3.連番画像からの譜面抽出
4.小節・拍の設定、テキスト出力
5.FAQ


-------------------------------------------------------------------
1.何が出来るの?
-------------------------------------------------------------------
このソフトを使うと、

『jubeat の譜面確認動画や創作譜面動画 (をフレームに分解して連番画像にしたもの) から、
譜面を抽出し、その譜面をいくつかの形式で出力する』

ことが出来ます。

※ただし「花マーカー」を用いた「ブレのない」動画を前提としています (マーカーの種類については FAQ も参照)。
なお、ブレさえなければ、「パネル面に対して垂直方向に撮影された」等の条件は今回は必要ありません (昔の analyser を知っている人向けの説明)。


出力できる形式は

・テキスト譜面 (1列形式)
・テキスト譜面 (2列形式 = jubeat_memo(※) 形式)  ← #memo2/#boogie には現時点では対応できておりません
・抽出結果保存用のデータ形式 (*.dat)
・全てのノーツの時刻を羅列した形式 (*.csv)

です (なお、上 2 つは、譜面再生ソフト jubeat_analyser でも読み込める形式です)。

※【jubeat_memo について】
http://www14.atwiki.jp/jubeat_memo/pages/1.html
こちらのサイトでは、多くの公式譜面をテキスト形式で閲覧することが出来ます
(自分もよくお世話になっています)。
jubeat_memo で用いられているテキスト譜面の記述形式を、この説明書では
「jubeat_memo形式」あるいは「2列形式」という言葉で表しています。



このソフトをきちんと使いこなせれば、
『譜面動画を見ながら譜面を書き起こす作業』がだいぶ楽になると思います。



なお、譜面抽出に加え、本ソフトは

・テキスト譜面 (1列形式)
・テキスト譜面 (2列形式 = jubeat_memo 形式)
・抽出結果保存用のデータ形式 (*.dat)

の読み込みも行うことができます。そのため、このソフトを用いて、
1列形式と2列形式の相互変換もある程度行うことが出来ます。



※後にも書きますが、このソフトが出力できる譜面は、
「途中で拍子やテンポが一度も変化しない」譜面に限ります。

・「4 拍子」や「16分音符が最小単位」でなくとも問題ありません (昔の analyser を知っている人向けの説明)。
(たとえば Jailbreak のように) 4拍子、12分音符最小単位、とかでも大丈夫です。また、3 拍子や 5 拍子でも大丈夫です。

・(たとえば Russian Snowy Dance のように) 途中で1,2回だけテンポが変わるような譜面の場合は、
テンポが変化しない区間ごとに譜面を出力して、それらをくっつけてやればよいでしょう
(少し面倒に思うかもしれませんが、それでも動画を見ながら譜面を書き起こすよりはまだ大分ラクだと思います)。

・(たとえば ウィリアム・テル序曲 や 理由なき反抗 や Supercali... のように) テンポがしょっちゅう
変化するような譜面に対しては、このソフトは役に立たないでしょう……。おとなしく、動画を見ながら譜面を書き起こしてください。

・(一部の創作譜面に見られるように) 4x4 でない譜面も、このソフトでは抽出したり出力したりすることが出来ます。



●テキスト譜面完成までの大まかな流れを説明すると、
・(譜面動画がインターネット上にある場合) 譜面動画のダウンロード
・譜面動画をフレーム連番画像へ分解
・譜面を抽出 (この時点では「どのパネルにいつ (開始から何ミリ秒後に) ノーツがやって来るか」という情報のみ)
・抽出した譜面に、小節や拍の情報を設定する
・テキスト譜面出力する
となります。
最初の二項目については2章で、三項目めは3章で、四項目め以降は4章で説明します。



※「譜面抽出」がどんな感じなのかをとりあえず試してみたいという方は、
まずはサンプル画像 (frame/sample/sample-%07d.jpg) を使って実際にやってみましょう! (3章から読みましょう)
……と思ってサンプル画像を適当に用意しようと思ったのですが、ファイルサイズが重すぎるので、
サンプル画像はありません。ごめんなさい。ためしに

さよならトリップ[EXT] (ライン録り)
http://www.youtube.com/watch?v=9UsLY2ZnMpo

を使ってやってみてはどうでしょう?
(BPM が遅めで 3 連符もなく、譜面抽出「初心者」には比較的易しいと思います)

-------------------------------------------------------------------
2.動画のフレーム連番画像を用意する
-------------------------------------------------------------------
譜面動画がネット上にある場合は、まずダウンロードしなければなりません。
Onlinevideoconverter などのウェブサービスや Craving Explorer などのソフトを用いるとよいでしょう
(すぐ下で触れている TMPGEnc を使ってフレーム画像を作りたい場合は、AVI 形式か MPEG 形式でダウンロードしましょう)。


次に、動画のフレーム画像への分解を行いましょう。これも適当なソフトを使ってください。
一応、ここでは、TMPGEnc を用いた場合のお勧めのやり方のみ記しておきます。

・「映像ソース」を譜面動画にする (「音声ソース」「出力ファイル名」は放っておいてよい)
・FumenExtractor があるディレクトリ内にフォルダ frame があるはずですが、
その中に空のフォルダを一つ作成する (ここでは hoge とする)
・ファイル -> ファイルに出力 -> 連番 BMP/PPM/TGA/JPG ファイル で、保存ダイアログが出てくるので、
フォルダ hoge に移動し、ファイルの種類を「連番 JPEG ファイル(*.jpg)」、JPEG の品質を「98%」にして
(ファイル名は適当でよい (ここでは piyo とする))、保存を行う
・すると、フォルダ hoge 内に
piyo-0000000.jpg
piyo-0000001.jpg
piyo-0000002.jpg
……
という感じで連番画像が出力されるはずです (29.97fps で 2 分間だと 3600 枚程度)。これでOKです
(実際は "hoge" や "piyo" の代わりに "Evans" みたいに曲名を使ったほうがよいでしょう)。


なお、TMPGEnc のメインウィンドウの下の方に動画の情報 (縦横サイズや fps やビットレートなど) が
出ているはずですが、fps の値 (大抵 29.97 とか 24 とかそれくらいの値だと思います) は
覚えておいてください。あとで必要になります。

-------------------------------------------------------------------
3.連番画像からの譜面抽出
-------------------------------------------------------------------
FumenExtractor を起動します。
最初の画面で c キーを押して、譜面抽出の設定画面に入ります。


まず、
・パネル列数
・パネル行数
・フレームの連番ファイル名
・初期値
・終値
・元の動画の fps
を設定します。

※列数、行数について。
□□□□
□□□□
□□□□
の列数は 4、行数は 3 です。

※ファイル名ですが、たとえばフォルダ frame 内のフォルダ hoge 内に
piyo-0000001.jpg
piyo-0000002.jpg
piyo-0000003.jpg
……
というファイルがある場合には
frame/hoge/piyo-%07d.jpg
とします。

fuga0.jpg
fuga1.jpg
fuga2.jpg
……
というファイルがある場合には
frame/hoge/fuga%d.jpg
とします。

%d と書いた部分は 1, 2, ..., 9, 10, 11, 12, ... という整数の文字列に置き換えられ、
%07d と書いた部分は 0000001, 0000002, ..., 0000009, 0000010, 0000011, 0000012, ... という
 7 桁の文字列で置き換えられます。
その他、% を使ったいろいろな書き方については、
"HSP3 strf" 等で検索して調べてください (基本的に「C 言語の書式文字列」と同じルールのはずです)。


※上の例では、どちらも数字は 1 から始まっていますが、
「初期値」をたとえば 30 にすることで、30 から始めることが出来ます。

※数字を 1 ずつ増やしていって、ファイルが存在しないところまでいったら譜面抽出処理を終えます。
しかし、そうではなく「2700番までいったら処理終了にしてほしい」ということもあると思います。
その時には「終値」を 2700 にしておけばいいわけです。

※「元の動画の fps」は、2章でちらっと説明しましたが、
フレームにばらす前の動画の fps を入力してください。



「次画面へ」で次の画面へ行きます。


「読み込まれるファイルの名前」のところに、この後の譜面抽出で
読み込まれるべきファイルの名前が正しく出ているかを確認してください
(間違っている場合は前画面に戻って適宜修正してください)。

その下にフレーム画像がどーんと出ていると思います。
ここでは、動画のフレーム画像中のどの位置にパネルがあるのかをソフトに認識させます。



まず 1 番パネル (回転していない譜面動画であれば左上です) の四角い枠を目で確かめます。

※「画像を明るくする」(下のチェックボックス)、あるいは「表示画像を変える」(左右キー) ことで
四角い枠をしっかり目で確認できる状態にしましょう。

そしたら、その 1 番パネルの四角い枠の左上頂点から右下頂点 (または左下から右上) にかけて
マウスをドラッグしてみてください。赤色の長方形が出てくるはずです。
マウスをドロップすると、赤い小さな正方形が 1 番パネルの中央付近にぽつりと残った状態になるはずです。
これで「1番パネルの中心位置」を認識させたことになります。

次に 4 番パネルについて同様の操作を行い (今度は緑色の長方形が出てくるはずです)、
次に 13 番パネル (青色)、最後に 16 番パネル (黄色) について同様の操作を行います。
現在どのパネルを設定中かは、画面左下につねに表示されています。

※ひとつ設定するごとに、左下の「現在設定中:」が自動的に次のパネルに移動しますが、
上下キーを押すと、手動で進めたり戻したりすることが出来ます (左下に注目!)

※上でちらっと言いましたが、左右キー押しっぱなしで、画面に表示するフレーム画像を
変えることができます (現在何番のフレーム画像が表示されているかは、
フレーム画像の左上端に黄色い数字で表示されています)。
いま設定しようとしているパネルがマーカーで光っているようなフレーム画像を選べば、
パネル位置をより正確に設定出来るのではないかと思います (下の画像のような感じで)。
※現在設定中の点を、他の 3 点に対して「平行四辺形」をなす位置に設定したい場合は、
「平行四辺形にする」ボタンを押してください (要は 4 点目の設定をサボるための
ボタンです)。

※「縦横のズレを揃える」ボタンを押すと、4 点の縦座標、横座標の微妙なズレが
解消されます。

※譜面動画によっては 90 度回転しているものもあるかもしれませんが、
その場合も、同様に設定することができるようになっています
(ただし、たとえば右に 90 度回転している動画の場合、
 1 番パネルはフレーム画像上で右上端に位置することに注意。
この時には 4番、13番、16番はそれぞれフレーム画像上では右下、左上、左下である)。


4 つの点を設定しようとしているうちになんだかわけがわからなくなってきた場合は、
一旦前画面に戻って、もう一度この画面に戻ってくるとよいかもしれません。
4 点とも正しく設定できれば、いよいよ譜面抽出開始です
(以降、抽出完了までは自動で進みます)。



抽出中は、フレーム画像を抽出している様子が表示されます。
現在処理中のフレーム画像が表示されているウィンドウ (フレームウィンドウ) と、
グラフが表示されているウィンドウ (グラフウィンドウ) が出てきます。

フレームウィンドウ上に描かれた黄色い小さな点が、各パネルのおよそ中心位置に
きていることを確認してください。
これらの各点の周囲の輝度を調べることによって、譜面の抽出は行われます
(黄色い点の周囲 5 dots x 5 dots の輝度 (r+g+b) の平均を調べています)。


グラフウィンドウには、横軸を時間、輝度の値を縦軸としたグラフが
表示されています。どのパネルについてのグラフを表示するかは、左上の
チェックボックスをつけたり消したりして変更することが出来ます
(デフォルトでは 1 番パネルのグラフが表示されていると思います)。

このグラフ上で、灰色の線が 2 本横に走っています。
上にある方の線は「オン閾値 (いきち)」、下にある方の線は「オフ閾値」を
示します。グラフがオン閾値を上回った時刻とオフ閾値を下回った時刻を求め、
それらの平均をとることで、そのマーカーの出現時刻として記録します。


※二本の灰色の線をグラフが大幅に「またぐ」状態になっていなければなりません (下の画像が、良い例です)。
もしそうなっていない場合は、フォルダ ini 内の extractsetting.txt をテキストエディタで開き、
offline (オフ閾値) と online (オン閾値) の値を修正して (デフォルトでは 350 と 400 になっています)、
もう一度譜面抽出をやり直してください。
全フレームを処理し終わると、抽出完了とダイアログが出て、
その後、抽出結果を示す横長のウィンドウが出てきます。

横長のウィンドウでは、左右キーで左右方向へ (一画面ずつ) 移動、上下キーで拡大/縮小ができます。
上の行から順に、パネル1、パネル2、…、パネル16 のノーツを示しています (4行ごとに区切り線が入っています)。
時間軸は右方向です。

※ 4x4 でない譜面の場合は、区切り線は「パネル列数」ごとに入ります。
また、パネル枚数が16枚を超えると画面からあふれだして表示されますが、仕様です。



この抽出結果を、作業用のデータ形式で「保存」しておきましょう。
横長のウィンドウで s キーを押すと、「保存/開く」ウィンドウが出てきます。
「出力モード」を「HSP3のvsaveデータ形式」にして、「保存する!」ボタンを押すと、保存できます。
(ファイル名の拡張子は .dat を推奨しています)

いま保存したファイルを「開く」ときは、以下のようにします。
横長のウィンドウで s キーを押すと、「保存/開く」ウィンドウが出てきます。
「ファイルを開く」の下のコンボボックスを「HSP3のvsaveデータ形式」にして、「開く!」ボタンを押して、
出てきたダイアログで開くファイルを選択してやれば、開くことが出来ます。



なお、この時点で保存したり開いたりしているデータは、
各ノートのタイミング (開始から何ミリ秒後に出現するか) の情報のみしか持っていません。
テキスト譜面として出力するためには、これに小節や拍を設定してやる必要があります。
これは4章を見てください (これも昔に比べるとラクになっています)。


※「小節や拍の設定を済ませてある」データを、18行程度上に記した方法で保存することもできます。
この場合、小節や拍の設定まで込みで保存されます (次に開いた時に、小節や拍の設定も一緒に出てきます)。

-------------------------------------------------------------------
4.小節・拍の設定、テキスト出力
-------------------------------------------------------------------
譜面に小節・拍を設定するには、まず、横長のウィンドウ上で、
「拍の設定に用いたい」範囲を選択してやる必要があります。


ノートを右クリックすると、青くなります。
もうひとつ別のノートを右クリックすると、そちらのノートも青くなり、
さらに二つのノーツの時刻の間の範囲が選択されます (背景が青くなるはずです)。
青いノートをもう一度右クリックすると、青くなくなります。

※青いノートが二つある状態で、青くないノートを右クリックすると、
青いノートのうち片方が青くなくなり、クリックされたノートが青くなります。

※Esc キーを押すと、青いノートが全て青くなくなります (範囲選択も解除されます)。



「拍の設定に用いたい」範囲は、テンポも拍子も途中で変化しない曲の場合は
曲の最初から最後までだと思います。その場合は最初のノートと最後のノートを
右クリックします。これで、全体が範囲選択されるはずです。

※最初や最後に「抽出時のミス」で抽出されたノーツがあることがあります
(たとえば、「ここからスタート!」や READY GO の文字列、曲終了時の演出などによって
誤抽出がおきやすい)。それらは除いて範囲選択しましょう。


※このソフトは、テンポや拍子の途中変化には対応していません。
曲の途中でテンポや拍子が1,2回だけ変化するような曲であれば「変化しない区間ごとに
拍の設定やテキスト譜面出力を行い、出力結果を手動で繋ぎ合せる」という方法がとれますが、
途中でテンポが変わりまくる曲に対してはこのソフトは役に立たないでしょう。

※たとえば曲の途中でテンポが1回だけ変化する曲をこのソフトで処理したい場合は、
まず、テンポ変化前までの部分を範囲選択し、拍の設定・テキスト譜面出力を行います。
次に、テンポ変化後から最後までを範囲選択し、拍の設定・テキスト譜面出力を行います。
最後に、出力結果のテキスト譜面を見て、それらを適切に繋ぎ合わせます。



範囲を選択したら、次に b キーを押します。
すると「拍の設定」ウィンドウが出てくるはずです。

ここで
・BPM
・拍子の分子
・拍内分割数
・1つ目の青ノートの小節内での位置
を設定します。

BPM は、前後 0.5 の範囲を拍づけ時に調査し、もっとも拍がノートにフィットするように
拍づけを行います。

「拍内分割数」は 1 以上の整数値で指定してください。それ以外は小数値が使えます。

「拍内分割数」は、たとえばノーツの大半が16分音符刻みのグリッドに乗っているんだけど、
数ノーツだけ 3 連符 (8分3連(12分音符) や16分3連(24分音符)) がある、という場合もあると思うのですが、
その場合も 4 にしてください (3連符は無視してください / 12 とかにはしないでください)。

具体例:
・Evans
	BPM 		185
	拍子の分子 	4.0
	拍内分割数	4

・Jailbreak
	BPM		250
	拍子の分子	4.0
	拍内分割数	3
	
・Shining Wizard の (8+7)/8 拍子のパート
	BPM		158
	拍子の分子	7.5 (15/8拍子を一小節と見なしている)
	拍内分割数	4

「1つ目の青ノートの小節内での位置」は、文字通りなのですが、
1つ目の青ノートが小節内 n 拍目になってほしい時に、 n-1 を指定してください。
4 拍子の場合は、0 以上 4 未満の値をとるはずです。

具体例:
「天体観測 [EXT]」の最初のノートを範囲の始点として選択している場合、0.5 を入力する。


すべて数値を適切に入力したら「拍をつける!」ボタンを押しましょう。
しばらく解析が行われるので、待ちます。
やがて、解析が終了し、拍線と、拍内分割線 (ひげみたいなやつ) が横長のウィンドウに表示されるようになります。

※解析中、最適な BPM と最適な位相 (最適な拍線のオフセット) を調査しています。
「最適な」というのは、さきほど設定した「拍内分割数」の単位を最小単位として、
できるだけ多くのノーツがその最小単位の上に綺麗に「乗る」ような、という意味です。



拍線 (と拍内分割線) がついたら、あとはテキスト譜面を出力しましょう。
s キーを押して、「保存/開く」ウィンドウを出します。
「出力モード」を「テキスト譜面」にして「保存する!」をクリックしてください。

※テキスト譜面についての説明は、以下で軽く説明しますが、より詳しい説明は
jubeat_analyser の説明書を参照してください。

※ 4x4 でない譜面を出力することも出来ます。


・テキスト譜面 (1列形式):
タイミングを丸数字の番号の大きさでそのまま表した形式
(たとえば 4 拍子で拍内分割数が 4 のときには @:1拍目、D:2拍目、H:3拍目、L:4拍目)。
創作譜面を作るときはこちらの方がラクかもしれない。

具体例:隅田川夏恋歌[EXT] のサビ(濁流)

LN□□
N□□□
□□□□
□□□□
---------
□□BF
□@DJ
BDHL
FJLN


・テキスト譜面 (2列形式 = jubeat_memo形式):
「配置」と「リズム譜」を分けて表した形式。リズムの確認がしやすい。

具体例:隅田川夏恋歌[EXT] のサビ(濁流)

@A□□  |−−−−|
A□□□  |−−−−|
□□□□  |−−−−|
□□□□  |@−A−|

□□AC  |@−A−|
□@BE  |B−C−|
ABDF  |D−E−|
CEFG  |F−G−|


・csvデータ形式:
全ノーツの時刻 (ミリ秒) をそのまま吐き出します。
拍線が設定されている場合は、BPM と hakuorigin (= 0 小節目開始の時刻)、
および、それらから安直に計算される各ノートの拍タイミングも出力します。



ここで出力されたテキスト譜面(1列/2列)は、jubeat_analyser で再生・プレイすることが出来ます。
※音楽ファイルの設定 (m=) やオフセットの設定 (o=) などは、
テキストエディタで譜面を開いて適宜修正してください。



※出力されたテキスト譜面の正確性については、何も保証できません。ご了承ください。

-------------------------------------------------------------------
5.FAQ
-------------------------------------------------------------------



●出力されたテキスト譜面に多少ミスがある
まぁ少しミスが出るのは仕方ありません。ただしミスがやたら多かったり、
そもそも拍づけがまともに行えないような場合は、下の項目を参考にしてください。

・拍づけの設定時に入力した BPM は本当に合っていますか?
・譜面抽出前の画面で、動画のフレームレート (fps) の値は正しく入力しましたか?

これらの少なくとも一方が間違っている場合、拍の設定を行っても
「拍が全然合わない」という結果に終わると思います。
拍づけの解析中、赤いグラフと青いグラフが表示されると思いますが、それが
どちらも途中で全くピークを示していない場合 (特に、赤いグラフがずっと平坦になっている場合) は、
上の二項目のうち少なくとも一方が間違っている可能性が高いでしょう。


・概して、BPM が遅い曲のほうがミスは少なくなるはずです。
また、拍内分割数が少ないほうがミスは少なくなるはずです
(拍内分割数の説明のところで既に述べましたが、(曲の大半を占める)16分音符と(曲のごく一部を占める)3連符の両方を
正しく認識させようとして拍内分割数を 12 とかにして拍を設定するのはかえって逆効果で、
拍内分割数は 4 にして拍を設定し、3連符はあとで手動で修正する、とかの方が多分やりやすいと思います)。

・ためしに1章の最後で紹介した動画 (さよならトリップ [EXT]) を使って譜面抽出・拍づけをやってみましょう。
この曲は BPM が遅いのでミスが出にくいはずです。
これでミスが多発 (目安としては 10 ノーツ以上 (開始時と終了時の演出による誤抽出は除いて))
するようであれば、途中で何かしらやり方を間違っているのではないかと考えられます
(試しに今やってみたら 1 ミスでした)。

(ちなみに「さよならトリップ」の BPM は 133 です)



●出力されたテキスト譜面中に「▲」がある
これは、テキスト譜面を出力する際に、マーカーがかぶらないように一小節をいくつかに分割して表示することが
あるのですが、このソフトでは二分割までしか対応しておらず、二分割してもマーカーがかぶってしまった時に
「▲」が出てきます。これは手動で修正してください。


●花マーカーである必要はどれくらいありますか?
他のマーカーの動画で試したことがないので、ちょっと分かりません…
マーカーによっては全然うまくいくものもあれば、駄目駄目な結果になるものもあるでしょう。
いちおう譜面抽出のアルゴリズムについては3章に書いてありますので、それからある程度
上手くいきそうなマーカーかそうでないかは判断できるかもしれません
(たとえばステルスマーカーで譜面抽出がうまくいかないことは明らかでしょう)。

●動画がブレていない必要はどれくらいありますか?
おそらく、かなりあります。



●出力された譜面を jubeat_analyser で再生すると、
譜面が後半にいくにつれてマーカーが 遅れてくる/進んでくるんだけど、どうすればいい?

テキスト譜面中の t= の値を調整することで解決すると思います。
なお、この FumenExtractor が出力するテキスト譜面には t= の値も出力されていますが、
そこには、拍づけの解析時に自動的に割り出した最適な BPM の値が書かれています。
しかし、この値には時々、意外と大きな誤差が伴っていることがあるようです
(これは、このソフトの問題というよりは動画の fps の値に伴う誤差のせいな気もしますが)。

とくに、このソフトが出力したテキスト譜面中の t= の値が
「整数値からやたらとずれていた」場合 (たとえば t=127.87 とか) には、
 t= の値を手動で「きれいな整数値」に書き換える (たとえば t=128 みたいに)、と
良いかもしれません (世の中にある大体の曲の正確な BPM は「整数値ぴったり」であるためです。
もっとも、正確な BPM がそもそも小数値である曲の場合には逆効果ですが…)。


English version of FumenExtractor is available.
If you want to use this program in English mode, 
make an empty file "eng.txt" in the folder "ini" and restart this program.
トップに戻る
inserted by FC2 system