diff --git a/content/Arco.md b/content/Arco.md new file mode 100644 index 00000000..ba051869 --- /dev/null +++ b/content/Arco.md @@ -0,0 +1,6 @@ +--- +date: 2025-06-12 09:29 +--- +#computermusic #programming-language + +[GitHub - rbdannenberg/arco](https://github.com/rbdannenberg/arco) diff --git a/content/ICMC2025 ペーパーセッション聴講メモ.md b/content/ICMC2025 ペーパーセッション聴講メモ.md index c193c4f4..786cd471 100644 --- a/content/ICMC2025 ペーパーセッション聴講メモ.md +++ b/content/ICMC2025 ペーパーセッション聴講メモ.md @@ -306,5 +306,45 @@ MaxとPythonの相性悪い問題(とはいえここでもPythonとOSCで連 [[Wekinator]]みたくオンライン学習できるのが強み +## Arco : A Flexible Audio Processing Framework + +[[Roger Dannenberg]] + +ブロックサイズをあげていった時に、オールオーディオレートで処理した時の処理負荷の谷が8サンプルの時に来る + +[[O2]]メッセージのフォーマットだとこれで、 + +``` +/arco/fmosc/new ID chans input1 input2 ... +/arco/free ID +``` + +ハイレベルのAPIだとこう + +``` +sine1 = sine(440,0.01).play() +sine1=nil +``` + + +リアルタイムのUGen増やす、減らすもできる + +[[Nick Collins]]からの質問SuperColliderとの違い + +SCはコンパイルされたUGenどの順番で実行されるかが一列にソートされて順番に実行されていくけど、Arcoは必ずしもそうじゃない(部分的には並列化もできるのかな) + +遅いレートのイベントストリームの取り扱いをどうすればいいんだろう + +うーん、こう見ると、[[UGenの生成をスクリプトから命令列に変換する]]のが重要なのかな + +## Functional Iterative Swing: An Open Framework for Exploring Warped Ramps, Exponential Rhythm, and Euclidean Shuffle + +スイングを数学的に考えよう + +リズムのグリッドを切るための直線的なライン(`y=x`)があったとして、それを`y = n^x`で捻じ曲げていくとスイングに近いものが作れるのではないか + +## A Bidirectionally Stacking Loudspeaker Enclosure Design for Wave Field Synthesis + + diff --git a/content/Roger Dannenberg.md b/content/Roger Dannenberg.md new file mode 100644 index 00000000..167948bd --- /dev/null +++ b/content/Roger Dannenberg.md @@ -0,0 +1,8 @@ +--- +date: 2025-06-12 09:28 +--- +#person #stub + +[[Nyquist]] + +[[Arco]] diff --git a/content/UGenの生成をスクリプトから命令列に変換する.md b/content/UGenの生成をスクリプトから命令列に変換する.md new file mode 100644 index 00000000..deba7909 --- /dev/null +++ b/content/UGenの生成をスクリプトから命令列に変換する.md @@ -0,0 +1,36 @@ +--- +date: 2025-06-12 09:24 +--- +#memo #programming-language #sound + +[[Arco]]で行われているメッセージング + +``` +/arco/fmosc/new ID chans input1 input2 ... +/arco/free ID +``` + +ハイレベルのAPIだとこう + +``` +sine1 = sine(440,0.01).play() +sine1 = nil +``` + + +[[SuperCollider]]でも似たような話だけど、ライブコーディング的なシステムを作ろうと思うとここを定式化するのが重要なのでは + +ジェネラティブUGenネットワークグラフの生成もここに含まれる + +すでに作られたC++のシンセとの統合というのが魅力ではある + +ここがうまく定式化すれば、必要な部分だけダイナミックインタラクションできて、他はJITコンパイルで効率化できるのではないか + +まーでも、どのみち`sine1=nil`みたいな命令型の構造がハイレベルにまで入り込まないと無理なんだよな(グローバルだけ再代入を許せばそれでいいのかも) + +[[mimium]]に生かそうと思うと、UGenに相当するものをダイナミックに作る・消去する工程を命令型でうまく表現できればいいんだけどなあ + +実際には使われてない(アウトプットされてない)UGenもインスタンス化されてしまうので、これを遅延実行するみたいな仕組みがあればいいのかな + +インスタンス化/IOやり取りするメモリマネジメントのタイミング制御だけが重要 +