未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

気づいたらかなり久しぶりの記事になってしまった話

なんか色々と実装をしながらBreaking Badを見たりしているうちに,どうやらほぼ前回投稿した時点からほぼ2週間ぐらい経ってしまったらしい.

 

ここ2週間ほどは,ギターの音声信号をMIDI化する前に,ある程度データを集めておきたかったので,ギターの練習ソフトを開発することにしてずっと開発をしていた.

簡単に言ってしまえば,PowerTabEditorの音ゲー版みたいなもので,RockSmithと似たようなものに近い.一応,研究背景としては,RockSmithのWindows版のレイテンシが酷すぎるので,オーディオ・インターフェースに特化したソフトウェアを開発することで,快適なギターライフを送れるとかどうとか.

実装の目星は付いていて,どのように作るかまで頭のなかに入れながら開発を進めていたのはいいものの,楽譜データの読み込みがあまりにも遅すぎて,様々な場所で仕様変更を余儀なくされていた.このままだと快適とは何だったのか,ということでゲームっぽさをバッサリ切ることにした.ゲームっぽくするから余計なファイルの読み込みが増えてしまう.

ハードディスクは最近のものでシーケンシャルな読み込みで50MB/sぐらい出ると思う.しかし,ランダムアクセスはあまり速くないので,最悪見積もって5MB/sぐらいと想定すると,1MBぐらいあるファイルの読み込みに250msぐらいかかってしまう.フォルダの中に100個ぐらいファイルがあるとさらに遅くなる.

このことを想定していなかったせいか,音楽ファイルの選択画面で,選択している音楽を切り替えた時に1秒ぐらいの遅延が発生してしまった.本当に何が快適だったのか.

 

この作業はBreaking Badを見ながらやっていたりしてほぼ見ていた.見終わった感想としてはパーフェクトだった.全部見ようとすると約50時間ぐらいかかるものの,1日平均で6話ぐらいのペースでずっと見てた.割りと時間をかけていたかもしれない.久しぶりにいいコンテンツに出会えて本当に満足してる.

 

ということもあり,2週間ぐらいずっとBreaking Badを見ていた.ギター練習ソフトをバッサリ切った影響で一時的にやる気がなくなっていたものの,艦これのデータベースをJSONにしたり,SQLite3に突っ込んだりしているうちに,だんだんとやる気が戻ってきた.

今はJSONのデータをC++で復元するいい方法を試行錯誤している.SQLiteを使えばクエリも使えるし便利な一方で,頑張ってもあんまり速度が出ない.

select K.id from Kanmusu K where K.name = "那珂" limit 1;

 このクエリでも,インデックスをnameに張ったとして,1ミリ秒ほどの時間をかけてしまう.これだけで全体の処理の6~7%のリソースを食われるわけだからたまらない.

しょうがないので汎用性があまりないものの,艦これ用のORマッパーをいちいち書いてる.そうするしか方法がないのでしょうがない.

 

艦これでそれなりに遊んだら,たぶん調度良く未踏の日なので懇親会に行ってる.普通に懇親会やるだけ.

 

未踏の日があけたら,ギター練習ソフトの譜面を作るためのソフトを作ろうかなと思ってる.譜面がないと遊べないのは困るので,とりあえず譜面を作るソフトが先かなと.

GreenDayの譜面を作ろうかと思ったけれども,リズムの揺らぎが激しすぎて音符では表せない問題があり,Power Tab Editorからの移植は無理だと判断した.なので,楽曲をビート解析して,絶対的な位置に対して譜面を置けるようにしたい.

 

15~17日ぐらいから論文を書き始めようかなと思う.ASIOの実験をもう少し発展させたものにしようかなと.春休みは短い.

今までDC2のために時間を割くべきかどうか迷っていたけれども,研究費として支給される100万円が割りと自由らしいので,研究費を得るためにDC2取るのもありかなと思ってきた.DC2は基本的に課税されるので,所得が残れば確定申告出さなきゃいけない部類だったのであまり考えてはいなかった.給付型の奨学金だと非課税なので,奨学金奨学金で美味しいことがある.総額で見ると奨学金も限界があるので,DC2受けたほうがいいかなと思った.

でも,採択率がとても少ないのでなかなか困りますね.奨学金をあと3年借りると,月々の返還額が5万円ぐらいになりそうなのでつらい.