2017-05-13 18 views
0

​​配列の繰り返し内で待機する方法は?

私はsupercolliderを学習しています。私はSimpleNumber.wait関数を見つけましたが、ルーチンと呼ばれるいくつかの「異なる」種類の関数内でのみ、通常の関数内では機能しないことをすぐに学びました。

someArray.do構造の各繰り返し内で一定の時間だけ休止する簡単な方法はありますか? 「シンプルな方法」とは、数十の新しい概念を学び、パラダイムシフトを経験する必要のない何かを意味します。

NOTE WELL:私は最終的に私はプレーしたい今ためのルーチン、タスクやSuperColliderの中の他のシーケンシングのメカニズムが、について、全体の巨大な本を習得する必要性「メアリーが持っていたますを知っている私はできるだけ早くそれを覚えておいてください。すべてのそれを作ることができる前に何でもでが起こる。

これは可能ですか?

答えて

4

ルーチンは、.wait/.yield機能を使用するために必要です。あなたが電話すると3.waitの場合、どこかの時計に3秒間待つように指示してから、中断した場所から作業を続行します。これを行うには、時計と通信する必要があり、何かを停止して起動する必要があります(何らかの機能を実行するルーチン)。

あなたがしようとしている何のため完全構文のようになります。 Routine({ [1, 2, 3].do { |n| n.postln; n.wait; } }).play(AppClock); 上記の機能(あなたの1、2、3ループ)とのルーチンを作成し、時計の上にそれを果たしている(AppClock 、標準クロック)。

しかし、機能上の.fork方法(すなわちルーチンを作成し、それを再生)上記を行うための省略表現である:

{ [1, 2, 3].do { |n| n.postln; n.wait; } }.fork();

関連する問題