CoolFace
Datasetpublic

BowenC/Orchestra_Layout_Dataset

Orchestral Score Layout Dataset Ground-truth annotations for staff layout detection in orchestral music scores, covering two Tchaikovsky symphonies. Contents dataset_layout/ ├── Tchai_4.pdf # Source PDF — Tchaikovsky Symphony No. 4 ├── Tchai_4/ # Page images (PNG, one per page) ├── Tchai_4_csv_gt/ # Per-page CSV ground truth for Tchai_4 │ ├── Tchai_6.pdf # Source PDF — Tchaikovsky Symphony No. 6 ├── Tchai_6/… See the full description on the dataset page: https://huggingface.co/datasets/BowenC/Orchestra_Layout_Dataset.

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes132downloads
Dataset Card

Orchestral Score Layout Dataset

Ground-truth annotations for staff layout detection in orchestral music scores, covering two Tchaikovsky symphonies.

Contents

dataset_layout/
├── Tchai_4.pdf              # Source PDF — Tchaikovsky Symphony No. 4
├── Tchai_4/                 # Page images (PNG, one per page)
├── Tchai_4_csv_gt/          # Per-page CSV ground truth for Tchai_4
│
├── Tchai_6.pdf              # Source PDF — Tchaikovsky Symphony No. 6
├── Tchai_6/                 # Page images (PNG, one per page)
└── Tchai_6_csv_gt/          # Per-page CSV ground truth for Tchai_6
PiecePages
Tchaikovsky Symphony No. 4129
Tchaikovsky Symphony No. 6219

File Naming

Page images: Tchai_4/Tchai_4_001.png, Tchai_4/Tchai_4_002.png, … Per-page CSVs: Tchai_4_csv_gt/Tchai_4_001.csv, Tchai_4_csv_gt/Tchai_4_002.csv, …

The three-digit zero-padded number in the filename corresponds to the page number within the score (matching the page field in the CSV).

CSV Format

Each per-page CSV in *_csv_gt/ uses the following 15-column schema:

page, staff, system, staffgroup, num_ins, ens,
ins1, part1, tone1,
ins2, part2, tone2,
ins3, part3, tone3

Row structure

Each row describes one staff line on a page. A page typically contains multiple staves across one or more systems.

  • The page field is filled only in the first row of each page. Subsequent rows on the same page leave it blank.
  • In the per-page CSVs the page field is filled only in the first data row; the header is always present.

Column descriptions

ColumnTypeDescription
pagestring3-digit zero-padded page number (e.g. 001). Present only in the first staff row of each page.
staffintegerSequential staff index on the page, starting at 1.
systemintegerSystem (grand staff group) index on the page, starting at 1. Pages with only one system always have 1 here.
staffgroupintegerOrchestral section the staff belongs to (see table below).
num_insintegerNumber of instruments sharing this staff line (1 or 2). Empty cells should be treated as 1.
ensstringEnsemble qualifier for the staff: divisi (part splits into two), unis (unison), or empty.
ins1stringName of the primary (or only) instrument on this staff.
part1string/intPart number of ins1 when the section has multiple players (e.g. 1, 2). Empty if not applicable.
tone1stringTransposition key of ins1 (e.g. B, F, A). Empty for non-transposing instruments.
ins2stringName of the second instrument when num_ins = 2 (e.g. a piccolo sharing a flute staff).
part2string/intPart number of ins2.
tone2stringTransposition key of ins2.
ins3stringName of a third instrument (reserved; not used in current annotations).
part3string/intPart number of ins3.
tone3stringTransposition key of ins3.

Staffgroup

staffgroup is a sequential integer that groups adjacent staves belonging to the same orchestral section (e.g. all woodwind staves share one value, all brass staves share the next, and so on). The numbering restarts from 1 on each page and within each system, so the values themselves carry no fixed meaning — only equality matters: staves with the same staffgroup value belong to the same section. In a typical orchestral score the groups follow the conventional order: Woodwinds → Brass → Percussion → Strings.

Example — single-system page (Tchai_4 page 001)

csv
page,staff,system,staffgroup,num_ins,ens,ins1,part1,tone1,ins2,part2,tone2,ins3,part3,tone3
001,1,1,1,,,flute,,,,,,,,
,2,1,1,,,oboe,,,,,,,,
,3,1,1,,,clarinet,,B,,,,,,
,4,1,1,,,bassoon,,,,,,,,
,5,1,2,2,,horn,1,F,horn,2,F,,,
,6,1,2,2,,horn,3,F,horn,4,F,,,
,7,1,2,,,trumpet,,F,,,,,,
,8,1,2,2,,trombone,1,,trombone,2,,,,
,9,1,2,2,,trombone,3,,tuba,,,,,
,10,1,3,,,timpani,,,,,,,,
,11,1,4,,,violin,1,,,,,,,
,12,1,4,,,violin,2,,,,,,,
,13,1,4,,,viola,,,,,,,,
,14,1,4,,,cello,,,,,,,,
,15,1,4,,,bass,,,,,,,,

Staff 5 has num_ins=2 and carries Horn 1 and Horn 2 on the same line; their shared transposition key is F.

Example — multi-system page (Tchai_4 page 004)

csv
page,staff,system,staffgroup,num_ins,ens,ins1,part1,tone1,ins2,part2,tone2,ins3,part3,tone3
004,1,1,1,,,clarinet,,B,,,,,,
...
,9,1,3,,,bass,,,,,,,,
,10,2,1,,,horn,,F,,,,,,   ← system 2 begins
,11,2,2,,,violin,1,,,,,,,
...

When a page contains multiple systems, the system counter increments and staves are renumbered from 1 for each system within the staff column (sequential across the whole page).