ユーザ用ツール

サイト用ツール


2024:07:08

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


7/8日記

プログラム

  • ライブコーディングツール、まずはテスト的にシーケンス切り出し処理を実装してみる。
  • 現在作成中のツールで実装するのでもいいけど複合要因で「どこが間違っているのか分からない」ケースが発生しうるので、できる限り最初から切り分けて考えられるようにした。
  • Valueクラスを基準にして再帰関数を作って調べられるようにした。

  • せっかくC#での実装を以前に作っているので、同じことするのであればC++上で再現してみることにした。
  • まずnote_info構造体を作り、複数の情報を保存できるようにしておく。
  • 理由は「音程」「譜面の長さ」「譜面単位の現在の再生位置」「ネスト構造が作られているかどうか」等、意外と判断する情報が多いから。
  • 移植は終わって、まともに動いてるよう。
  • 後述の問題があって、確認するのは後になりそうだが。

プログラム2

  • 問題勃発。
  • 仕組み上、グローバル変数を別途保存領域に確保することが困難で、これをどうしたらいいのか、という問題が発生した。
  • どうもMiniscriptはVMを確保しており、変数はそのVMの中に保存領域を確保している。
  • よって、staticなメモリ領域を確保しても、Miniscriptで利用する型を保存しても基本的にはアドレスしか保存されておらず、実体の保存および参照が正常に行えないことになる。
  • ただ、VM上の値を見るという形ではあり、機能上VMにグローバル変数用のマップを持っており、この領域に保存と参照が可能になっている。
  • 今回の形式ではコンパイルと実行を同時に行う事から、再コンパイル時にグローバル変数も最悪消えずに済みそう。
  • この調査のためにDiscordを延々調べてようやくたどり着いたという。すげえ時間かかったわ。
  • あとでMiniscriptのWikiに情報アップしておく予定。組み込みする人だと必要になると思うし。
2024/07/08.1720459455.txt.gz · 最終更新: 2024/07/09 02:24 by machiaworx