SSブログ
自作ソフトウェア ブログトップ

ポータブルプレイヤがiPodになった [自作ソフトウェア]

前に落として修理したその前のプレイヤをやっぱり落として壊した東芝のgigabeat MES60Vが,明らかに挙動が不審になってきました。 電源の消費は早いし,再生出来なくなったりするし。

というわけで,代替プレイヤを探したのですが,Windows Media Playerから送るタイプで大容量な物はワンセグが付いていたりと大きい……。 なので,WMPからを諦め,iPod Classicの80GBモデルを購入しました。


さて,WMPではwplを使ってファイルを管理していたのですが,iPodを使うということは,iTunesを経由せねばなりません。 しかし,iTunesはwplに非対応な上,m3uはWMPにしろiTunesにしろWindows-31jしか対応していないので,Shift_JIS以外の文字を扱えません。 さらに,wplを直接iTunesに取り込むためのソフトウェアもなさそうです。

しょうがないので,wplをiTunesに取り込み可能なxmlに変換するソフトを作成しました。

ソースはVisual Studio 2008 Standard Edition用になります (Pro以上も可。Expressは不明)。また,バイナリは.NET Framework 3.5必須です。

使い方は,

>WplToITunesXml [出力ファイル名] [wplファイル名]

となります。wplファイル名は複数指定可能で,ワイルドカードも利用可能です。制限事項は以下の通りです。

  • カレントディレクトリのwplファイルについても,カレントディレクトリ.\の指定が必要になります。
  • ショートファイル名で取り込みます。これは,ロングファイル名では一部のファイルについて,取り込みに失敗するためです。
  • チェックは,WMP 11のwplを変換し,iTunesの7.6.2.9で取り込むことのみを行っています。
  • このプログラムの実行の結果について,一切の責任を作者は負いません。

SmfToAss 1.0.1.0 [自作ソフトウェア]

SmfToAssのアップデートで書いたとおり,SmfToAssをアップデートしました。

  • SmfToAss
    • バイナリ (46230バイト / MD5:d2d0edfed9c9cfe9987e4dd179482e16)

変更点

  • SmfDump.exeの追加。SMFの中身をある程度は読める形で表示します
  • 署名に使うキーを一本化。ライブラリに使っていたキーを使って署名しています
  • オフセット機能を追加
    OffsetByTick
    Assへ出力するときに加算するTick数を指定します
    OffsetByTime
    Assへ出力するときに加算する時間 (単位:cs)を指定します
    基本的には,OffsetByTimeが使いやすいでしょう。
  • 既存のxmlファイルがある場合,SmfToAssがオプションデータをそこから持ってくるようにした
  • 出力するAssのスタイル名を,全てのNormalからTrackXXに変更。ただし,SmfToAssには出力部分にバグがあるのがわかっているので,直後にXmlToAssを利用する必要有り

SmfToAssのアップデート [自作ソフトウェア]

SmfToAssですが,大麻帆良祭 DVDのハッピー☆マテリアル (メドレー)用のものを作ろうとしたら撃沈。 16K通りもDiff結果が出てしまったのが原因でした。

なので,最初から1通りのみをDiff結果とするように変更し,またオフセット機能(すべてをn tick/n csずらす)を追加したものを作成しました。後でアップします。

大麻帆良祭DVDといえば,「聖なる空の下で」に,前使ったカラオケ用のASS (250csずらしたもの)を合わせてみたところ,サビで「聖なる空に抱かれ……歩いてゆきたい」と2回とも歌っていないですな……。 これは……修正ではない……ですよね……。 なかなかのシンクロ具合ですな。


SmfToAssの使い方 [自作ソフトウェア]

SmfToAssの使い方です。

必要な物

  • SmfToAss.zipに含まれるファイル一式(*.snk除く)
  • .NET Framework 2.0ランタイム (Code Analysis系の関係で,動かなかったらごめんなさい。mscorlib.dllに入っているので,問題ないはずですが……)
  • 歌詞を含むSMF(.mid)ファイル。歌詞に改行コードを含めないようにしてください
  • 歌詞ファイル
  • VobSub
  • VsFilter
  • 合成先となるビデオファイル

使い方

  1. まず,SMFファイルを引数にSmfToAss.exeを実行します。すると,
            トラック1を処理中 ...
                    →対応する歌詞ファイルがみつかりません。
    のような表示が出ます。
  2. 上記1で「みつからない」と出たトラックごとに,歌詞ファイルを分割します。A.midに対応するトラック1の歌詞ファイルはA.01.txt,トラック2の歌詞ファイルはA.02.txt……のようになります。トラックがわかっている場合は,上記1の過程を飛ばしてこの行程をおこなってかまいません。
  3. 再度SMFファイルを引数にSmfToAss.exeを実行します。すると,assファイルの他にxmlファイル,そしてA.Timing.01.txtのようなファイルができます。これらは,以下のような内容になっています(ファイル名は元がA.midの場合)。
    A.ass
    Advanced SubStation形式のカラオケ用ファイル。このまま利用しても良いですが,カラオケには向かないデータになっていると思います。
    A.xml
    Assを再作成するための情報ファイル。Optionsを弄ると,表示のタイミングを変更できます。また,タイミングがおかしい場合の調整も可能です。ときたま,歌詞ファイルとSMFファイルの歌詞の間で,間違った対応を作成する場合があります。
    A.01.Timing.txt
    SMF歌詞のタイミング情報を含んでいます。Assファイルを自分で弄るための参考資料です。
  4. 必要に応じてXMLファイルを弄ります。この時,TickToTime要素の中身を変更しないようにしてください。
  5. 今度はXMLファイルを引数にXmlToAss.exeを実行します。先ほどのXMLファイルに合わせて,Assファイルが再生成されます。

XML簡易リファレンス

ShowTimingByTick
Tick単位で,歌詞を表示するタイミングをずらします。拍単位で指定するために使います。ここで指定したTick分だけ,歌詞の表示開始が早まります
ShowTimingByTime
10ms単位で,歌詞を表示するタイミングをずらします。ここで指定した時間だけ,歌詞の表示開始が早まります
HideTimingByTick
Tick単位で,歌詞を消去するタイミングをずらします。拍単位で指定するために使います。ここで指定したTick分だけ,歌詞の表示終了が遅くなります
HideTimingByTime
10ms単位で,歌詞を消去するタイミングをずらします。ここで指定した時間だけ,歌詞の表示終了が遅くなります
WipeTimingByTick
Tick単位で,歌詞をワイプするタイミングをずらします。拍単位で指定するために使います。ここで指定したTick分だけ,歌詞のワイプ開始・終了が早まります
WipeTimingByTime
10ms単位で,歌詞をワイプするタイミングをずらします。ここで指定した時間だけ,歌詞のワイプ開始・終了が早まります
Line
一要素が一行分のデータに対応します。
Lyric
表示される歌詞データです。空白文字は%0020に,%は%0025に置き換えられています。なお,%0009などとしても水平タブに置き換わったりはしません。
Timings, Timing
Lyricの表示やWIPEのタイミング制御用データです。Timingが元のSMFファイルの音一つにあたる要素です。Start, Endは発音開始および終了のタイミングで,単位はTickになります。また,Timingの要素はSMFの音に対応する歌詞です。

他はAssファイルを直接弄ることによる修正でも問題ない部分なので割愛します。なお,TickとTimeではTickが先に適用されます。


MIDIファイルからAssを作成する [自作ソフトウェア]

ようやくまともに出せる版が完成。とはいえ,ベータ版程度のできですが……。

  • SmfToAss
    • バイナリ (42382バイト / MD5:89366619fbc6028ac926b6f85d23074f6)

今回はソースなしです(というか,これから手を入れる予定)。なお,公開キーが二つ付いていますが,

YuO.Utilities.snk
YuO.Utilities.dllおよびYuO.Utilities.Diff.dllの公開キー
SmfToAss.snk
その他のdll/exeの公開キー

です。まあ,役には立たないでしょうが……。


テンポ計算機 [自作ソフトウェア]

あるとまれに便利なので,作ってみました。

テンポに合わせてスペースバーを押すと,テンポがわかるという小物です。

  • プログラムを実行したことおよびその結果に対して,責任を私に要求しない
  • ソースコードが汚いことについての文句を私に言わない

の2点さえ守ってもらえれば,自由に使ってよいです。何かを血迷って,このプログラムのソースコードを使ってプログラムを書いた場合でも,連絡不要ですし,そのプログラムのライセンスに関して制約は存在しません(ガチガチに固めようが,GPLだろうが……)。


[CROSS WORLD] キーボードで「歌をうたおう!」 [自作ソフトウェア]

CROSS WORLDのゲーム中に,「歌をうたおう!」というミニゲームが入っています。 まぁ,キャラクターのイメージソングにあわせてアイコンが流れてくるので,タイミングよくクリックする,というゲームです。 普通はマウスで行うの*1ですが,せっかく家にはMIDI入出力端子のあるキーボードがあるのだからと,こんなプログラムを作ってしまいました。

起動すると,監視する入力MIDIデバイスをきいてくるので,対象となるMIDIデバイスで「はい」を選択します。 あとは,チャネル0のノートオンメッセージを受けると左ボタンの押下を,チャネル0のノートオフメッセージ*2を受けると左ボタンの解放をそれぞれシミュレートします。 タスクトレイに出現したMという文字のアイコンをクリックするとこのプログラムは終了します。

でもって,このプログラムを使っての結果。

ターゲット
パティ/歌をうたおう!2 (曲:Yes! Yes! Yes!)
マウス入力
およそ16000点
キーボード入力
10000点弱

わざわざ,初めて,MIDI入力を使うプログラムを作っておきながら……マウス入力に完敗です。 ちゃんと練習してやれば越え……られるのかなぁ……。

  • *1 というか,ポインティングデバイス以外の入力があろうとは,制作者も考えてなかろう。
  • *2 ベロシティ0のノートオンメッセージを含みます。


nice!(0)  コメント(2)  トラックバック(0) 
共通テーマ:ゲーム
自作ソフトウェア ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

この広告は180日新規投稿のないブログに表示されます