[obsidian] vault backup: 2023-09-20 01:33:51[
This commit is contained in:
parent
ec0d395d38
commit
ef41f40bdd
@ -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<Instruction>,
|
||||
constants: Vec<RawVal>,
|
||||
upvalue_idxs: Vec<UpIndex>,
|
||||
feed_idx: Vec<u64>
|
||||
}
|
||||
```
|
||||
|
||||
この関数だけだと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}}的な感じになるが
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue
Block a user