Skip to main content

A high performance MIDI file parser with comprehensible interface.

Project description

symusic

Build and upload to PyPI PyPI version

Symusic("Sybolic Music") is a cross platform note level midi decoding libaray with lightening speed, which is over 100 times faster than mido, the main midi parsing library in python.

The libaray is written in cpp and based on minimidi. It offers a python binding using pybind11.

Features

  • You can just read a midi file like score = symusic.Score("path to midi")
  • The time unit of the parsed data is the quarter note.
  • The tempo attribute in the tempo event represents quarter per minute (qpm)
  • We offer some batch operation functions for both Score and Track class:
    • shift_pitch(offset: int)
    • shift_velocity(offset: int)
    • shift_time(offset: float)
    • sort()
  • You can operate each note just like you did before in python (like PrettyMidi)
  • There are interfaces for generating pianoroll with any quantizations using Eigen in cpp:
    • Track.frame_pianoroll(quantization: int = 16)
    • Track.onset_pianoroll(quantization: int = 16)

TODO

Notice that this libaray is under development:

  • Writing back to midi files is currently not supported
  • Not all features in midi are suppored, like lyrics and pitchbend

Installation

Use pre-compiled version

pip install symusic

Build from source

Make sure that your system has cmake and c++ compilers

git clone https://github.com/Yikai-Liao/symusic --recursive
pip install ./symusic

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symusic-0.0.6.tar.gz (6.8 kB view hashes)

Uploaded Source

Built Distributions

symusic-0.0.6-pp310-pypy310_pp73-win_amd64.whl (192.6 kB view hashes)

Uploaded PyPy Windows x86-64

symusic-0.0.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (274.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

symusic-0.0.6-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (280.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

symusic-0.0.6-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (221.8 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

symusic-0.0.6-pp39-pypy39_pp73-win_amd64.whl (192.7 kB view hashes)

Uploaded PyPy Windows x86-64

symusic-0.0.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (275.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

symusic-0.0.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (281.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

symusic-0.0.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (221.7 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

symusic-0.0.6-pp38-pypy38_pp73-win_amd64.whl (192.6 kB view hashes)

Uploaded PyPy Windows x86-64

symusic-0.0.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (274.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

symusic-0.0.6-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (281.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

symusic-0.0.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (221.9 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

symusic-0.0.6-pp37-pypy37_pp73-win_amd64.whl (192.6 kB view hashes)

Uploaded PyPy Windows x86-64

symusic-0.0.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (274.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

symusic-0.0.6-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (280.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

symusic-0.0.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (221.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

symusic-0.0.6-cp312-cp312-win_amd64.whl (195.5 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

symusic-0.0.6-cp312-cp312-win32.whl (153.4 kB view hashes)

Uploaded CPython 3.12 Windows x86

symusic-0.0.6-cp312-cp312-musllinux_1_1_x86_64.whl (775.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

symusic-0.0.6-cp312-cp312-musllinux_1_1_i686.whl (828.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

symusic-0.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.7 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

symusic-0.0.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (284.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

symusic-0.0.6-cp312-cp312-macosx_11_0_arm64.whl (204.9 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

symusic-0.0.6-cp312-cp312-macosx_10_9_x86_64.whl (229.3 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

symusic-0.0.6-cp311-cp311-win_amd64.whl (194.4 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

symusic-0.0.6-cp311-cp311-win32.whl (155.0 kB view hashes)

Uploaded CPython 3.11 Windows x86

symusic-0.0.6-cp311-cp311-musllinux_1_1_x86_64.whl (772.0 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

symusic-0.0.6-cp311-cp311-musllinux_1_1_i686.whl (827.9 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

symusic-0.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (274.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

symusic-0.0.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (281.2 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

symusic-0.0.6-cp311-cp311-macosx_11_0_arm64.whl (203.6 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

symusic-0.0.6-cp311-cp311-macosx_10_9_x86_64.whl (222.9 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

symusic-0.0.6-cp310-cp310-win_amd64.whl (193.5 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

symusic-0.0.6-cp310-cp310-win32.whl (154.1 kB view hashes)

Uploaded CPython 3.10 Windows x86

symusic-0.0.6-cp310-cp310-musllinux_1_1_x86_64.whl (769.9 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

symusic-0.0.6-cp310-cp310-musllinux_1_1_i686.whl (827.0 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

symusic-0.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (273.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

symusic-0.0.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (280.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

symusic-0.0.6-cp310-cp310-macosx_11_0_arm64.whl (202.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

symusic-0.0.6-cp310-cp310-macosx_10_9_x86_64.whl (221.4 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

symusic-0.0.6-cp39-cp39-win_amd64.whl (183.8 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

symusic-0.0.6-cp39-cp39-win32.whl (154.2 kB view hashes)

Uploaded CPython 3.9 Windows x86

symusic-0.0.6-cp39-cp39-musllinux_1_1_x86_64.whl (770.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

symusic-0.0.6-cp39-cp39-musllinux_1_1_i686.whl (828.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

symusic-0.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (273.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

symusic-0.0.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (280.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

symusic-0.0.6-cp39-cp39-macosx_11_0_arm64.whl (202.4 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

symusic-0.0.6-cp39-cp39-macosx_10_9_x86_64.whl (221.6 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

symusic-0.0.6-cp38-cp38-win_amd64.whl (193.5 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

symusic-0.0.6-cp38-cp38-win32.whl (154.3 kB view hashes)

Uploaded CPython 3.8 Windows x86

symusic-0.0.6-cp38-cp38-musllinux_1_1_x86_64.whl (769.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

symusic-0.0.6-cp38-cp38-musllinux_1_1_i686.whl (827.9 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

symusic-0.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (273.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

symusic-0.0.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (279.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

symusic-0.0.6-cp38-cp38-macosx_11_0_arm64.whl (202.3 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

symusic-0.0.6-cp38-cp38-macosx_10_9_x86_64.whl (221.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

symusic-0.0.6-cp37-cp37m-win_amd64.whl (189.9 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

symusic-0.0.6-cp37-cp37m-win32.whl (155.1 kB view hashes)

Uploaded CPython 3.7m Windows x86

symusic-0.0.6-cp37-cp37m-musllinux_1_1_x86_64.whl (789.1 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

symusic-0.0.6-cp37-cp37m-musllinux_1_1_i686.whl (845.3 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

symusic-0.0.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (286.6 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

symusic-0.0.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (292.6 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

symusic-0.0.6-cp37-cp37m-macosx_10_9_x86_64.whl (211.9 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page