-- Author: John Maxwell -- Last Edited by: Maxwell, November 21, 1983 9:20 am DIRECTORY MusicDefs: FROM "MusicDefs"; Voice: DEFINITIONS = BEGIN OPEN MusicDefs; max: CARDINAL = 10; StatePTR: TYPE = POINTER TO State; State: TYPE = ARRAY [0..max) OF StateRec; StateRec: TYPE = RECORD[found, grace, graced, full: BOOLEAN, duration, sum: Time]; Check: PROCEDURE[score: ScorePTR]; Correct: PROCEDURE[score: ScorePTR, time1, time2: Time]; -- may raise Piece.Overflow Set: PROCEDURE[score: ScorePTR, voice: CARDINAL]; -- takes selection as a parameter -- procedures for enumerating voices ClearState: PROCEDURE[vs: StatePTR] = INLINE {FOR i: CARDINAL IN [0..max) DO vs[i] _ [FALSE, FALSE, FALSE, FALSE, 0, 0]; ENDLOOP}; SetState: PROCEDURE[vs: StatePTR, event: EventPTR, m: INTEGER _ 128, separate: BOOLEAN _ FALSE] RETURNS[max: Time]; Selected: PROC[score: ScorePTR, v: CARDINAL] RETURNS[BOOLEAN] =INLINE {RETURN[score.sheet.voice = noVoice OR v = score.sheet.voice]}; END.