[obsidian] vault backup: 2025-08-27 20:24:59[
Some checks are pending
Build / build (push) Has started running

This commit is contained in:
2025-08-27 20:24:59 +09:00
parent ab45b5857d
commit d6aa3afd47

View File

@@ -103,45 +103,70 @@ fn region_transformer(origin:Region,fx:FX) -> 'Region{
```rust ```rust
fn apply_fadeinout(s,start,tin,dur,tout){ fn apply_fadeinout(s,start,tin,dur,tout){
let end = start+dur let end = start+dur
if now < start | now > end | tin<=0 | tout <= 0{ if now < start | now > end | tin<=0 | tout <= 0{
0 0
}else{ }else{
let gain_s = min(max(now - start,0)/tin ,1) let gain_s = min(max(now - start,0)/tin ,1)
let gain_e = min(max(end - now,0)/tout,1) let gain_e = min(max(end - now,0)/tout,1)
s*gain_s*gain_e // gain_sとgain_eはどちらから0~1の区間もう片方が1 s*gain_s*gain_e // gain_sとgain_eはどちらから0~1の区間もう片方が1
} }
}
fn finout_generator(s,start,dur){
//パラメーターはステージ1では単なる変数参照になる
let time_in = Param!(0.0,"fade_in",0..=f64::MAX);
let time_out = Param!(0.0,"fade_out",0..=f64::MAX);
apply_fadeinout(s,start,time_in,dur, time_out)
} }
fn fade_inout(origin:Region)-> 'Region{ fn fade_inout(origin:Region)-> 'Region{
let new_generator = |s,start,dur| { region_transformer(origin,finout_generator)
//パラメーターはステージ1では単なる変数参照になる
let time_in = Param!(0.0,"fade_in",0..=f64::MAX);
let time_out = Param!(0.0,"fade_out",0..=f64::MAX);
apply_fadeinout(s,start,time_in,dur, time_out)
};
region_transformer(origin,new_generator)
} }
...
fade_inout!(some_region)
``` ```
### リージョンに対するリバース ### リージョンに対するリバース
```rust ```rust
fn reverse(origin:Region)->Region{ fn reverse(origin:Region)->Region{
//クロージャとして値を閉じ込める
let new_cache = origin |> render let new_cache = origin |> render
//クロージャとして値new_cacheを閉じ込める
Region{ let new_generator = |s,start,dur| {//実際にはsは使わない
start:origin.start, //s is not used
dur:origin.dur, let index = dur - start - now
content: | | { new_cache[index]
let index = origin.dur - origin.start - now
new_cache[index]
}
} }
region_transformer(origin,new_generator)
}
...
some_region |> reverse!(_) |> fade_inout!(_)
```
## トラックの中で別のトラックの信号を参照する
```rust
fn phasor(freq){
self+freq/samplerate % 1.0
}
fn sinosc(freq,amp){
phase*TWOPI |> sin
}
// --ここから上はstage 1 value
//track_1はstage0として参照する
let track1 = Track(|| phasor(1.0)|> scale(_,0.0,1.0,100,4000))
//track1をfrequencyとして参照することにする
let r1 = {
start: 100ms,
dur: 1000ms,
content: || sinosc(track1(), 1.0)
} }
``` ```
### 他 ### 他
- ドラッグしてるオブジェクトのスナップ対象は例えばCubaseなら固定のグリッドor既存のイベントorその両方とかだけど、例えばグリッドをジェネラティブに生成できる - ドラッグしてるオブジェクトのスナップ対象は例えばCubaseなら固定のグリッドor既存のイベントorその両方とかだけど、例えばグリッドをジェネラティブに生成できる