Event recording in CM

Rick Taube hkt@cmp-nxt1.music.uiuc.edu
Wed, 13 Nov 1996 10:14:11 -0600


yes, i think i understand now. there are couple answers. it seems what you
are  after is to be able to capture a time-lined performance into a thread
with the thread containing copies of all the objects touched by the
performance but with their rhythmic values reset according to the merged
time line of the performance. so when the thread is played back the
timeline of the merge is heard. first, the RUN command can alreay copy the
output of any object into a thread, so
	run foo into bar
will run foo (an algo, merge, thread, doesnt matter) and capture its output
into a thread Bar that it will create or update. but run simply copies the
data, it wont overwrite time and rhythm slot values in the copies to
reflect a merged performance, so the thread wont correctly capture the
merged rhythm of the performance. but what you want is a perfectly
reasonable thing to do, in fact its been on my todo list for some time.  i
can add this feature for you without any real difficulty, i think its just
a few small methods. the cleanest way would be to allow you to OPEN a
thread just like a stream and then mix or sequence to it:
	Stella [Top-Level]: open foo
	Stream: #<THREAD foo>
	Stella [Top-Level]: mix bar,bax 0,2
	Stella [Top-Level]: open test.clm
	Stream: #<File: "test.clm">
	Stella [Top-Level]: mix foo,whatever 1,3
but for now your alternatives are to RUN each time-line indivdually and
then mix the results, or else MIX to a file and then IMPORT the file.
another possiblity (upcoming release) will be to mix outputs to seperate
files, then use the new infile object to manipulate the file as a cross
between a thread and an algorithm, like PLA's good old FILE feature.

-hkt