From 975fbc3cae4f3ba279b342b441d90e14fe864d7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Wed, 8 Oct 2025 12:53:10 +0900 Subject: [PATCH] [obsidian] vault backup: 2025-10-08 12:53:10 --- ...ラミング言語のソース変更時に内部状態を差分保持するシステム.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/content/関数型信号処理プログラミング言語のソース変更時に内部状態を差分保持するシステム.md b/content/関数型信号処理プログラミング言語のソース変更時に内部状態を差分保持するシステム.md index 510c6988..36be510a 100644 --- a/content/関数型信号処理プログラミング言語のソース変更時に内部状態を差分保持するシステム.md +++ b/content/関数型信号処理プログラミング言語のソース変更時に内部状態を差分保持するシステム.md @@ -105,7 +105,11 @@ fn dsp(){ 上のサンプルでは、はじめlfoを使って周波数をモジュレーションしている状態から、周波数は固定にして音量をモジュレーションする処理へと切り替えた例である。myfreq()とmyamp()はそれぞれどちらもosc関数を1度だけ呼び出すため、dsp関数の内部状態ツリーの構成は共通しており、再コンパイル時にデータが引き継がれる。 この時、myampにはmyfreqの最後の位相が引き継がれることになるが、これは特に望ましいというわけではない(どうでもよさそうではあるけど) -myfreqとmyampをそれぞれselfを使って個別に実装していた場合、値の範囲がおかしくなるkのう +myfreqとmyampをそれぞれselfを使って個別に実装していた場合、値の範囲がおかしくなる可能性がある。 + +ツリー構築の際に、関数ラベルをつけるようにすればいいが、ラベルのネーミング方法に一貫性がないとダメ + +親の関数名+child1,2,3...みたいにすれば多分大丈夫。 ## 将来的な展望 @@ -113,6 +117,8 @@ myfreqとmyampをそれぞれselfを使って個別に実装していた場合 原理的にはFaustでも実現できるはず。 ディレイ、Feed以外に、外部定義の関数呼び出しにもこの仕組みを応用できるか?LuaのUserData的な仕組み。 - +Faustにおけるrwtableのように、単にCell的な仕組みを用意すればDelayやMemもこの上に乗っかる形で全部カバーできるはず + +rwtable(read_index:float,write_index:float,input:float,size:const-float)