From fc1131f5c2441e29e78a72d2decd88cd7132b519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Thu, 16 Oct 2025 18:28:16 -0400 Subject: [PATCH] [obsidian] vault backup: 2025-10-16 18:28:16[ --- content/mimium.md | 7 +++++-- content/mimiumでMIDIインプットを実装.md | 10 ++-------- content/mimiumのモジュールシステム.md | 4 +++- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/content/mimium.md b/content/mimium.md index 1ddfa5be..79dba9d6 100644 --- a/content/mimium.md +++ b/content/mimium.md @@ -77,12 +77,15 @@ v4 - まず型のユニフィケーションをunion_findに置き換える - 型システムがしっかりするほど逆にエラー報告がわかりにくくなってる矛盾があるので、unionする際にエラーの原因をちゃんとtrackできるような仕組みを何か入れたい - [[mimiumでのバリアント]]:やっぱり必要 -- モジュールシステム:名前空間のCライブラリレベルでのマングリングとか考える必要ありそう +- [[mimiumのモジュールシステム|モジュール]]:名前空間のCライブラリレベルでのマングリングとか考える必要ありそう - [[OSC]]の実装 - アドレスを単一のnumberにマッピングするだけならそんなに困らなさそう。 - [[mimiumでMIDIインプットを実装|MIDIドライバの書き直し]] - - イベントストリームのチェーン + - イベントストリームのチェーンをちゃんとFRPで書けるようにしたい - オーディオドライバのコンフィグ系をフロントエンドに実装 +- Delayに加えて、rwtableプリミティブを追加 + - これがないとリバースディレイを作れない + - というか、これがあるとDelayもrwtableでカバーできてしまうという - シンタックスツリーをRed-GreenツリーにしてLanguage Serverを強化 - ステージ0の組み込み関数に配列と文字列操作を追加 - mapやfoldをやるにはジェネリクスが必要だけど、とりあえずは整数に対する操作だけでも diff --git a/content/mimiumでMIDIインプットを実装.md b/content/mimiumでMIDIインプットを実装.md index e3fa04d3..b924aa39 100644 --- a/content/mimiumでMIDIインプットを実装.md +++ b/content/mimiumでMIDIインプットを実装.md @@ -146,13 +146,7 @@ fn dsp(){ [[Computation Expression]]使ってIOの値を`let!`でバインドしていく、とかの方がわかりやすいかも? -## MIDIディレイとかどうすんの +MIDI入力がトリガーになってクロージャのupvalueを書き換えることでCellの中身を書き換えるとなると、現実的にはオーディオスレッドとMIDI(イベント)スレッドを跨いでupvalueを操作することになる。`get_closure_mut`でクロージャをゲットして実行することはできるけど、その時には結局VMがオーディオスレッドにいるから、VMがクロージャ実行予約の命令を受け取るmpscチャネルを持っておいて、予約されたらオーディオブロックの頭で実行する、みたいな感じにする?? -```rust -fn delay(stream:Stream,time:float){ - stream@(now+float) -} - - -``` +Arcでupvalueを全部包んで、closed upvalueの中身をAtomicU64にする、みたいな方法もあるにはあるが、そうするとClosureのストレージはVMそのものというよりもVMインスタンス間で共有される感じになるのかな diff --git a/content/mimiumのモジュールシステム.md b/content/mimiumのモジュールシステム.md index 35569bdc..cfc52f08 100644 --- a/content/mimiumのモジュールシステム.md +++ b/content/mimiumのモジュールシステム.md @@ -151,7 +151,7 @@ Rustの場合はグローバルな宣言が基本的に型推論しなくて済 - use modAの解釈開始 - マップに問い合わせ、ファイルがあったのでそれを参照 - とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始 -- Proigram→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換 +- Program→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換 両方が推論終わってから再度Unificationしないといけないか?これも再帰を禁止しておけばそれでいいのか @@ -186,5 +186,7 @@ Pythonのモジュールシステム [Python's Import System - Module object|R 一応このやり方でも、ファイルに対する型情報さえ残ってればキャッシュと分割コンパイル自体は可能? +問題点:レコードとして埋め込むと、エクスポートできる関数はステージ0かステージ1のいずれかになる(モジュール内でステージの混在自体はできるけど) +なんかこれだとダメだというもっとはっきりした理由をこの前気がついた気がするんだが、思い出せねえ、、