Noteworthy 2 File Format

Noteworthy files are composed of three sections:
  1. Global Information
  2. Staff/Stave Information
  3. Object Information
These sections are in sequential order, and are of indefinite size.

Each section is composed of one or more records each of 22 (16H) bytes. The global information section will always contain only one record, the staff/stave section will have information according to how many staves the music contains, and the object section will contain all the different "objects" which appear on the staves.

All unused or otherwise blank records should be set to 0 (zero). Recommended values for some items will be put in parenthesis after the description.

Global Information Record
First record in file.
Byte Offset
(Hex)
Size Description
0 Byte Number of staves in file.
1-4 4 Bytes Unused (0)
5 Byte Default spacing (3)
6 Byte Pulse (3)
7 Byte Minimum beaming angle in degrees (10)
8-9 Word File's version number (200)
0A Byte Unused
0B-0C Word Header size in 0.01" (0)
0D-0E Word Footer size in 0.01" (0)
0F Byte Number of header objects (0)
10 Byte Number of footer objects (0)
11-15 5 Bytes Unused


Staff/stave Information Record(s)
One or more records based on Number of staves in file field of the Global Information Record. All X coordinates are in 1/120" from the first printable position on paper. All Y coordinates are in 1/72" from an arbitrary origin. Second and subsequent pages are merely larger coordinates than the first page; repagination dependant on page length is done when the file is read in.
Byte Offset
(Hex)
Size Description
0-1 Word Y-coord of center line of staff/stave.
2-3 Word Maximum Y of staff/stave.
4-5 Word Minimum Y of staff/stave.
6 Byte Staff/stave bracketed? (0=no/1=yes)
7 Byte Number of objects on staff/stave.
8-9 Word Minimum X value (20)
0A-0B Word Maximum X value (960)
0C Byte Staff/stave in same system as next? (0/1)
0D Byte Forced page break after staff/stave? (0/1)
0E-15 8 Bytes Unused (0)


Object Information Record(s)
One or more records based on the total number of objects for all staves.
Byte Offset
(Hex)
Size Description
0 Byte Staff/stave number of this object. (0 for header or footer, otherwise 1 and up.)
1 Byte Object number (1 and up.)
2-3 Word X-coord of object.
4-5 Word Y-coord of object.
6 Byte Symbol number. Symbol list not available at this time, but some objects do require specific symbol numbers (such as the Time Signature).
7 Byte Object type (see table below):
  1. Clef
  2. Key sig
  3. Time sig
  4. Common time sig
  5. Bar line
  6. Note
  7. Unused
  8. Accidental
  9. Unused
  10. Text
  11. Unused
  12. Straight line
  13. Curve
  14. Other (set by symbol number only)
  15. Arpeggiando Sign
8 15 Bytes Object information. See Object Information table below for specifics, and be sure to set all unused bytes to 0 (zero).
Object Information
Comes after the Object Type byte in the Object Information Record.
Object Type Byte Offset
(Hex)
Size Description
Clef 8 Byte Clef type:
  1. Treble
  2. Bass
  3. Alto
  4. Tenor
Key Signature 8 Signed Byte Key number. Negative values are flats, positive values are sharps, and 0 represents C major. (C major can be placed in case of later transposition.)
Time Signature X X The time signature is two different objects - one for the top number and one for the bottom. To define one of the objects, make an object, set its object type to 2, and define its symbol number as follows: For the numbers 0 through 9, add 8 and make this the symbol number. For the number 16, the symbol number is 18. The Y coordinate of the bottom number should be 12 more than the top.
Common Time 8 Byte Set to 0 (zero) for common time, 1 for cut time (alla breve).
Bar line 8 Byte Set to these numbers for:
  1. Single
  2. Double
  3. Repeat left
  4. Repeat right
  5. Repeat both ways
  6. End piece
Note 8 Byte Duration: Set to 0-7 for breve (double whole note) to hemidemisemiquaver (64th note).
9 Signed Byte Pitch: 0=center line, 1=line above, -1=line below.
A Byte Number of dots: 0,1,2
B Byte Stick direction: 0=up, 1=down, 2=none, 3=auto
C Byte Object number to which note is beamed back (0=not)
D Byte Object number to which note is beamed forward (0=not)
E Byte Rest or note? 0=note, 1=rest
F Byte Emphasis: 0=none, 1=with mark
10 Byte Staccato: 0=none, 1=dot, 2=staccatissimo
11 Byte Object number to which note is tied to left.
12 Byte Object number to which note is tied to right.
13 Byte Tie direction: 0=under, 1=over. (Set to 0 if not tied.)
14 Byte Note style: 0=normal, 1=small, 2-3=specials, 4=cross.
Accidental 8 Signed Byte Pitch - set identically to the note pitch above.
9 Signed Byte Type: -2=2 flat, -1=1 flat, 0=natural, 1=1 sharp, 2=x
A Byte Size: 0=normal, 1=small
Text 8 Byte Font:
  1. Small
  2. Large
  3. Small italic
  4. Large italic
  5. Gigantic
9 Byte Number of characters, 0 (zero) through 12.
A-15 12 Bytes Characters to print.
Straight Line 8-9 Signed Word X-coord relative to start.
A-B Signed Word Y-coord relative to start.
Curve 8 Byte Thickness - unused now so set to 1 (one).
9 Byte Next curve point's object number.
A Byte Last curve point's object number.
B-C Word Minimum Y of curve.
D-E Word Maximum Y of curve.
Other X X No parameters. Object is shown based only on its symbol number.
"Twiddly" 8 Byte Number of wiggle characters.