Representations¶
MusPy supports several common representations for symbolic music. Here is a comparison of them.
Representation | Shape | Values | Default configurations |
---|---|---|---|
Pitch-based | T x 1 | {0, 1, …, 129} | 128 note-ons, 1 hold, 1 rest (support only monophonic music) |
Piano-roll | T x 128 | {0, 1} or N | {0,1} for binary piano rolls; N for piano rolls with velocities |
Event-based | M x 1 | {0, 1, …, 387} | 128 note-ons, 128 note-offs, 100 tick shifts, 32 velocities |
Note-based | N x 4 | N | List of (time, pitch, duration, velocity) tuples |
Note that T, M, and N denote the numbers of time steps, events and notes, respectively.
MusPy’s representation module supports two types of two APIs—Functional API and Processor API. Take the pitch-based representation for example.
- The Functional API provide two functions:
-
muspy.to_pitch_representation()
: Convert a Music object into pitch-based representation -muspy.from_pitch_representation()
: Return a Music object converted from pitch-based representation - The Processor API provides the class
muspy.PitchRepresentationProcessor
, which provides two methods: -muspy.PitchRepresentationProcessor.encode()
: Convert a Music object into pitch-based representation -muspy.PitchRepresentationProcessor.decode()
: Return a Music object converted from pitch-based representation