2024:07:08
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
2024:07:08 [2024/07/09 02:24] – machiaworx | 2024:07:08 [2024/07/12 06:45] (現在) – machiaworx | ||
---|---|---|---|
行 2: | 行 2: | ||
===== プログラム ===== | ===== プログラム ===== | ||
+ | * 進捗 | ||
+ | |||
+ | - ファイル読み込み(最初は同期、可能なら非同期読み込み)\\ 完了。ファイルのセーブ状況検知・UI改善予定 | ||
+ | - Miniscriptプログラムのコンパイル\\ 完了、ツール上も動作を確認 | ||
+ | - 組込み関数の追加\\ 未済、機能検証中 | ||
+ | - コンパイルしたデータとサウンドの譜面を紐づける実装\\ 未済 | ||
+ | - ADSR、フィルタの実装、加えてエフェクトの実装\\ 未済 | ||
+ | |||
* ライブコーディングツール、まずはテスト的にシーケンス切り出し処理を実装してみる。 | * ライブコーディングツール、まずはテスト的にシーケンス切り出し処理を実装してみる。 | ||
* 現在作成中のツールで実装するのでもいいけど複合要因で「どこが間違っているのか分からない」ケースが発生しうるので、できる限り最初から切り分けて考えられるようにした。 | * 現在作成中のツールで実装するのでもいいけど複合要因で「どこが間違っているのか分からない」ケースが発生しうるので、できる限り最初から切り分けて考えられるようにした。 | ||
行 14: | 行 22: | ||
===== プログラム2 ===== | ===== プログラム2 ===== | ||
- | * 問題勃発。 | + | * 午後に問題勃発。 |
- | * 仕組み上、グローバル変数を別途保存領域に確保することが困難で、これをどうしたらいいのか、という問題が発生した。 | + | * 仕組み上、MiniScriptから変数を別途保存領域に確保することが困難で、これをどうやって保存したらいいのか、という問題が発生した。 |
- | * どうもMiniscriptはVMを確保しており、変数はそのVMの中に保存領域を確保している。 | + | * なお、これはC++版でのみ発生で、C# |
- | * よって、staticなメモリ領域を確保しても、Miniscriptで利用する型を保存しても基本的にはアドレスしか保存されておらず、実体の保存および参照が正常に行えないことになる。 | + | |
- | * ただ、VM上の値を見るという形ではあり、機能上VMにグローバル変数用のマップを持っており、この領域に保存と参照が可能になっている。 | + | ---- |
- | * 今回の形式ではコンパイルと実行を同時に行う事から、再コンパイル時にグローバル変数も最悪消えずに済みそう。 | + | * MiniscriptはVMを確保して動かしており、変数はそのVMに紐づく形で保存領域を確保している。 |
+ | * VMの他に別途staticなメモリ領域を確保しても、Miniscriptで利用する型を定義する場合基本的にはアドレスしか保存されておらず、実体の保存および参照が正常に行えないことになる。 | ||
+ | * つまり、VMで得た値を簡単な方法でVM外に保存するのが困難ということ。 | ||
+ | * 勿論オブジェクトとの連携は元々可能だが、これは「Miniscriptの実行中に参照する」だったり、Context(実行処理)内に同じクラスへアクセスすることが前提になる。今回のケースではスクリプト実行処理の外でのアクセスが必要になるため、この連携が面倒になっている。 | ||
+ | |||
+ | ---- | ||
+ | * 解決法 | ||
+ | * VMの機能上グローバル変数用のマップ(文字列と値のペア)を持っているため、この領域に保存と参照が可能になっている。 | ||
+ | * 今回作成中のアプリの形式ではコンパイルと実行を一個の処理で行う事から、再コンパイル時にグローバル変数を再度登録するので、アクセスできる状態は継続できそう(初期化してないはずなので) | ||
+ | * よって変数には別途確保せずVM上のグローバル変数のマップから参照する方法が一番確実。 | ||
* この調査のためにDiscordを延々調べてようやくたどり着いたという。すげえ時間かかったわ。 | * この調査のためにDiscordを延々調べてようやくたどり着いたという。すげえ時間かかったわ。 | ||
* あとでMiniscriptのWikiに情報アップしておく予定。組み込みする人だと必要になると思うし。 | * あとでMiniscriptのWikiに情報アップしておく予定。組み込みする人だと必要になると思うし。 | ||
+ | ---- | ||
+ | * 16時頃に問題に遭遇、途中で寝てたけどそこから解決まで色々調べていた。 | ||
+ | * こういうのがあると情報がない分面倒だなと思う。 |
2024/07/08.1720459455.txt.gz · 最終更新: 2024/07/09 02:24 by machiaworx