DIRECTORY MusicDefs USING [EventPTR, KeySignaturePTR, MeasurePTR, MetronomePTR, NotePTR, ScorePTR, Staff, StavesPTR, SyncPTR, Time, TimeSignaturePTR]; Event: CEDAR DEFINITIONS = BEGIN OPEN MusicDefs; Draw: PROC[score: ScorePTR, event: EventPTR]; Invisible: PROC[score: ScorePTR, index: CARDINAL, leftEdge: Time] RETURNS[BOOLEAN]; -- Hidden GetScoreIndex: PROC[score: ScorePTR, event: EventPTR] RETURNS[index: CARDINAL]; Sync: PROC[event: EventPTR] RETURNS[SyncPTR] ~ INLINE { RETURN[WITH event SELECT FROM e: SyncPTR => e, ENDCASE => NIL]; }; Staves: PROC[event: EventPTR] RETURNS[StavesPTR] ~ INLINE { RETURN[WITH event SELECT FROM e: StavesPTR => e, ENDCASE => NIL]; }; Measure: PROC[event: EventPTR] RETURNS[MeasurePTR] ~ INLINE { RETURN[WITH event SELECT FROM e: MeasurePTR => e, ENDCASE => NIL]; }; Metronome: PROC[event: EventPTR] RETURNS[MetronomePTR] ~ INLINE { RETURN[WITH event SELECT FROM e: MetronomePTR => e, ENDCASE => NIL]; }; TimeSignature: PROC[event: EventPTR] RETURNS[TimeSignaturePTR] ~ INLINE { RETURN[WITH event SELECT FROM e: TimeSignaturePTR => e, ENDCASE => NIL]; }; KeySignature: PROC[event: EventPTR] RETURNS[KeySignaturePTR] ~ INLINE { RETURN[WITH event SELECT FROM e: KeySignaturePTR => e, ENDCASE => NIL]; }; Octava: PROC[event: EventPTR] RETURNS[BOOLEAN] ~ INLINE { RETURN[WITH event SELECT FROM ev: StavesPTR => ev.staves IN[octava1..octava2], ENDCASE => FALSE] }; Clef: PROC[event: EventPTR] RETURNS[BOOLEAN] ~ INLINE { RETURN[WITH event SELECT FROM ev: StavesPTR => ev.staves=clef, ENDCASE => FALSE] }; GetOctava: PROC[score: ScorePTR, octava: StavesPTR] RETURNS[other: StavesPTR]; SetStave: PROC[score: ScorePTR, oldS, newS: StavesPTR]; -- copy info from old to new GetStaff: PROC[staves: StavesPTR, staff: CARDINAL] RETURNS[Staff]; AddNote: PROC[score: ScorePTR, sync: SyncPTR, note: NotePTR]; RemoveNote: PROC[score: ScorePTR, sync: SyncPTR, note: NotePTR, free: BOOLEAN _ FALSE]; Adjust: PROC[score: ScorePTR, s: SyncPTR]; -- space the notes so they don't overlap NewSync: PROC[score: ScorePTR, length: CARDINAL _ 12] RETURNS[sync: SyncPTR]; Free: PROC[score: ScorePTR, event: EventPTR]; AddTimes: PROC[event: EventPTR, time, toc: Time]; Grace: PROC[sync: SyncPTR] RETURNS[BOOLEAN]; InVoice: PROC[sync: SyncPTR, voice: CARDINAL] RETURNS[BOOLEAN]; END. *Event.mesa Copyright (C) 1983, 1984 Xerox Corporation. All rights reserved. Author: John Maxwell Last Edited by: Maxwell, November 22, 1983 12:06 pm Last Edited by: Doug Wyatt, June 14, 1984 6:35:33 pm PDT returns score.length if not found (score[score.length] is always NIL) ************************************************ Type coercion ************************************************ ************************************************ Procedures that only apply to staves ************************************************ ************************************************ Procedures that only apply to syncs ************************************************ removes note from sync. If sync.length = 0 and free = TRUE, then sync is freed. removes sync from anything that points to it INLINE Procedures Êö˜šœ ™ Jšœ@™@Jšœ™Jšœ3™3Jšœ8™8J™—šÏk ˜ Jšœ œ}˜ŒJ˜—Jšœœ ˜Jšœœœ ˜J˜JšÏnœœ#˜-šž œœœ˜BJšœœÏc ˜—Jšž œœ#œœ˜OJšœE™EJ˜J˜Jšœ0™0J™ Jšœ0™0J˜šžœœœ œ˜7Jš œœœœœœ˜?J˜J˜—šžœœœœ˜;Jš œœœœœœ˜AJ˜J˜—šžœœœœ˜=Jš œœœœœœ˜BJ˜J˜—šž œœœœ˜AJš œœœœœœ˜DJ˜J˜—šž œœœœ˜IJš œœœœœœ˜HJ˜J˜—šž œœœœ˜GJš œœœœœœ˜GJ˜J˜—Jšœ0™0Jšœ$™$Jšœ0™0J˜š žœœœœœ˜9šœœœ˜Jšœœœœ˜B—Jšœ˜J™—š žœœœœœ˜7šœœœ˜Jšœ!œœ˜2—Jšœ˜J˜—Jšž œœ%œ˜NJšžœœ*Ÿ˜TJ˜Jšžœœœœ˜BJ˜Jšœ0™0Jšœ#™#Jšœ0™0J˜Jšžœœ0˜=šž œœ6œœ˜WJšœP™P—JšžœœŸ(˜SJ˜J˜Jšžœœœœ˜Mšžœœ$˜.Jšœ,™,—J˜Jšœ™J˜šžœœ#˜1J˜—šžœœœœ˜,J˜—š žœœœœœ˜?J˜—Jšœ˜—…— ,