<> <> <> <> <> <> <> <> MusicFileDefs: CEDAR DEFINITIONS = BEGIN versionID: INTEGER = 3; ID: TYPE ~ MACHINE DEPENDENT {nullID(0), scoreID(1), eventID(2), noteID(3), chordHeapID(4), chordID(5), beamHeapID(6), beamID(7), viewID(8), tieID(9), (CARDINAL.LAST)}; <> <> <<(You may wish to eliminate these, but then old files will no longer work.)>> <> <> <> <> <> <<],>> <> <> <> <<],>> <> <> <> <<],>> <> <> <> <> <> <> <> <> <> <> <<];>> EventFormat: TYPE = MACHINE DEPENDENT RECORD[ identifier: ID _ eventID, time: LONG INTEGER _ 0, type: EventTypeFormat _ notes, ignore: BOOLEAN _ FALSE, -- do not use this bit spare1: [0..1000) _ 0, value: INTEGER _ 0, -- may be a time signature spare2: CARDINAL _ 0, length: CARDINAL _ 0 -- followed by: <> <> ]; TimeFormat: TYPE = LONG INTEGER; EventTypeFormat: TYPE = MACHINE DEPENDENT { notes, measure, repeat1, repeat2, endMeasure, doubleMeasure, m5, timeSignature, keySignature, metronome, staves, clef, octava1, octava2, spare5, spare6, spare7, spare8, spare9, spare10, spare11, spare12, spare13, spare14 }; SheetFormat: TYPE = MACHINE DEPENDENT RECORD[ junk: LONG CARDINAL _ 0, -- garbage filler height: INTEGER _ 0, offset: INTEGER _ 0, sl: CARDINAL _ 0, staff: ARRAY [0..6) OF StaffFormat _ ALL[[]] ]; StaffFormat: TYPE = MACHINE DEPENDENT RECORD[ pitch: INTEGER _ 0, -- pitch of note on bottom line y: INTEGER _ 0 -- height relative to bottom line ]; NoteFormat: TYPE = MACHINE DEPENDENT RECORD[ identifier: ID _ noteID, pitch: INTEGER _ 40, voice: CARDINAL _ 0, value: NoteValueFormat _ unknown, --3 bits spelled: AccidentalFormat _ inKey, --3 bits rest: BOOLEAN _ FALSE, dotted: BOOLEAN _ FALSE, doubleDotted: BOOLEAN _ FALSE, grace: BOOLEAN _ FALSE, stemUp: BOOLEAN _ FALSE, exception: BOOLEAN _ FALSE, embellish: EmbellishmentFormat _ none, --3 bits tie: BOOLEAN _ FALSE, -- if TRUE, a TieFormat follows show: BOOLEAN _ FALSE, spare4: [0..2000) _ 0, staff: [0..16) _ 1, spare2: CARDINAL _ 0, --legato, stacatto, accents spare3: CARDINAL _ 0, toc: LONG CARDINAL _ 0, duration: CARDINAL _ 0 ]; NoteValueFormat: TYPE = MACHINE DEPENDENT { whole, half, quarter, eighth, sixteenth, thirtysecond, sixtyfourth, unknown }; AccidentalFormat: TYPE = MACHINE DEPENDENT { doubleSharp, sharp, natural, inKey, flat, doubleFlat }; EmbellishmentFormat: TYPE = MACHINE DEPENDENT { none, trill, mordent1, mordent2, e1, e2, e3, e4 }; ChordFormat: TYPE = MACHINE DEPENDENT RECORD[ identifier: ID _ chordID, stemUp: BOOLEAN _ FALSE, exception: BOOLEAN _ FALSE, spare1: [0..16000) _ 0, exceptionPTR: CARDINAL _ 0, spare2: INTEGER _ 0, length: CARDINAL _ 0 <> ]; BeamFormat: TYPE = MACHINE DEPENDENT RECORD[ identifier: ID _ beamID, tilt: REAL _ 0, beamed: BOOLEAN _ FALSE, exception: BOOLEAN _ FALSE, ntuple: [0..128) _ 0, against: [0..128) _ 0, height: INTEGER _ 0, invisible: BOOLEAN _ FALSE, spare1: [0..1024) _ 0, staff: [0..32) _ 0, spare2: CARDINAL _ 0, length: CARDINAL _ 0 <> ]; TieFormat: TYPE = MACHINE DEPENDENT RECORD[ identifier: ID _ tieID, height: INTEGER _ 0, heap: CARDINAL _ 0, index: CARDINAL _ 0 ]; RelativePTR: TYPE = MACHINE DEPENDENT RECORD[ heap: CARDINAL, index: CARDINAL ]; beams: CARDINAL = 64000; -- used in RelativePTR chords: CARDINAL = 64001; -- used in RelativePTR ViewFormat: TYPE = MACHINE DEPENDENT RECORD[ identifier: ID _ viewID, scale: INTEGER _ 0, accidental: BOOLEAN _ FALSE, notehead: BOOLEAN _ FALSE, sync: BOOLEAN _ FALSE, display: DisplayModeFormat _ physical, noCarry: BOOLEAN _ FALSE, hardcopy: BOOLEAN _ FALSE, spare1: [0..512) _ 0, sheet: INTEGER _ 0, --will later be made obselete speed: INTEGER _ 0, --will later be made obselete key: INTEGER _ 0, --will later be made obselete spare5: INTEGER _ 0, spare6: INTEGER _ 0 ]; DisplayModeFormat: TYPE = MACHINE DEPENDENT {physical,logical,graphical}; END.