7/5日記 ===== プログラム ===== * 進捗 - ファイル読み込み(最初は同期、可能なら非同期読み込み)\\ 完了。今後の拡張を見込んで検証中の項目あり。 - Miniscriptプログラムのコンパイル\\ 機能自体の確認は完了。ツール上の動作については検証中 - 組込み関数の追加\\ 未済 - コンパイルしたデータとサウンドの譜面を紐づける実装\\ 未済 - ADSR、フィルタの実装、加えてエフェクトの実装\\ 未済 * https://github.com/jameswynn/simplefilewatcher * https://github.com/SpartanJ/efsw * こっちはアクティブ。(どうも1番目のフォークらしい) * 使ってみたところ、「フォルダの監視」のためのライブラリというのが分かった。 * そもそも、ファイル単体の監視機能というものはなく、どうもファイルシステム上のフォルダを監視して、動きがあったら通知する、というのが殆どだった。 * なので、ファイル監視を想定した場合、一覧取得してどのファイルが更新されてそれが目的のものかを調べる、みたいなことをしないと、どうも無理な模様。 * もしくは.net frameworkの機能使って取得してしまうか、別のライブラリや機能で特定ファイルに毎回アクセスしてタイムスタンプを検出するとかになる気がしてる。 * ということでもうちょっと単純な方法で実装予定とする。 * https://hirokio.jp/programming/cpp-win32-findfirstfile-filetime/ * 特定のファイルの情報だけ見れればいいとして1秒ごととかでファイル取得してみようかと。(ファイル取得もディスクアクセスが走るかと思うしそもそもタイムスタンプもディスクアクセスして取得すること考えると負荷高い想定でいたほうがいいかなと) ---- * まずタイムスタンプのみ取得する関数を作成して、タイマーはウィンドウとかで取らせることにした。 * いざとなったらサウンドのコールバック上に定義するという荒業もある。(ノイズが出て危険かもだけど * 必要があればスレッド立てるけど、その必要もなさそう。 ---- * ライブラリをいっぱい組み込んだ結果として、ビルドした後の容量が1MBを超えてしまった。まぁ仕方ないかな。 * 他のライブラリもdllが存在するものもあるのでそちらに切り出すのもひとつかなと思った。 ===== プログラム2 ===== * そろそろというか明日くらいにシーケンサを作る予定だけど、シーケンサの走査方法を「バイト単位にするのか」「秒数単位にするのか」を少し悩んでる。 * 実際のところどちらでもできてどちらもレンダリングのためのデータ変換が必要になるんだけど。 * バイト単位で管理する方がデータの全長を決めるのは楽だと思うが。 * 一日経過して寝起きで考えてみると、まとまったWavデータの単位で更新されていくので、バイト単位で更新しておいたほうがいいかもしれない。(プロトタイプ版はバイト単位で管理していた