Releases: CPJKU/partitura
Releases · CPJKU/partitura
Release 1.0.0
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__
fornote_array
attribute (inScore
,Part
,PerformedPart
andPartGroup
).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 basis features (from the Basis Mixer) use by typing :
- 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
Release 0.4.0
Release date: 2021-05-28
API changes
- Different format for
note_array
attribute (inPart
,PerformedPart
andPartGroup
). The name of the fields in the note arrays for onset and duration information now include the units:beat
,quarter
, anddiv
for scores andsec
for performances. - The music analysis functions now accept
Part
andPerformedPart
as well as note arrays - Support for all MIDI controls in
PerformedPart
. The controls are only stored by their CC number (not name). - Add default program change option to
PerformedPart
New features
- Add function to create 2D pianoroll representations from
Part
,PerformedPart
or note arrays. - Add document order index to parts read from MusicXML
- Support for sustain pedal info in MusicXML files
- Add tonal tension profiles by Herremans and Chew (2016)
- Add key_signature_map to Part objects
- Add read support for Match and Corresp files of Nakamura's music alignment tool
- Add
sanitize_part
function removing incomplete slurs and tuplets.
Bug fixes
- Fix tempo change bug in load_performance_midi
- Fix saving parts with anacrusis to score MIDI
- When defining
Note
objects, lower-case note names are converted to upper-case. Before this the behavior was undefined when using lower-case note names - Fix bug in pattern for matchfile
- Fix issue with MIDI velocity for overlapping notes in piano rolls
- Fix bug in
add_measures
- Fix GraceNote bug
Other changes
- Add documentation
- Code cleanup
Release 0.3.5
Release date: 2019-11-08
Other changes
- Update documentation
Release 0.3.4
Release date: 2019-11-08
API changes
- Rename
out_fmt
kwarg tofmt
inshow
- Add
dpi
kwarg toshow
- Rename
show
function torender
New features
- Save rendered scores to image file using
render
- Add
wedge
attribute to DynamicLoudnessMarkings to differentiate them
from textual directions
Bug fixes
- Do not crash when calling time_signature_map on empty Part instances
- Fix bug in repeat unfolding
Release 0.3.3
Release date: 2019-11-04
Bug fixes
- Fix missing dedent import
Release 0.3.2
Release date: 2019-11-03
API changes
- More systematic direction ontology
New features
- Add
grace_seq_len
property to grace note - Add
backwards
keyword arg toiter_grace_seq
Bug fixes
- Fix regression in slur handling; Remove unended objects in import
Release 0.3.1
Release date: 2019-11-01
Bug fixes
- Fix typo in ResetTempoDirection.reference_tempo
- Fix bug in Part.time_signature_map
Release 0.3.0
Release date: 2019-10.30
API changes:
- Rename load_midi -> load_score_midi
- Rename xml_to_notearray -> musicxml_to_notearray
- Rename divisions_map -> quarter_duration_map
- Page/System: rename nr -> number
- Make Part.points private (_points)
- Remove voice related methods on Note (only used in obsolete expand_grace_notes
version)
New features:
- Save Part as MIDI file (save_score_midi)
- Add PerformedPart to represent performances
- Load MIDI as PerformedPart (load_performance_midi)
- Save PerformedPart as MIDI (save_performance_midi)
- Add support for Match files (load_match)
- New options for iter_current_next
- Make_measures respects existing measures optionally
- Export articulations to musicxml.
- load_score_midi: Estimate staffs (if not specified)
- load_score_midi: Estimate voices (if not specified)
- load_musicxml: Set end times of score elements to start of next element of
that class (Page, System, Direction) - Define Incr/Decr loudness/tempo directions
- Add iter_prev/iter_next methods
- Be explicit about kwargs in Note creation
- Add show function to display score, using either MuseScore or Lilypond as
backend - Add load_via_musescore to load scores in other formats
Bug fixes:
- Better clef support in musicxml export
- export_musicxml: fixes in handle wedge/dashes export
- The order in which simulatenous notes are listed in a timepoint no longer
influences the chord-handling logic in voice estimation, and the musicxml
export. - Fix incorrect construction of dtypes for structarray in voice_separation
- Fix in anacrusis handling
- Fix in iter_current_next
- import_musicxml: check for crossing measure boundary
Other changes:
- Get rid of deprecated get_prev/next_of_type
- Tuplet/Slur: make use of getter/setter for start/end_note
- Improvements in parse_direction
- expand_grace_notes now simpy sets note durations, without shifting onsets
- Rename strictly_monophonic_voices keyword arg to monophonic_voices in
estimate_voices, and implement (previously unimplemented) functionality: With
monophonic_voice=False, notes with same onset and duration as treated as
chords and assigned to the same voice - More documentation
Release 0.2.0 (pre-release)
Release Notes
Version 0.2.0 (pre-release; Released on 2019-10-04)
API changes:
- The TimeLine class has been merged into the Part class
New features:
- Add
find_tuplets
andtie_notes
to public API - New Tuplet class analog to Slur, allows for better musicxml tuplet
support - Remove deprecated get_starting_objects_of_type/get_ending_objects_of_type (use
iter_starting/iter_ending)
Bug fixes:
- Multiple fixes in tuplet and slur handling
Other changes:
- Update package description/long description
- More documentation
- Add separate tuplet and slur test cases
- Improve show_diff
Partitura pre-release
Release Notes
This is a pre-release of the partitura package. MIDI export is missing and documentation is incomplete.
Version 0.1.2 (pre-release; Released on 2019-09-29)
API changes:
- New approach to handling divisions
- Treat missing key signature mode as major
- Function
iter_parts
accepts non-list arg - Don't do quantization by default
- Change make alter a keyword arg in Note constructor
- Remove
parse_words
from API - Export part-groups to musicxml
- Add PartGroup constructor keyword args
- Rename PartGroup.name -> PartGroup.group_name (for consistency)
- Rename Part.part_id -> Part.id
iter_parts
accepts non-list arg- Remove
Measure.upbeat
property (useMeasure.incomplete
)
New features:
- New add_measures function to automatically add measures to a Part
- Add inverted quarter/beat map
Bug fixes:
- Avoid sharing symbolic_duration dictionaries between notes
- Rework MIDI loading: do not accumulate quantization errors
- Make sure last tied note actually gets tied
- Do not populate symbolic_duration with None when values are missing
- When exporting to musicxml, avoid polyphony within voices by reassigning notes to new voices where necessary
- Filter null characters when exporting musicxml to avoid lxml exception
- Loggin: info -> debug
- Don't use divisions_map
- Fix leftover references to old API
- Fix
add_measures
- Handle part/group names when importing MIDI
- Fix bug in
divisions_map
- fix bug in
estimate_symbolic_duration
Other changes:
- Add test case for beat maps and symbolic durations
- Improve direction parsing
- Remove polyphony within voices when exporting to musicxml
- Add show function to show typeset score (using lilypondn)
- Add/improve documentation
- Improve pretty printing
- Remove trailing whitespace
- More exhaustive tuplet search
- Write tests for tuplet detection
- Write tests for importmidi assignment modes
- Rewrite quarter/beat map construction
- Create (non-public API) utils sub package