[CM] Some Grace questions
Rick Taube
taube at uiuc.edu
Sat, 2 Feb 2008 06:15:15 -0600
let me respond in reverse order since its easier:
> Also, if I have a library of scheme files where can I put these so
> that grace loads them at startup?
there is no autoloading in 1.0.0. its easy enough to implement so I
will add it as a Preference to the next feature release.
> B) So that instead of sprouting a fininte number of "simp"s it would
> continue indefinetly untill told otherwise?
just use #f as the test form in the termination clause, that will
cause it to never end:
(define (simp )
(go ((i 0 (+ i 1))
(k 60 (ran 30 70)))
(#f )
(send "mp:note" #:key k)
(wait .2)))
(sprout (simp))
once sprouted you will either (1) select Hush in the MidiOut menu or
(2) call (stop) to stop it.
also, if you associate an id with a process when you sprout it you
can stop just that unique process:
(sprout (simp ) 0 666)
(sprout (simp ) )
(sprout (simp ) )
(stop 666)
will stop just the first instance.
> How (if its possible with Grace), would you change this so that -
> A) If I was to eval "simp" then sprout some copies of "simp", then
> alter "simp" and re-eval.
> Is it possible to make the process' that are waiting to be
> sprouted use the new definition?
no. this isnt a limitation its just that you cant "side effect"
functions. you could do something like this by calling 'eval' inside
the running function. but the safest way to "redefine" a process is
to stop the first version and sprout a new one. you could do this by
associating different ids with the running processes.
at some point we will have a GUI window that lets you enter scheme
sexprs that you then click on to sprout/stop. you could also
associate specific input keynums to trigger by incoming messages.
would be cool!