-- Author: John Maxwell -- Last Edited by: Maxwell, November 21, 1983 9:39 am DIRECTORY Graphics USING [Context], MusicDefs: FROM "MusicDefs"; Score: DEFINITIONS IMPORTS MusicDefs = BEGIN OPEN MusicDefs; -- **************************************************************************** -- procedures -- **************************************************************************** -- all of the Sets and Gets take "score" as the implied first parameter Initialize: PROCEDURE[score: ScorePTR, context: Graphics.Context]; BuildCache: PROCEDURE[score: ScorePTR, time: Time]; Draw: PROCEDURE[score: ScorePTR, erase: BOOLEAN _ TRUE]; Redraw: PROCEDURE[score: ScorePTR, t1, t2: Time]; Print: PROCEDURE[score: ScorePTR, splines: BOOLEAN]; SetKey: PROCEDURE[score: ScorePTR, key: INTEGER, time1, time2: Time]; -- may raise Piece.Overflow GetKey: PROCEDURE[score: ScorePTR, t: Time] RETURNS[key: INTEGER]; GetAccidental: PROCEDURE[score: ScorePTR, n: NotePTR] RETURNS[Accidental]; SetMetrenome: PROCEDURE[score: ScorePTR, m: INTEGER, time1, time2: Time]; -- may raise Piece.Overflow GetMetrenome: PROCEDURE[score: ScorePTR, t: Time] RETURNS[metrenome: INTEGER]; DrawMetrenome: PROCEDURE[score: ScorePTR, metrenome: INTEGER, time: Time]; SetTimeSignature: PROCEDURE[score: ScorePTR, ts: TimeSignature, time1, time2: Time]; -- may raise Piece.Overflow GetTimeSignature: PROCEDURE[score: ScorePTR, t: Time] RETURNS[TimeSignature]; DrawTimeSignature: PROCEDURE[score: ScorePTR, ts: TimeSignature, time: Time]; SetStyle: PROC[score: ScorePTR, index: INTEGER, t1, t2: Time]; -- may raise Piece.Overflow GetStyle: PROC[score: ScorePTR, time: Time] RETURNS[INTEGER]; SetClef: PROC[score: ScorePTR, pitch, staff: INTEGER, time: Time]; -- may raise Piece.Overflow SetOctava: PROC[score: ScorePTR, pitch, staff, height: INTEGER, t1, t2: Time]; -- may raise Piece.Overflow Justify: PROCEDURE[score: ScorePTR, begin, end: Time]; LogicalToPhysical: PROCEDURE[score: ScorePTR, begin, end: Time]; ScalePhysical: PROCEDURE[score: ScorePTR, n: INTEGER]; ShowLogical: PROCEDURE[score: ScorePTR, firstEvent, lastEvent: CARDINAL]; Look: PROCEDURE[score: ScorePTR, look: LookCommand, switch: BOOLEAN_ TRUE, n: INTEGER _ 0]; -- key specific procedures AddToPitch: PROCEDURE[key, pitch, delta: INTEGER] RETURNS[INTEGER]; KeyHeight: PROCEDURE[key, pitch: INTEGER] RETURNS[INTEGER]; NormalAcc: PROCEDURE[key, pitch: INTEGER] RETURNS[Accidental]; PriorNote: PROCEDURE[score: ScorePTR, pitch, height: INTEGER, index: CARDINAL] RETURNS[NotePTR]; ShowPitch: PROCEDURE[sheet: SheetPTR, pitch: INTEGER, spelled: Accidental, key: INTEGER] RETURNS[INTEGER] = INLINE BEGIN IF NOT sheet.accidental THEN RETURN[pitch]; IF spelled = inKey THEN RETURN[pitch]; SELECT spelled FROM doubleSharp => pitch _ pitch-2; sharp => pitch _ pitch-1; natural => pitch _ pitch-0; flat => pitch _ pitch+1; doubleFlat => pitch _ pitch+2; ENDCASE => ERROR; IF Mod[pitch, 12] = 7 AND key < -5 THEN RETURN[pitch-1]; IF Mod[pitch, 12] = 0 AND key < -6 THEN RETURN[pitch-1]; IF Mod[pitch, 12] = 1 AND key > 5 THEN RETURN[pitch+1]; IF Mod[pitch, 12] = 8 AND key > 6 THEN RETURN[pitch+1]; RETURN[pitch]; END; -- **************************************************************************** -- utility procedures -- **************************************************************************** FileIn: PROCEDURE[fileName: STRING] RETURNS[ScorePTR]; -- FileInOld: PROCEDURE[score: ScorePTR, s: STRING]; FileOut: PROCEDURE[score: ScorePTR, fileName: STRING] RETURNS[BOOLEAN]; -- FileOutOld: PROCEDURE[s: STRING]; FileStats: PROCEDURE[score: ScorePTR]; InitializeSynthesizer: PROCEDURE; StartListening: PROCEDURE[score: ScorePTR]; StartPlaying: PROCEDURE[score: ScorePTR, first: CARDINAL, physical: BOOLEAN, displayCursor: PROCEDURE[score: ScorePTR, time: Time]]; -- displayCursor may raise Piece.Overflow StopListening: PROCEDURE[score: ScorePTR]; StopPlaying: PROCEDURE[score: ScorePTR]; Test: PROCEDURE[score: ScorePTR] RETURNS[errors: BOOLEAN]; END..