ユーザ用ツール

サイト用ツール


2024:06:27

文書の過去の版を表示しています。


6/27日記

その他

  • 月曜休み予定だったのがうっかり休めなかったので強引に今日休んだ。
  • 元々体力が足らないのとかでこのタイミングだったが、後にしようとしても適当な日がないので今日になったという。
  • ただ体調崩して午前~午後で思い切り寝ていたので、結構ギリギリなタイミングだったなと思った。
  • おかげで体調崩さずにプログラム書くことができた。

プログラム

  • まずライブコーディングツール・re:code開発再開のために色々準備してた。
  1. dear imguiのコンパイル環境(適当に使えるglfw+OpenGL3で実装予定)
  2. miniaudioの組込み
  3. Miniscriptの組込み
  • そこまで難しいことはなかった。
  • miniaudio、ウィンドウの状態と非同期で動いているため、ウィンドウをドラッグして止まるみたいなのがなくて大変使い勝手がいい。ただ後述の通りバッファ登録周りを工夫しないとダメそう。

  • 前のバージョン(α版)ではテキスト処理と音楽をどうやって組み合わせたらいいのか悩んでいたけど、今回はテキストファイル編集は別のソフトで行ってくれという方針なので、その分少し楽ではある。(なのでC++で実装予定)
  • ただエディタが一緒になっているのも楽ではあるので、エディタ組込みバージョンも同時進行で作りたいところ。

プログラム2

  • どうもminiaudioとしては、勝手にバッファを読んだりして勝手に書き込むのを前提に作られてる様子。
  • となると、今までの「譜面を読んで再生」という部分についてもIFを作成して更新するという方法が必要そう。
  • Re:codeのプログラムは元々「特定のトラックの発音ON/OFFは再生時間依存にして」おり、再現性のある再生方式にはできてるかと思うけど、元々シングルスレッドで動くのを前提にした実装で作っていたので、オシレータの状態を残す等色々調整の必要がありそう。
  • 逆に再現性のある方式にできないと辛いかなとは思った。
  • 解決法として、バッファを書き込むとわかった時点でその分のバッファを作成するようにしないと辛そう。これはバッファ書き込みタイミングで内部で参照した時点で生成しておくのが安全そう。

  • あとは専用のIF(構造体)をもってバッファを埋めるみたい。
  • サイン波を出力するIFの中身確認してみたところ、それほど問題なく改造できそうな気がしてきた
  • 数日かけて単純に自前の波形、もしくはプログラム上の譜面から波形を書けるようなプログラムを書いてみる。

  • 以上を踏まえて、今日時点で一度Waveform(基本波形を出力する構造体)をもう1種類作るフリして魔改造を施して、作った構造体経由で時間管理することにした。(書いてて謎な内容だが)
  • 要は基本波形が出力できる構造体と関数をヘッダとして作成して、その中身を改造し始めたということ。
  • 試しにタイムスケジュールを自前管理にして波形にアクセスしてみたところ、ほぼ問題なさそう。波形自体は他の関数からの参照のため、完全には手が出せてないが、概ね問題ない。
  • 今後波形の変調やシーケンサからのデータ取得を行って、ライブコーディングツールとしての体裁を整えていく。
  • なので作った関数経由でシーケンスにアクセスする等の対応が必要。
  • あとコールバック関数で動いてるので、1個の領域にアクセスせずにダブルバッファみたいに作る必要がありそう。こちらはMiniscript側の問題なので工夫すればどうにかなりそう。
  • 初めて触るライブラリなのにハック前提で使うことになるとは思わなかった。
2024/06/27.1719520193.txt.gz · 最終更新: 2024/06/28 05:29 by machiaworx