From ef41f40bdde78481f58361086ced276d7cc593bd Mon Sep 17 00:00:00 2001 From: "Tomoya Matsuura(MacBookPro)" Date: Wed, 20 Sep 2023 01:33:51 +0900 Subject: [PATCH] [obsidian] vault backup: 2023-09-20 01:33:51[ --- content/mimium新内部表現の構想.md | 35 +++++++++++++++++++++++ content/音楽プログラミング言語の形式化.md | 19 ++++++++++++ 2 files changed, 54 insertions(+) diff --git a/content/mimium新内部表現の構想.md b/content/mimium新内部表現の構想.md index 15120c49..570b1ea6 100644 --- a/content/mimium新内部表現の構想.md +++ b/content/mimium新内部表現の構想.md @@ -252,3 +252,38 @@ let res = cascade_f(3,0.9,input) ともあれコピーキャプチャのクロージャでも問題はなさそうだけども、この状態だと`cascade`のfeedのコンテキストは毎サンプル終了しちゃうって感じなんだよね +## VMのインストラクションとデータ構造 + +```rust +type Ref = u8; +enum UpIndex{ + Local(Reg), + UpValue(u64) +} +struct FuncProto{ + instructons: Vec, + constants: Vec, + upvalue_idxs: Vec, + feed_idx: Vec +} +``` + +この関数だけだとfeedidをどうつければいいかなあ + +```rust +fn filterbank(N,input,lowestfreq, margin,Q,filter){ + if(N>0){ + return filter(input,lowestfreq+N*margin,Q) + + filterbank(N-1,input, lowestfreq,margin,Q,filter) + }else{ + return 0 + } +} +fn lowpass(input,fb){ + input* (1-fb) + self * fb +} +res = filterbank(3,input,100,2000,2.0,lowpass) +``` + +lowpassは最終的にlambda{feed{self}}的な感じになるが + diff --git a/content/音楽プログラミング言語の形式化.md b/content/音楽プログラミング言語の形式化.md index 88d90fab..603f504e 100644 --- a/content/音楽プログラミング言語の形式化.md +++ b/content/音楽プログラミング言語の形式化.md @@ -168,3 +168,22 @@ process = hmtx(16); 継時再帰は[[Kronos]]のMeta-Sequencerでも使われてたはずだし、きちんと意味論を定義することはできるのかな? + +--- + +VMのインストラクションを考えてるけど。 + +ワンパスのコンパイラだと、関数呼び出しした時に値がFeedになるかどうかは、Substituteを直接的にするわけじゃないから判別できないのか + +となると、やっぱり値に対して性質が決まってるから型として判別した方がいいんじゃないのか?つまりfilterの値の方に関してはメモリサイズが不定だよなあ + +```rust +fn filterbank(N,input,lowestfreq, margin,Q,filter){ + if(N>0){ + return filter(input,lowestfreq+N*margin,Q) + + filterbank(N-1,input, lowestfreq,margin,Q,filter) + }else{ + return 0 + } +} +``` \ No newline at end of file