ログイン : login
ユーザ名:

パスワード:


パスワード紛失
新規登録
サイト内検索
フィードリーダーで更新をチェック!
PR
Powered by XOOPS Cube 2.0
フォーラム一覧   -   トピック一覧
   オーディオシンセシス
     L-system Base
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
otophilia
投稿日時: 2008-1-4 22:43
常連
登録日: 2007-1-24
居住地: 初音島
投稿: 65
L-system Base
文字列を置換するL-systemのテスト
辞書から複数に検出されうる文字列は、辞書の後に書いた方の規則が優先されます。
// L-system Base04 by_otophilia

~string = "T";

~dict = [
	"T" -> "DT",
	"D" -> "TD",
	"TDD" -> "TSD",
	"DDT" -> "SDT",
	"DS" -> "DTS"
	];


~replaceMulti = {|str, dict|
	var i=0, nstr, nextPt, fromSt;
	
	nstr = String.new;
	
	{ i < str.size }.while{
		nextPt = nil;
		fromSt = nil;
		
		dict.do{|ass|
			var f;
			f = str.find(ass.key, false, i);
			
			if(nextPt.notNil){
				f !? { if(f <= nextPt){ nextPt = f; fromSt = ass.key } }
			}{
				f !? { nextPt = f; fromSt = ass.key };
			};
		};
		
		if(nextPt.isNil){
			nstr = nstr ++ str[i..];
			i = str.size;
		}{
			if(nextPt - i > 0){nstr = nstr ++ str[i..nextPt-1]};
			nstr = nstr ++ dict.detect{|x| x.key == fromSt}.value;
			i = nextPt + fromSt.size;
		};
	};
	
	nstr;
};

12.do{~string = ~replaceMulti.(~string, ~dict).postln};
moxuse
投稿日時: 2008-1-4 23:23
常連
登録日: 2006-10-17
居住地:
投稿: 54
Re: L-system Base
swikiにL-Systemについての項が、

http://swiki.hfbk-hamburg.de:8888/MusicTechnology/279

再帰表現のためのrewriteStringっていうのがあります。これも辞書を使ったラッパーだと思いますが、便利ですよ。
u_p
投稿日時: 2008-1-5 15:14
モデレータ
登録日: 2006-9-26
居住地: 海底
投稿: 211
Re: L-system Base
L-Systemって何かと思って調べてみたら、面白そうですね。
http://ja.wikipedia.org/wiki/L-system

音楽に応用した実例ってあるのでしょうか?
tn8
投稿日時: 2008-1-7 10:35
モデレータ
登録日: 2006-9-22
居住地: アカイロノマド
投稿: 237
Re: L-system Base
実例... JamesMの素晴らしいプログラムがSC2についていたのです。

http://sound.jp/supako/x/sc2/text/freq.html


----------------
// tn8

u_p
投稿日時: 2008-1-8 3:25
モデレータ
登録日: 2006-9-26
居住地: 海底
投稿: 211
Re: L-system Base
見たこと&聴いたことあります、これ!
ピッチなどのパターンに使えるってことか…。

ルールをリアルタイムに書き換えることで一瞬にして複雑なパターンをがらっと変えると、面白そう。ミニマルミュージック!やってみよう…。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を