Changelog — ms3 0.4.9 documentation

# Changelog

## Next version

- Made the use of `labels_cfg` more consistent.

- improved chord lists: * include system and tempo texts * new algorithm for correct spanner IDs (i.e. for Slurs, Pedal, HairPins, Ottava) * lyrics: still extracts only the last verse but now in the corresponding column, e.g. `lyrics:3` for verse 3.

## Version 0.4.9

- enabled `import from ms3` for all utils

- new command `ms3 update` for converting files and moving annotations to the Roman Numeral Analysis layer

- new command `ms3 metadata` for writing manually changed information from `metadata.tsv` to the metadata fields of the corresponding MuseScore files

- improved the `ms3 extract` command: * added option `-D` for extracting and updating `metadata.tsv` and `README.md` * added option `-q` for adding ‘quarterbeats’ and ‘durations_quarterbeats’ columns * included default paths for the capital-letter parameters

- improved the `ms3 compare` command: * now works with ‘expanded’ TSVs, too (not only with ‘labels’) * allows ‘label’ column to include NaN values

- improvements to Parse() objects: * attempts to parse scores that need file conversion (e.g. XML, MIDI) * `get_lists()` method now allows for adding the columns `quarterbeats` and `durations_quarterbeats`, even without unfolding repeats * adding ‘quarterbeats’ without unfolding repeats excludes voltas * new method `get_tsvs()` for retrieving and concatenating parsed TSV files * Parse() now recognizes `metadata.tsv` files, expanded TSVs, and TSVs containing cadence labels only * parsed `metadata.tsv` files can be retrieved/included via the method `metadata()` * new method `update_metadata()` for the new `ms3 metadata` command * decided on standard index levels `rel_paths` and `fnames` * improved matching of corresponding score and TSV files

- improvements to Score() objects: * new property Score.mscx.volta_structure for retrieving information on first and second endings

- improvements to Annotations() objects: * correct propagation of `localkey` for voltas

- improvements to commandline interface: * added parameter `-o` for specifying output directory * harmonized the interface of the `ms3 convert` command * parameter `exclude_re` now also filters paths passed via `-f`

- changed logging behaviours: * write only WARNINGs to log file * combine loggers for filenames independently of file extensions

- improved extraction of instrument names for metadata

- improved `ms3 compare` functionality

- restructured code architecture

- renamed master branch to ‘main’

- many bug fixes

## Version 0.4.8

- now reads DCML labels with cadence annotations

- unified command-line interface file options and included `-f file.json`

- Parse got more options for creating DataFrame index levels

- Parse.measures property for convenience

- bug fixes for better GitHub workflows

## Version 0.4.7

- Labels can be attached to MuseScore’s Roman Numeral Analysis (RNA) layer * parameter label_type=1 in both Score.attach_labels() and Parse.attach_labels() * Annotations.remove_initial_dots() before inserting into the RNA layer * Annotations.add_initial_dots() before inserting into the absolute chord layer

- interpret all #vii in major contexts as vii when computing chord tones

- code cosmetics and bug fixes

## Version 0.4.6

- ms3 extract and Parse.store_lists() now have the option unfold to account for repeats

- minor bug fixes

## Version 0.4.5

- added ‘ms3 compare’ command

- support for parsing cap, capx, midi, musicxml, mxl, and xml files through temporary conversion

- support for parsing MuseScore 2 files through temporary conversion

## Version 0.4.3

- added ‘ms3 check’ command

- support of coloured labels

- write coloured labels to score comparing attached and detached labels to each other

- better interface for defining log file paths (more options, now conforming to the Parse.store_lists() interface)

- fixed erroneous separation of alternative labels

## Version 0.4.2

- small bug fixes

- correct computation of chord tones for new DCML syntax elements `+M`, `-`, `^`, and `v`

## Version 0.4.1

- ms3 0.4.1 supports parsing (but not storing) compressed MuseScore files (.mscz)

- Installs “ms3 convert” command to your system for batch conversion using your local MuseScore installation

- “ms3 extract” command now supports creation of log files

- take `labels_cfg` into account when creating expanded chord tables

## Version 0.4.0

- The standard column ‘onset’ has been renamed to ‘mc_onset’ and ‘mn_onset’ has been added as an additional standard column.

- Parse TSV files as Annotations objects

- Parse.attach_labels() for inserting annotations into MuseScore files

- Prepare detached labels so that they can actually be attached

- Install “ms3 extract” command to the system

- Including da capo, dal segno, fine, and coda for calculating ‘next’ column in measures tables (for correct unfolding of repeats)

- Simulate parsing and table extraction

- Passing labels_cfg to Score/Parse to control the format of annotation lists

- Easy access to individual parsed files through Parse[ID] or Parse[ix]

- parse annotation files with diverging column names

## Version 0.3.0

- Parse.detach_levels() for emptying all parsed scores from annotations

- Parse.store_mscx() for storing altered (e.g. emptied) score objects as MuseScore files

- Parse.metadata() to return a DataFrame with all parsed pieces’ metadata

- Parse.get_labels() to retrieve labels of a particular kind

- Parse.info() has improved the information that objects return about themselves

- Parse.key for a quick overview of the files of a given key

- Parse can be used with a custom index instead of IDs [an ID is an (key, i) tuple]

- Score.store_list() for easily storing TSVs

- renamed Score.output_mscx() to store_mscx() for consistency.

- improved expansion of DCML harmony labels

## Version 0.2.0

Beta stage:

- attaching and detaching labels

- parsing multiple pieces at once

- extraction of metadata from scores

- inclusion of staff text, dynamics and articulation in chord lists, added ‘auto’ mode

- conversion of MuseScore’s encoding of absolute chords

- first version of docs

## Version 0.1.3

At this stage, the library can parse MuseScore 3 files to different types of lists:

- measures

- chords (= groups of notes) * including slurs and spanners such as pedal, 8va or hairpin markings * including lyrics

- notes

- harmonies

and also some basic metadata.

## Version 0.1.0

- Basic parser implemented

- Logging

- Measure lists