convertRhythm convert a rhythm-list to durations

message for SequenceableCollection

supports a variation of Mikael Laurson's rhythm list RTM-notation.

see Laurson and Kuuskankare's 2003, "From RTM-notation to ENP-score-notation"

http://jim2003.agglo-montbeliard.fr/articles/laurson.pdf

The method converts a collection of the form [beat-count, [rtm-list], repeats] to a List of Floats. A negative integer within the rtm-list equates to a value tied over to the duration following. The method is recursive in that any subdivision within the rtm-list can itself be a nested convertRhythm collection (see Example below). The repeats integer has a default value of 1.

If the divisions in the rtm-list are events, the event durations are interpreted as relative durations, and a list of events is returned.

// Examples

// using numbers as score

[3, [1, 2, 1], 1].convertRhythm; // List[ 0.75, 1.5, 0.75 ]

[2, [1, 3, [1, [2, 1, 1, 1]], 1, 3], 1].convertRhythm;

[2, [1, [1, [2, 1, 1, 1]]], 1].convertRhythm;

[2, [1, [1, [2, 1, 1, 1]]], 2].convertRhythm; // repeat

[2, [1, [1, [2, 1, 1, -1]]], 2].convertRhythm; // negative value is tied over.

// sound example

Pbind(\degree, Pseries(0, 1, inf), \dur, Pseq([2, [1, [1, [2, 1, 1, -1]]], 2].convertRhythm)).play;