Compare commits

..

42 Commits

Author SHA1 Message Date
6443e8a507 [obsidian] vault backup: 2026-07-09 14:29:19[
All checks were successful
Build / build (push) Successful in 8m37s
2026-07-09 14:29:19 +09:00
875df01182 [obsidian] vault backup: 2026-07-08 14:29:34[
All checks were successful
Build / build (push) Successful in 8m31s
2026-07-08 14:29:34 +09:00
65bae8f538 [obsidian] vault backup: 2026-07-08 13:29:23[
All checks were successful
Build / build (push) Successful in 9m54s
2026-07-08 13:29:23 +09:00
0bd44c388d [obsidian] vault backup: 2026-06-22 19:59:54[
All checks were successful
Build / build (push) Successful in 9m34s
2026-06-22 19:59:54 +09:00
70e0e5b0c3 [obsidian] vault backup: 2026-06-22 15:58:12[
All checks were successful
Build / build (push) Successful in 6m51s
2026-06-22 15:58:12 +09:00
a03b380b86 [obsidian] vault backup: 2026-06-22 13:59:19[
All checks were successful
Build / build (push) Successful in 7m38s
2026-06-22 13:59:19 +09:00
70211867c4 [obsidian] vault backup: 2026-06-22 12:03:20[ 2026-06-22 12:03:20 +09:00
bbdced067c [obsidian] vault backup: 2026-06-18 14:43:44[
All checks were successful
Build / build (push) Successful in 9m58s
2026-06-18 14:43:44 +09:00
89201f482b [obsidian] vault backup: 2026-06-17 16:53:43[
All checks were successful
Build / build (push) Successful in 7m36s
2026-06-17 16:53:43 +09:00
4457a48bb0 [obsidian] vault backup: 2026-06-17 15:53:33[
All checks were successful
Build / build (push) Successful in 8m17s
2026-06-17 15:53:33 +09:00
1666925042 [obsidian] vault backup: 2026-06-17 14:40:50[ 2026-06-17 14:40:50 +09:00
97473f822d [obsidian] vault backup: 2026-06-17 03:35:34[
All checks were successful
Build / build (push) Successful in 6m48s
2026-06-17 03:35:34 +09:00
869e4566bd [obsidian] vault backup: 2026-06-17 01:24:15[
All checks were successful
Build / build (push) Successful in 7m3s
2026-06-17 01:24:15 +09:00
a421988063 [obsidian] vault backup: 2026-06-17 00:07:33[
All checks were successful
Build / build (push) Successful in 6m29s
2026-06-17 00:07:33 +09:00
1927871ef3 [obsidian] vault backup: 2026-06-16 22:43:12[
All checks were successful
Build / build (push) Successful in 13m4s
2026-06-16 22:43:12 +09:00
bba1f07a0d [obsidian] vault backup: 2026-06-16 20:12:07[
All checks were successful
Build / build (push) Successful in 9m36s
2026-06-16 20:12:07 +09:00
b98be55a43 [obsidian] vault backup: 2026-06-16 17:52:50[
Some checks failed
Build / build (push) Failing after 5m0s
2026-06-16 17:52:50 +09:00
4863b3f5e7 [obsidian] vault backup: 2026-06-16 16:52:43[
All checks were successful
Build / build (push) Successful in 8m11s
2026-06-16 16:52:43 +09:00
f436fdf4f1 [obsidian] vault backup: 2026-06-16 15:52:40[
All checks were successful
Build / build (push) Successful in 7m45s
2026-06-16 15:52:40 +09:00
8e10479dcc [obsidian] vault backup: 2026-06-15 18:11:51[
All checks were successful
Build / build (push) Successful in 8m6s
2026-06-15 18:11:51 +09:00
eab147ebda [obsidian] vault backup: 2026-06-15 16:55:29[
All checks were successful
Build / build (push) Successful in 7m8s
2026-06-15 16:55:29 +09:00
f3a3ea9437 [obsidian] vault backup: 2026-06-15 15:55:24[ 2026-06-15 15:55:24 +09:00
afcdefd317 [obsidian] vault backup: 2026-06-15 14:55:19[
All checks were successful
Build / build (push) Successful in 10m48s
2026-06-15 14:55:19 +09:00
29a6348864 [obsidian] vault backup: 2026-06-15 13:55:12[
All checks were successful
Build / build (push) Successful in 8m16s
2026-06-15 13:55:12 +09:00
94effceecd [obsidian] vault backup: 2026-06-15 12:55:07[
All checks were successful
Build / build (push) Successful in 8m49s
2026-06-15 12:55:07 +09:00
54cfb646b1 [obsidian] vault backup: 2026-06-12 08:42:35[
All checks were successful
Build / build (push) Successful in 10m16s
2026-06-12 08:42:35 +09:00
6d2315ae4e [obsidian] vault backup: 2026-06-12 00:36:46[
All checks were successful
Build / build (push) Successful in 6m54s
2026-06-12 00:36:46 +09:00
e82c032c3a [obsidian] vault backup: 2026-06-11 23:18:21[
All checks were successful
Build / build (push) Successful in 9m4s
2026-06-11 23:18:21 +09:00
b3ca7046c9 [obsidian] vault backup: 2026-06-11 20:53:09[
All checks were successful
Build / build (push) Successful in 14m21s
2026-06-11 20:53:09 +09:00
20183bd08e [obsidian] vault backup: 2026-06-11 13:57:53[
All checks were successful
Build / build (push) Successful in 6m57s
2026-06-11 13:57:53 +09:00
ca92e0cf43 [obsidian] vault backup: 2026-06-11 12:48:08[
All checks were successful
Build / build (push) Successful in 8m4s
2026-06-11 12:48:08 +09:00
9e595cfb3d [obsidian] vault backup: 2026-06-10 23:52:31[
All checks were successful
Build / build (push) Successful in 7m14s
2026-06-10 23:52:31 +09:00
1390630f42 [obsidian] vault backup: 2026-06-10 20:56:07[
All checks were successful
Build / build (push) Successful in 12m14s
2026-06-10 20:56:07 +09:00
006e3e2ce4 [obsidian] vault backup: 2026-06-10 16:48:42[
All checks were successful
Build / build (push) Successful in 7m45s
2026-06-10 16:48:42 +09:00
64dbddb66b [obsidian] vault backup: 2026-06-10 14:21:23[
All checks were successful
Build / build (push) Successful in 8m53s
2026-06-10 14:21:23 +09:00
16ecfaef1c [obsidian] vault backup: 2026-06-09 12:32:10[
All checks were successful
Build / build (push) Successful in 7m17s
2026-06-09 12:32:10 +09:00
af7a39e761 [obsidian] vault backup: 2026-06-09 10:30:13[
All checks were successful
Build / build (push) Successful in 8m47s
2026-06-09 10:30:13 +09:00
cc12426e0d [obsidian] vault backup: 2026-06-08 21:22:58[
All checks were successful
Build / build (push) Successful in 12m55s
2026-06-08 21:22:58 +09:00
b1b910fb11 [obsidian] vault backup: 2026-06-08 19:07:34[
All checks were successful
Build / build (push) Successful in 13m14s
2026-06-08 19:07:34 +09:00
75c1aebc93 [obsidian] vault backup: 2026-06-08 14:18:34[
All checks were successful
Build / build (push) Successful in 9m21s
2026-06-08 14:18:34 +09:00
289d3bbe23 [obsidian] vault backup: 2026-06-08 11:28:55[
All checks were successful
Build / build (push) Successful in 10m42s
2026-06-08 11:28:55 +09:00
449dcddb98 [obsidian] vault backup: 2026-06-08 10:28:34[ 2026-06-08 10:28:34 +09:00
3 changed files with 18 additions and 8 deletions

View File

@@ -122,20 +122,26 @@ MIDIのバイトストリームをフィルターして、ートオンオフ
最終的にはそれをHoldしてセルにして、セルをsampleして値にすれば良い 最終的にはそれをHoldしてセルにして、セルをsampleして値にすれば良い
ジェネリックなholdの実装をどうするかがキモ
最終的にはMIDI inにコールバックを登録する形になるから、依存性が逆転する
なんかJSには[[midiguchi]]というライブラリがあるらしい なんかJSには[[midiguchi]]というライブラリがあるらしい
[[Haskell]]には[[Reactive-Banana]]使った[[ReactiveBalsa]]もある [[Haskell]]には[[Reactive-Banana]]使った[[ReactiveBalsa]]もある
```rust ```rust
let hold = |i|{
fn voice_mono(notes:Stream<Note>){ let cell = i
let cell = notes |> hold({pitch:60,velocity:0}) |input| {cell =input, cell}
} }
let midiinput = midi_open_port("from Max 1"); let midiinput = midi_open_port("from Max 1");
let notes = midiinput |> filter_map(_,is_byte_note) let notes_cell = midiinput
let notes_cell = notes |> voice_mono //ここまでが今のbind_midi_note_monoに相当 ~> |x|filter_map(x,is_byte_note)
||> hold(_,{pitch:60,velocity:0}) //ここまでが今のbind_midi_note_monoに相当
fn dsp(){ fn dsp(){
let {pitch,velocity} = notes_cell |> sample let {pitch,velocity} = notes_cell |> sample
@@ -144,9 +150,13 @@ fn dsp(){
``` ```
~>はHaskellの$のような、 a(b(c))を a ~> b~> cで結合弱く描けるようにする
[[Computation Expression]]使ってIOの値を`let!`でバインドしていく、とかの方がわかりやすいかも? [[Computation Expression]]使ってIOの値を`let!`でバインドしていく、とかの方がわかりやすいかも?
MIDI入力がトリガーになってクロージャのupvalueを書き換えることでCellの中身を書き換えるとなると、現実的にはオーディオスレッドとMIDIイベントスレッドを跨いでupvalueを操作することになる。`get_closure_mut`でクロージャをゲットして実行することはできるけど、その時には結局VMがオーディオスレッドにいるから、VMがクロージャ実行予約の命令を受け取るmpscチャネルを持っておいて、予約されたらオーディオブロックの頭で実行する、みたいな感じにする Holdは組み込みの関数で、ArcSwapで包まれた値のセルを保持する
Arcでupvalueを全部包んで、closed upvalueの中身をAtomicU64にする、みたいな方法もあるにはあるが、そうするとClosureのストレージはVMそのものというよりもVMインスタンス間で共有される感じになるのかな グローバル関数はメインスレッドで実行されて、クロージャIDを渡す
とはいえVMインスタンスがオーディオスレッドに渡ってしまうとなるとな