7/12日記 ===== プログラム ===== * ライブコーディングツールの進捗。 ---- * こんな感じで目標と処理状況を書くのがわかりやすそう。 * [[2024:07:04|7/4の投稿]]でも書いてる部分の進捗。 * 処理状況についてもっかい書く - ファイル読み込み(最初は同期、可能なら非同期読み込み)\\ 完了。ファイルのセーブ状況検知実装予定、またMIDI設定を改造予定 - 組込み関数の追加\\ オーディオ・MIDI・スピード変更は実装完了。今後拡張予定。 - コンパイルしたデータとサウンドの譜面を紐づける実装\\ MIDI出力は実装済み。 - ADSR、フィルタの実装、加えてエフェクトの実装\\ まだ ---- * 周波数を直接指定するのは面倒なのもあり、番号から譜面を指定できるようにした。 * ただ、どの数値=C1という基準にしようか宗派は分かれるところ。 * 今回は理解しやすさの観点から、0=C1として、12*nでオクターブを理解できるようにしてみる。 * 勿論周波数やMIDIノートはそのぶんオフセットを行う。 ---- * まず譜面を検知したときにだけトリガーする→実装済み * MIDIデータ側の初期化処理→実装済み * MIDIデータ側の経過時間処理→実装済み * 譜面とMIDI出力の紐づけ→実装済み * とりあえず一通りは実装してみた。 * ただトラックの指定やメッセージの指定はまだ不足してるし、更に言うと更新スピードが思いっきり違うため、どこかで更新秒数の同期が必要になってきそう。今のところMIDIの方が調整しやすいためオーディオを軸にMIDIの再生時間を調整予定。 * もちろん時間管理を補正できればベストではあるけど、スタート地点はおろか数え方自体が違うのでそれも限界がありそう。 * であればどこかで同期を取るという方法に収束せざるを得ないかな。 * 今からMIDIをコールバックに対応するのもちょっと大変かと思うし。 ---- * imguiのコンボボックスがうまく動かない。 * 原因が不明で、本体のソースコード見たところ「結構よくあるけど原因が不明」みたいな書き方されてる。 * つまり解決法はなし! * 一応解決法みたいなのはあるけど、自作する量が多くなりそうなので時間もかかる。 * 結論としては、別の方法でMIDI接続ができるようにする。 * 具体的にはテキストで一覧出力、番号で指定した上で接続ボタンでMIDI接続という感じ。 * せっかくコンボボックス作ったのにと思ったけど、人の作ったフレームワークなので仕方ないし、であれば別の方法で、と割り切ることができた(こちらのコードの問題かと思ってデバッグで調べまくってた ---- * コンソール上の出力、Debugディレクティブで書くようにした。 * ってか今までやってなかったんかいと。 ===== プログラム2 ===== === 改善要とする事項 === * MIDIデバイスの選択方法の変更 * MIDI出力とオーディオ出力の同期(大まかに行う) * ファイルのタイムスタンプ検知 ---- === 優先度少し下げた追加予定機能 === * シンセ機能の充実 * MIDI絡みの組み込み関数の機能増強 * 譜面の機能拡張 * MML機能の実装 *