-- Author: John Maxwell
-- last modified: November 4, 1983 2:12 pm
-- Last Edited by: Maxwell, November 17, 1983 2:35 pm
DIRECTORY
MusicDefs: FROM "MusicDefs";
Note: DEFINITIONS IMPORTS MusicDefs =
BEGIN
OPEN MusicDefs;
default: INTEGER = 1000;
Draw: PROCEDURE[score: ScorePTR, n: NotePTR, stem: INTEGER ← default];
DrawHead: PROCEDURE[score: ScorePTR, n: NotePTR, x, y, dotX: INTEGER];
DrawTie: PROCEDURE[score: ScorePTR, n: NotePTR];
Free: PROCEDURE[score: ScorePTR, n: NotePTR];
-- removes note from anything that points to it, then frees it.
GetBackTie: PROCEDURE[score: ScorePTR, n: NotePTR] RETURNS[NotePTR];
Duration: PROCEDURE[n: NotePTR, metrenome: INTEGER] RETURNS[Time];
SetAccidental: PROCEDURE[score: ScorePTR, n: NotePTR, a: Accidental];
SetEmbellishment: PROCEDURE[score: ScorePTR, n: NotePTR, e: Embellishment];
-- inline procedures
Delta: PROCEDURE[sheet: SheetPTR, n: NotePTR] RETURNS[INTEGER] = INLINE
{IF sheet.display # graphical THEN RETURN[0] ELSE
RETURN[n.delta + (IF FindChord[n] = NIL THEN 0 ELSE FindChord[n].delta)]};
InVoice: PROCEDURE[n: NotePTR, voice: CARDINAL] RETURNS[BOOLEAN] = INLINE
{RETURN[voice = noVoice OR n.voice = voice]};
FindChord: PROCEDURE[n: NotePTR] RETURNS[c: ChordPTR] = INLINE
{RETURN[n.chord]};
GetSyncIndex: PROCEDURE[s: SyncPTR, p: NotePTR] RETURNS[CARDINAL] = INLINE
{FOR i: CARDINAL IN [0..s.length) DO
IF s.note[i] = p THEN RETURN[i];
ENDLOOP;
ERROR};
Width: PROC[n: NotePTR] RETURNS[INTEGER] = INLINE
{RETURN[IF n.grace THEN 6 ELSE IF n.value = whole THEN 10 ELSE 8]};
END..