<> <> <> <> DIRECTORY Lark USING [ Tone ], Rope USING [ROPE]; LarkPlay: DEFINITIONS = { Tone: TYPE = Lark.Tone; ToneSpec: TYPE = REF ToneSpecRec; ToneList: TYPE = LIST OF Tone; ToneSpecRec: TYPE = RECORD [ repeatIndefinitely: BOOL_TRUE, -- else play just once volume: CARDINAL_0, -- "WaveTable": entire sequence played at one volume tones: LIST OF ToneList_NIL ]; <<<>>> PlayString: PROCEDURE [music: Rope.ROPE, file: BOOLEAN _ FALSE, volume: CARDINAL] RETURNS[tones: ToneSpec]; <> <> MergeToneSpecs: PROCEDURE [t1, t2: ToneSpec, t2Divisor: NAT_1, t2Delay: NAT_0, volumeIncrement: NAT_0] RETURNS [ts: ToneSpec]; <> <> <> }.