Partitura Versions Save

A python package for handling modern staff notation of music

v1.4.1

7 months ago

Bug Fixes

  • remove unnecessary escape character for correct parsing of sharp accidentals in nakamura match files.
  • don't consider the propriety doc_order for sorting notes in the matchfile_from_alignment function if it is not present. This propriety is only present in parts from musicxml scores and previously resulted in an exception for other score formats. This solves https://github.com/CPJKU/partitura/issues/326
  • during matchfile parsing, voice info is now parsed as follows: If there is no voice info, all notes get assigned voice number 1. If there is only voice info for the solo voice, the non-solo voiced notes get voice 2. If multiple notes have different voices, but not every note has a voice annotated, those with voice annotation get the annotated voice number and those without voice annotation get assigned the max voice+1 voice number. Previously all notes were assigned to voice 1 if there were any None voiced note
  • during matchfile parsing, all note classes are now matched correctly. Previously classes MatchSnoteTrailingScore and MatchSnoteNoPlayedNote were always marked as MatchSnoteDeletion and MatchHammerBounceNote, MatchTrailingPlayedNote, MatchTrillNote always ended up as MatchInsertionNote. This solves https://github.com/CPJKU/partitura/issues/286
  • during matchfile parsing, lines which can't be parsed are removed. Before they ended up as None in the output.

v1.4.0

8 months ago

New Features

  • new class for performed notes
  • minimal unfolding for part
  • updated Musescore parser for version 4
  • load_score auto-selects parser based on file type
  • new attributes for Score object for capturing meta information
  • new score note attributes in matchfile export (grace, voice_overlap)
  • new tempo_indication score property line in matchfile export

Bug Fixes

  • Fixed bug: #297
  • Fixed bug: #304
  • Fixed bug: #306
  • Fixed bug: #308
  • Fixed bug: #310
  • Fixed bug: #315

Other Changes

  • new unit test for cross-staff beaming for musicxml

v1.3.1

10 months ago

New Features

  • (Partial) match note ID validation.
  • Normalization module and (partial) normalization defaults for note and performance features.

Bug Fixes

  • Fixed bug: #289
  • Fixed bug: #277
  • Fixed bug: #275
  • Fixed several bugs of fixed-size note feature array extraction: #270, #271, #272
  • Fixed bug: #269

Other Changes

  • Encoding of Dynamic Score Markings in note feature arrays changed to a simple ramp from 0 to 1, starting at the start position of the marking and ending at the end.
  • Refactor all alignment-related processing to performance_codec.

v1.3.0

11 months ago

New Release 1.3.0 (new features)

This PR addresses release 1.3.0, it includes several bug fixes, code cleaning, documentation, and new functionality.

New Features

  • Enhanced Performance features in the same fashion as the note features. Use: partitura.musicanalysis.make_performance_features(score, performance, alignment, feature_functions);
  • Fixed-size option for Note features. Use: partitura.musicanalysis.make_note_features(score, force_fixed_size=True)
  • Create a score from a note array functionality. Call: partitura.musicanalysis.note_array_to_score(note_array);

New Optional Features

  • If music21 is installed : Import music21 to Partitura by calling partitura.load_music21(m21_score)
  • If MidiTok is installed : Export Partitura Score to Tokens by calling partitura.utils.music.tokenize(score_data, tokenizer)

Bug Fixes

  • Fixed bug: #264
  • Fixed bug: #251
  • Fixed bug: #207
  • Fixed bug: #162
  • Fixed bug: #261
  • Fixed bug: #262
  • Fixed Issue: #256
  • Fixed bug: #133
  • Fixed bug: #257
  • Fixed bug: #248
  • Fixed bug: #223

Other Changes

  • Minor Changes to the Documentation
  • Addition of Docs link to the GitHub header
  • Upgraded Python version requirements to Python>= 3.7

v1.2.2

1 year ago

New features

  • slicing performed parts
  • roman numeral analysis
  • harmony class for part and export
  • staff with custom number of lines
  • transposition by intervals

Bug fixes

  • file naming bug in load_musicxml()
  • fixed bug in score part unfolding
  • bugfix for fine, ritenuto parsing and unfolding
  • bugfix for performance codec

Other changes

  • Improved documentation
  • Added contributing file

v1.2.1

1 year ago

Release date: 2023-02-09

This is an minor update with bug fixes.

Bug fixes

v1.2.0

1 year ago

Release date: 2022-12-01

This is an update with new features including I/O support of the newly released match file format version 1.0.0 (and all prior versions).

New features

  • Load and save alignments, performances, and scores stored in match files (.match) of all available versions
  • Support for mei loading via verovio (if installed)
  • PerformedPart notes store timing information in both ticks and seconds
  • Support for pitch class piano rolls
  • New MIDI time conversion functions

Bug fixes

  • Fix render via musescore (if installed)
  • Fix bug slowing down musicxml export
  • Fix consecutive tie bug in kern import
  • Gracefully handle slur mismatch in kern import
  • Fix metrical position flag in note arrays
  • Fix in MEI import and handling multiple staff groups inside the main staffGroup
  • Fix measure map for single measure parts

Other changes

v1.1.1

1 year ago

New features:

  • New minor feature : Adding midi pitch to freq for synthesizer add reference-based midi pitch to freq #163

Bug fixes:

  • Documentation Fix of ReadTheDocs
  • Bug fix Bug synthesizing scores with pickup measures #166 Synthesizing score with pick up measure
  • Bug Fix of kern import Kern import fix #160
  • Bug Fix of Musicxml import repeat infer Bug with musicxml Import #161
  • Bug fix Note array with empty voice Note array from note list with empty voice bug. #159
  • Fix synthesizing scores with pickup measures #167

Other changes:

  • Encoding declaration on all files.
  • Renaming master branch as main

v1.1.0

1 year ago

Release 1.1.0

Release date: 2022-10-04

This is a major update with some new features including sonification of score and performance, and meter estimation

New features

  • User can sonify performance and score using simple additive synthesis (exports wav using scipy);
  • Meter estimation method in music analysis using Automatic extraction of tempo and beat from expressive performances. Simon Dixon (2001).

Bug fixes

  • Unified method of importing and exporting scores and performance.

Other changes

  • Documentation has been updated with notebook tutorial on ReadTheDocs and outdated usage was removed;
  • Added Code of conduct to header;
  • Pytorch is added as an optional dependency for performance_codec encode to combine with onsetwise_to_notewise and notewise_to_onsetwise functions.

v1.0.0

1 year ago

Release date: 2022-09-20

This is a major update with several new features including import from kern and mei, note features, performance codec, new score class, and more.

API changes

  • Different __call__ for note_array attribute (in Score, Part, PerformedPart and PartGroup). note_array is now called as a method with brackets. One can specify additional fields for the note array such as key, pitch spelling, time signature, and others.
  • Every score is imported as a Score object where each part can be accessed individually.

New features

  • We now support import from humdrum **kern, and MEI (coming soon import Musescore and Music21, export MEI).
  • The music analysis functions now include:
    • The basis features (from the Basis Mixer) use by typing : partitura.utils.make_note_features(part).
    • A simple version of the Performance Codec with encode, and decode functions.
  • The part object now contains several new methods such as: part.measures(), part.use_musical_beat(), and others.
  • Multiple parts of the same score can now be merged to one even if they contain different divs, call: partitura.score.merge_parts([p1, p2, ...]).
  • Ornaments now are supported.
  • Added i/o functionality for parangonada
  • There is now an unpitched note class.
  • Added unzipping for compressed musicxml files on import.
  • Added unifying function for import of individual score formats as a load_score function.
  • Added score unfolding features.

Bug fixes

  • Pianoroll starting with silence mismatch on pianoroll creation fixed.
  • Fixed consistency of time signature map.
  • Fixed pianoroll to note_array.
  • Fix for unpitch musicxml elements.
  • updated music analysis algorithm for Voice Separation based on Chew.
  • ensure_note_array now works even with parts with different divs.

Other changes

  • Logger is replaced by warnings.
  • Add documentation
  • Code cleanup
  • Coverage support
  • Unitesting running as a workflow