hi Orm,
Orm Finnendahl wrote: ...
altogether. But why did you suggest the linked list structure? I
You did (in a previous post):
time ago. It stores elements in two data structures: (1.) A table, implemented as linked list, which defines the succession of elements
The example of struct _event { struct _event *next; float data[1]; } meant using a continuous array (`data' field) as a multi-dimensional event value, while linking successive events. One would call (in Pd) getbytes(sizeof(struct _event) + (<ndimen> - 1) * sizeof(float)) to allocate an event. Of course the event sequence as a whole may also be stored in a large (possibly growable) array.
...
Not really. I attached a markov object to the live performance of an improvising pianist, capturing pitch, velocity and timing and the object could play along in realtime after only a couple of seconds, continuing the stuff of the pianist in much the same manner and style, as he did.
What I meant was this: say, after range checking and quantizing
we have 80 pitches times 80 velocity levels times 80 durations (or
deltas?) which gives 512000-element sample space. With an average
density of around 10 events per second, transition matrix would
still be nearly empty after few seconds. In such case there would
be no branches, and plain markov process would keep generating
exact imitation of live performance sequence for much longer then
few seconds -- unless previous knowledge was applied. But now
I see that your external is much more flexible than that (with
margin',
mutation', and various `modes'). Btw. such effect of
gradually deviating imitation may be interesting in its own right.
...
To store only one dimension is normally not sufficient to capture musical events. It gives a completely different result if you seperate
Yes, I was not precise -- I meant vector quantizing (representing similar events as equal), and _not_ projecting into one-dimensional space. Since deciding what is `similar' is not easy, and usually involves costly clustering techniques, this hint was misleading.
Krzysztof