-- Author: John Maxwell -- Last Edited by: Maxwell, November 22, 1983 11:52 am DIRECTORY MusicDefs: FROM "MusicDefs"; Piece: DEFINITIONS IMPORTS MusicDefs = BEGIN OPEN MusicDefs; default: INTEGER = 1000; AddEvent: PROCEDURE[score: ScorePTR, event: EventPTR] RETURNS[new: ScorePTR]; -- may raise Piece.Overflow. RemoveEvent: PROCEDURE[score: ScorePTR, event: EventPTR, free: BOOLEAN _ FALSE]; -- removes event from score. IF free = TRUE, then frees EVENT. Overflow: SIGNAL[old, new: ScorePTR]; -- raised whenever the score is extended. Copy: PROCEDURE[score: ScorePTR, time1, time2: Time] RETURNS[ScorePortionPTR]; Merge: PROCEDURE[score, new: ScorePTR, begin, end: Time]; Replace: PROCEDURE[score: ScorePTR, new: ScorePortionPTR, delete1, delete2: Time]; -- new gets deleted when done. may raise Piece.Overflow Insert: PROCEDURE[score: ScorePTR, new: ScorePortionPTR, begin: Time] = INLINE {Replace[score, new, begin, begin]}; Delete: PROCEDURE[score: ScorePTR, begin, end: Time] = INLINE {Replace[score, NIL, begin, end]}; New: PROC[length: CARDINAL, auxiliary: BOOLEAN _ FALSE, old: ScorePTR _ NIL] RETURNS[score: ScorePTR]; -- frees old after copying data Free: PROC[score: ScorePTR]; -- utterly destroys score. removes from anything that might point to it. Raises Piece.Overflow with new = NIL. Sort: PROCEDURE[score: ScorePTR]; CleanUpNotes: PROCEDURE[score: ScorePTR]; CleanUpEvents: PROCEDURE[score: ScorePTR]; MaxToc: PROCEDURE[score: ScorePTR, time1, time2: Time, duration: BOOLEAN] RETURNS[Time]; NearestNote: PROCEDURE[score: ScorePTR, x, y: INTEGER _ default] RETURNS[NotePTR]; -- x and y default to mouse. NearestObject: PROCEDURE[score: ScorePTR, x, y: INTEGER _ default] RETURNS[obj: ObjectType, p: LONG POINTER]; -- x and y default to mouse. NearestEvent: PROCEDURE[score: ScorePTR, t: Time, syncsOnly: BOOLEAN _ FALSE] RETURNS[index: CARDINAL]; -- returns score.length if none found END..