BMX2WAV(と他ツール)開発日記

主にBMX2WAVの開発についての記録ブログ

2018-01-01から1年間の記事一覧

記録

年末は忙しくて寒いよう その合間にでも勉強でもしようと D&Dを(受ける側じゃなくて)送る側を以前やったソースを見たがスッカリ忘れており勉強しなおし。

記録

調査名目で最新のBMSプレイヤーぐらい触っておこうかなと LR2はデファクトスタンダードだったみたいだけど作者どっか行ったみたいだし流石に流石に beatorajaはJavaのランタイムが必要らしくJavaのランタイムとか入れる気がしなかったので無し Bemuseはブラ…

記録

アイテムIDリストについて引き続き必要そうなモノを実装する。 勉強を進めていくうちに便利な関数を発見して実装がかなりスッキリすることに。

記録

アイテムIDリストについて今回使う範囲でクラスとしてまとめて実装した。 元々のI/Fが結構複雑だったのでまとめるのに結構苦労した。

記録

フォルダー一覧を出すためのアイテムIDリストというのを勉強勉強。 使いやすくするためにクラスでまとめる必要あるな。

記録

忙しくてあまり進まないでござる ツリービューでフォルダ一覧(エクスプローラの左側的なやつ)を表示する勉強をした。

記録

Squirrel の設計実装を進める進める 今考えている一部のGUIがBeMusicSeekerと言う物に近いのでは?という疑問が それで行けるなら実装する必要が無いので楽できるが。 LR2必須っぽいのがちょっとアレか 複数BMSをD&Dとか出来るのかな? プレイリストを食える…

記録

今日はforkした方で新データ形式対応を実装 完成して普通のBMSなら普通に変換出来ることを確認 “【Freak《Show】Down》”を変換してみるとエラーに 調べてみると、どうやら分解能が8垓ぐらい必要みたい(ちなみに符号無し64bitの最大値は1844京ぐらい) 流石…

記録

寒い寒いでPCの前で縮こまって、だらだらなにもしなかった。 とりあえず新データ形式の為にforkをしてやってみることにした。 https://hitkey.nekokan.dyndns.info/diary1812.php#D181214 https://hitkey.nekokan.dyndns.info/diary1812.php#D181215 お返事 …

記録

同じタイミングに同じWAVが存在する場合は1つしか鳴らさない設定とかあれば良さそう if に来た時に行数表示してこのif成立させる?見たいに聞くのはアリか。 https://hitkey.nekokan.dyndns.info/diary1812.php#D181213 お返事 現在は同じ小節の全ての各チャ…

テスト版2

http://childs.squares.net/program/temp/bmx2wav_new_core_test1812120017.zip データの重ね合わせの件は失念していなかった。 旧バージョンは上書きしてたけどv2では検出しようとしてロジックを少し変えていた それにバグがあったので修正した ifのネスト…

記録

Core(変換部をこう呼んでいます)はだいたい出来たので次ぎの部分へ スクリプトの Squirrel の基礎となるクラス群のバインディング作業がまずあるかな アプリでのスクリプト利用によるあーたらこーたらは色々考えてまとめている最中 GUI のデザイン等も同時…

テスト版

64bit版の作成でかなり手間取る 俺ライブラリの修正が結構な量に ファイルのドラッグ&ドロップに関して Windows のバグがありそれに対処にかなり悩む 以下がテスト版。32bitと64bit入り。 http://childs.squares.net/program/temp/bmx2wav_new_core_test1812…

記録

GUI の細かい微調整等 ノーマライズがおっそいのでチューンしてみるも上手く行かず。

記録

GUIをガッと作って変換だけならできるように 64bit化と最低限のエラー処理はまだなので明日。 そしたら公開できそうか? f:id:temtan:20181207000242p:image

記録

Converter実装 色々調査するとパーサ周りがちゃんとしてなかったのでそれを修正 ロングノート周りを忘れてたのを実装。 テストで L9とかAlcubierre Drive(ワープ版)を変換出来ることを確認 やっぱり変換が上手く行った時はテンションあがるわな 流石にAlcub…

記録

Converterの実装の続き WAVE読み込みとWAVE合成を実装 試しにBMSを変換してみる 何かが悪いのかちゃんと合成されてない テンポ周りかな? そんな感じで今日は時間切れ。

記録

Converterの実装 とりあえずは細かい設定は無いが変換出来るまでを目指す 処理部分をメンバ関数でいくつか細かくして読みやすくした 以下は実装済み BMSのパース部分(パーサ呼ぶだけだけど) BPM、拡張BPM、STOPシーケンス、LNOBJの検証、数値変換 ノーマラ…

記録

とりあえず変換器周りのファイルのガワだけ作成 旧ソースを眺める ざっと処理を分けると BMSファイルのパース WAV読み込み BPMとSTOP読み込み WAV合成 調整 な感じで分けられそう それでも結構色んな事をやっていてどうにか簡素にならんか考え中

記録

wavファイルoggファイル読み込み部分が完成 実際にwavファイルとoggファイルを読み込んでwavファイルとして出力して問題無いかテスト いくつかバグがあったが直して終了 ついでにoggファイルの出力も実装。テストしてちゃんと出力出来るのを確認。 次の変換…

記録

今日はwavファイルoggファイル読み込み絡みをガッツリやった。 だいぶ良い感じに整理できたと思う。 ほぼ終わった感じ。 次は変換器か。

記録

wavファイル読み込みをやる 旧ソースから色々弄ってちょい不満だった部分を直したり 旧ソースを眺めてたらバグを発見。でもまあ影響は小さい部分かな。 ローパスフィルタなどの信号処理関連の記憶が飛んでいるのでベースになる理論が理解出来なくてちょい困…

記録

WAVファイル読み込み部を眺める 結構今のセンスとは大分違うので読むのに苦労する と同時に、やることは同じだけど書き方を今のセンスのに変えないと ここは時間がかかる箇所なのでパフォーマンス(を改良しやすさ)も考えないと 例外の設計周りもそろそろ考…

記録

Parserが一段落したのでちょっとゲームしたり寝てたりしてた。 ちょっとエディタ(xyzzy)の設定を弄ったら起動できなくなってしまったので xyzzy を最新版にアップデート それだけで1時間以上とやる気をだいぶ取られる Waveクラスの実装 ほぼコピペかと思った…

記録

今日は旧ソース読んでて終了。 旧ソースほぼコピペかと思ったが内部で扱うデータを64bitにするので全体的に見ておかないと後で苦労しそう。 あとC++11以降の機能も入ってないので結局は結構書き直しはするっぽい。

記録

チャンネルデータ部の評価部の実装完了 Alcubierre Driveもちゃんとパースして目的のデータが入ってるぽいのを確認 1小節あたりの分解能が最高で11520とかあってヤバい けど、全体の分解能は19584000で行ける筈っぽくて558桁にもなるのはバグ? 小節長変更と…

BMX2WAV の次期バージョンはいつ出来るのか

コメント頂きました。 http://bms.g.hatena.ne.jp/temtan/20180106#c1542377295 期待して待ってる人が居るってのはとてもうれしいことですね。普通に励みになります。いつ出来るのかって話は何をもって完成とするのかって話にもなりますが、まあ適当に。です…

記録

小節長変更はおそらく小節クラス(Bar)に比率だけ取っておいて、実際のWAV合成の再の時間計算の時に掛ければ大丈夫な筈 うーん多分大丈夫な筈なのだけどちょっと怖い 元々は小節長変更の際に長さを調整していたのは分解能1個分が常に拍に対して一定であること…

記録

チャンネルデータの評価部分に着手 ここで分解能絡みの話になるので旧ソースを見て復習する が、全然判らない。ソース見ても何をやっているんだこいつとか思った。 まあずっと眺めてたらなんとか理解できるように。 分解能を小節毎に変えて持てるようにした…

記録

小節長変更の評価部分を実装。 Channel クラスと Buffer クラスの整理 Channel クラスは重複(複数行要するに01チャンネル)を持たない形式に その代わり Bar クラスに bgm(01 チャンネル)専用のデータを持ってそれを処理することに それに伴い Channel ク…