6/27日記 ===== その他 ===== * 月曜休み予定だったのがうっかり休めなかったので強引に今日休んだ。 * 元々体力が足らないのとかでこのタイミングだったが、後にしようとしても適当な日がないので今日になったという。 * ただ体調崩して午前~午後で思い切り寝ていたので、結構ギリギリなタイミングだったなと思った。 * おかげで体調崩さずにプログラム書くことができた。 ===== プログラム ===== * まずライブコーディングツール・re:code開発再開のために色々準備してた。 - dear imguiのコンパイル環境構築(適当に使えるglfw+OpenGL3で実装予定) - miniaudioの組込み - Miniscriptの組込み * そこまで難しいことはなかった。 * miniaudio、ウィンドウの状態と非同期で動いているため、ウィンドウをドラッグして止まるみたいなのがなくて大変使い勝手がいい。ただ後述の通りバッファ登録周りを工夫しないとダメそう。 ---- * 前のバージョン(α版)ではテキスト処理と音楽をどうやって組み合わせたらいいのか悩んでいたけど、今回はテキストファイル編集は別のソフトで行ってくれという方針なので、その分少し楽ではある。(なのでC++で実装予定) * ただエディタが一緒になっているのも楽ではあるので、エディタ組込みバージョンも同時進行で作りたいところ。 ===== プログラム2 ===== * どうもminiaudioとしては、勝手にバッファを読んだりして勝手に書き込むのを前提に作られてる様子。 * となると、今までの「譜面を読んで再生」という部分についても専用にインターフェース的な構造体を作成して更新するという方法が必要そう。 ---- * サイン波を出力するインタフェース(今回は構造体)の中身確認してみたところ、それほど問題なく改造できそうな気がしてきた * 数日かけて単純に自前の波形、もしくはプログラム上の譜面から波形を書けるようなプログラムを書いてみる。 ---- * 以上を踏まえて、今日時点で一度Waveform(基本波形を出力する構造体)をもう1種類作るフリして魔改造を施して、作った構造体経由で時間管理することにした。(書いてて謎な内容だが) * 要は基本波形が出力できる構造体と関数を新規に用意したヘッダに作成して、その中身を改造し始めたということ。 * 試しにタイムスケジュールを自前管理にして波形にアクセスしてみたところ、ほぼ問題なさそう。波形自体は他の関数からの参照のため、完全には手が出せてないが、概ね問題ない。 * 今後波形の変調やシーケンサからのデータ取得を行って、ライブコーディングツールとしての体裁を整えていく。 * なので作った関数経由でシーケンスにアクセスする等の対応が必要。 * あとコールバック関数で動いてるので、シーケンスを参照する場合1個の領域にアクセスせずにダブルバッファみたいに作る必要がありそう。こちらはMiniscript側の問題なので工夫すればどうにかなりそう。 * 初めて触るライブラリなのにハック前提で使うことになるとは思わなかった。