[obsidian] vault backup: 2024-10-30 17:32:47

This commit is contained in:
2024-10-30 17:32:47 +09:00
parent eef9a31ec6
commit d87ab58af6
2 changed files with 54 additions and 4 deletions

View File

@@ -59,20 +59,38 @@ ChuckもボイスごとにShredを生やす方向で対応してるからちょ
Noteのバインドの記法
```rust
let channel:()->float = bind_midi_note_mono(channel)
let cell:()->float = bind_midi_note_mono(channel)
channel() //値の取り出し
let (note,vel) = cell(); //値の取り出し
```
```rust
//rust
fn bind_midi_note_mono(vm:&mut Machine)->ReturnCode{
let ch = vm.get_stack(0)
fn bind_midi_note_mono(&mut self ,vm:&mut Machine)->ReturnCode{
let ch = Machine::get_as::<f64>(vm.get_stack(0));
let cell = Arc::new((AtomicF64::new(),AtomicF64::new() ));
self.add_midi_listener(ch,|note,vel|{
let (note_c,vel_c) = cell.clone();
note_c.write(note);
vel_c.write(vel);
});
let cls = |vm:&mut Machine|->ReturnCode{
let (note_c,vel_c) = cell.clone();
vm.set_stack(0,Machine::to_value(note_c));
vm.set_stack(1,Machine::to_value(vel_c));
2
}
vm::set_stack(0, wrap_rust_closure(cls))
1
}
```
あとは頑張って`add_midi_listener`相当の何かを作ろうって感じだな(関数型っぽくはないけども)
---