A C++/Python library to manipulate sheet music data
Project description
Maialib - Music Analysis Library {#mainpage}
Official website: Maialib Documentation
This library is a multiplatform set of musical tools that enable musical score analisys and composition in a easy and fast way.
The project core was wrote in C++17
, but it also has a Python
wrapper that allows a greater number of people (ie musicians not trained in IT) to also have in their hands the same power and musical tools available in maialib
.
Advantages
- Easy to use to musicians and musical researchers
- High computer perfomance and fast calculations
- Read and write musical scores (MusicXML file format)
You can easily import your sheet music to Python environment using:
from maialib import *
score = Score('examples/Beethoven/Symphony_9th.xml')
Now you can explore some maialib
features like:
- Find musical patterns
- Write your own scores from your custom algorithms
- Analyse scores in a musical statistical data perspective
- And much more!
Requirements
To run-only
- Python 3.8 (or greater)
To build from source
Applications:
- C++17 compatible compiler
- CMake 3.8
- Python 3.8
- Make
- Doxygen (Optional: To build documentation)
- Buildcache (Optional: To accelerate the build process)
- CppCheck (Optional: C++ Static Analyzer)
Python Dev-only dependencies
pip install pathlib
pip install cpplint
pip install wheel
pip install mypy
# To generate Python stubs
pip install pybind11-stubgen
# Mac users: May be you have to add the coverage and pybind11-stubgen on your `PATH` - /etc/paths
pybind11_mkdoc (github)
sudo apt install clang (pybind11_mkdoc dependency) - Linux/Mac Only
Tested Environments
Operational System | Compilers |
---|---|
Windows 10 x64 | Clang 15.0 (MSYS2) |
Linux Ubuntu 20.04 | GCC 9.3 |
Apple OSX 10.15 | XCode 11.5 (Command Line Tools) |
Documentation
This project have 2 documentation levels. One for each user type:
- Level 1 - User documentation: for musicians, musical researchers and non-professional IT people
- Level 2 - Developer documentation: A deeper information for professional C++ programmers.
Code Coverage
Click here to check the maiacore
C++ code coverage
Level 1: Python Tutorial
You can explore maialib
features looking at python-tutorial
folder.
There you will learn how to use and mix maialib
classes and functions to reach your musical goals
Level 2: Developer Documentation
You can browse the compiled doxygen
documentation opening docs/index.html
.
Quick Start
Build Python module from C++ source
Open a terminal (or CMD in Windows), enter inside of the maialib
folder.
Type: make
to build the Python module
When the build process finishes, type: make install
Done!
Frequent Asked Questions
1) Where can I find the XML file of a specific musical score?
To import musical scores the file extensions must be: *.xml
, *.mxl
or *.musicxml
You can easily export your music files to these file formats above from score editors, like:
- MuseScore (free!)
- Sibelius
- Finale
- Others
Many MusicXML
files are avaliable for free in the internet for download.
But if you don't have a specific MusicXML file, you can import the MIDI file in a score editor (like MuseScore) and then export the MusicXML
file from it.
Known issues to build from source
All Platforms
- Multiple Python versions installed, like:
Official Python
,Microsoft Python
,MSYS2 Python
and others can direct the build system to choose a wrong version to build and install the library.
To check all Python versions installed on your system, open theTerminal
(orCMD
on Windows) and type: - Linux or Mac: -which python
-which python3
- Windows: -where.exe python
-where.exe python3
Windows-Only
- Disable your antivirus or create a exception (CMake permissions)
Contact
Nycholas Maia - nyckmaia@gmail.com
Contributing
If you want...
License
Maialib is licensed under (GPLv3 License) [https://www.gnu.org/licenses/gpl-3.0.html]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for maialib-0.0.28-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63929f200c9a129becc59eafaceecd81fa2e2316b671ec7548cea3454415f480 |
|
MD5 | f5f0543561ebec59a08d73c51a14777c |
|
BLAKE2b-256 | 847b897d5530587f526c5b168234659b933c073f0969274a011adf8d27d1aa41 |
Hashes for maialib-0.0.28-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d317af6b6ce5d7b60859b84239c583b33c7b000bf6dad02a8fbbef1d2199a1e |
|
MD5 | ba7e5aa9cbbb3b3a11f7246e8a694e80 |
|
BLAKE2b-256 | 52fcc29263e08bc3640c36defbda1bbe323511d2ebac9ef220ffbfd8d5322b60 |
Hashes for maialib-0.0.28-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d87580be4d529fa988d086b26b49ceb4ca51bf7d5aafbaf44415ac0b9f885c9 |
|
MD5 | 64499fdcde43fa05fd4b688af31c3464 |
|
BLAKE2b-256 | c3cec987e0207c33056754f8a22f6661a8af47385e6c230d6646d0635f36e9b4 |
Hashes for maialib-0.0.28-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 254093af22d61d2a038b0e58c48464682258b401508e60c809ff7ef0fa1f741c |
|
MD5 | e131da583cb73f10fbbef0596da4dffc |
|
BLAKE2b-256 | ea17c0d20496ca378ff968f7b6257bd2e4e6afb01ee9b3521b252290fe7bb11a |
Hashes for maialib-0.0.28-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ef14895db30771361b5aee74a0fb90277abef5cb1a165e70d2678470c4c7240 |
|
MD5 | 7e62a35834d94548e0d788725f3dfe15 |
|
BLAKE2b-256 | 9eee0cbf155ef0bd447084582e47f177c6a33bfd3778e68f5d0e350eb36e7434 |
Hashes for maialib-0.0.28-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 163f19f8761f2d4fee96d92e6723e89241ca05305f5cdcb5e1a2af7f68ad9b84 |
|
MD5 | 90389608a5035ed2fd70f0c50c700faf |
|
BLAKE2b-256 | 6d6c4e1b269de616ecb8f1de0e2633bd42b66b6249d50f0c774feb071e986878 |
Hashes for maialib-0.0.28-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3aa881e343bc063dfd05f4fb49beccc68b8d384dbe373039ed986181e6b06ea0 |
|
MD5 | 1ab3d4dc1f13d85fe30770ac4fa629f9 |
|
BLAKE2b-256 | 53c5025dc4d733fb89048bf58861eee26e98bc3ec25c1dce04f1339c6e6811e1 |
Hashes for maialib-0.0.28-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 575d5166e7c9db844e03d41be41a54908b28979e979e92eeddeebe4044e2d4be |
|
MD5 | c9928436d82e46d17a9ea2f82492fbdc |
|
BLAKE2b-256 | 710e8eaa6bbee05e3bb4d93bdbe9ada4cc40fa4cacbf4cbb616c0dded1092ece |
Hashes for maialib-0.0.28-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6bc17f3e06ef0c6cd630f85b7b87e70eee304486d0ac7a05b4ae73e5987b37ed |
|
MD5 | c994b6bccaf2c15b32caa09e7d2af11b |
|
BLAKE2b-256 | e8d544c3ef34f73eea1ab15e61c10569a26f8df293ed585d3ea1ce13d7fa1321 |
Hashes for maialib-0.0.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b66383c08037171aed9f761204fe37997e46e90e4a20dcd96812760a7787bdd0 |
|
MD5 | 2d495c3cc516c8c857ded834b8820a84 |
|
BLAKE2b-256 | 6f30a2d87ecbcd90d0a731968c378769b0e6bc1efccda8a7698d6af52d0332d5 |
Hashes for maialib-0.0.28-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23034700cf0ad5150f03c8fb1481b250bf8751c23284b3c47b66b9a1c6a103d4 |
|
MD5 | 36fdbc15f9b90265c9636d947b369bcb |
|
BLAKE2b-256 | 73f70f502d737b596148f499d1c0354099e8dd6e020d77d5ee705d20338ef918 |
Hashes for maialib-0.0.28-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afc6b0055594200bae7679c41c29dbd201b15972002896d199b3a205f1bb08fe |
|
MD5 | b3e5edbdd1f18f496cbf0adb40e078b0 |
|
BLAKE2b-256 | a8c7b8c3130b519e2497681b03e50444fe2b89e15aad2cf034599a2c433c578a |
Hashes for maialib-0.0.28-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebd4e76eb0828babb588c83f4c1667e8255e7473ee8a1deda49f89d328a2651f |
|
MD5 | 4e4fc9de39cfb6b6f259b470153215b4 |
|
BLAKE2b-256 | 37556133b46c4cb04f49bfef27db97a6fcef553567d932ea273581265891e4b0 |
Hashes for maialib-0.0.28-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc80c87b3b1299e47e9c1479c396533148d298cc7873228703b3e77787c6599c |
|
MD5 | c78c593b1559c1a8af1429a964f09009 |
|
BLAKE2b-256 | 110659f032d83fa9b80d32911d9f4bc32c3c2b6aacc256d9a4b19eff04aa1828 |
Hashes for maialib-0.0.28-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b2a7b557a61ba17fb35905570c2cc39e4e9d8d247ff83d43770cf8b3a442066 |
|
MD5 | 9fdcd9e58d3fcc7e672483eafbf0eca4 |
|
BLAKE2b-256 | 25f316673473bf9293c47b9976603405165851f4810d44f033439050236f0bf0 |
Hashes for maialib-0.0.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1ffc61155877d53ad3da11cadc043d6fedab5630e1bfdbeeb7aa770c5646a6f |
|
MD5 | 8d132c88a00ef4cd439721e81b5d310d |
|
BLAKE2b-256 | b234acff6608dbbf8704d244c933aaf3a98df253e0d3cc5206a58036e902fd70 |
Hashes for maialib-0.0.28-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca66140bf3fd3abdd5948ad78bef58e14a4065ffb7dbab99b56838e8beea62cf |
|
MD5 | 8b3afa8e434c7cd9b8b9b9faf6d112ca |
|
BLAKE2b-256 | 29d2c38f2b1948346c7f5deb78a8c9bc03fb3fb3ab4a9dd18b503573b661867c |
Hashes for maialib-0.0.28-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0488f5704393ad004d790f00bde4ff32dfdaaf9b24377105975a21a3069a9fa1 |
|
MD5 | 861278484e1b1964beb08337b6c550a3 |
|
BLAKE2b-256 | 57e7c81755515f691033b0d38862d3f922894708d2ffa9abbf04e2e3a4b039f7 |
Hashes for maialib-0.0.28-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb73dd54788a2efd132e8bc6e4daed5cfe2e35f1f6f76e754178cfdd723a3b3b |
|
MD5 | 4b98f445f108ed273fe6b6c65760c7ae |
|
BLAKE2b-256 | ebef761fd672cc6ae90327f69c045d3c398f273552ec0b32b612226bea8612d8 |
Hashes for maialib-0.0.28-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f240595751155f64dde7dab9eb3cce0c2d7e233c6682e0973ed58022d32683c1 |
|
MD5 | 162af9d8a9dbaa165d20acf4f69c473b |
|
BLAKE2b-256 | 55b51fa936b39bcedb637a1cbb6b0741d820e40fb7670f340654a7b73f6fa43e |
Hashes for maialib-0.0.28-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e5607a0836e2e194fea49fea8011b7abf471f20931bba32535312d2d725c6a0 |
|
MD5 | 0e1498ac55aa4997fa12f9fbe15ff7db |
|
BLAKE2b-256 | f8768e85c1a22f0858e70ca36611ba48dd54fa3d8ad7afdd100a1e407d5c1203 |
Hashes for maialib-0.0.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dd428172fdd18b0d20b416b76ab2fa42d970d9d9eed48839cba775759c69c1e |
|
MD5 | 2c7d20db9677e1df95f5fb6f368ed203 |
|
BLAKE2b-256 | 3dcae9f2df57f11109efb83ae9e66ab56224a2dd04923134dda10d5d1c8e909a |
Hashes for maialib-0.0.28-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bad9d422efac56030beb8901ec0e9af1448124ff5d1f9bd7ab4f0441476a63c0 |
|
MD5 | 8b3799275328f87a13c2cc73a567df93 |
|
BLAKE2b-256 | 8b281117d42a05204b71dc484383553d361103482649bc7bb11b0e2553aeff27 |
Hashes for maialib-0.0.28-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55f14bb3f897c14f0b0bbf37592e37983fd7b3dda3eb03bd99c49bea2d092d42 |
|
MD5 | c34b0d46667d7949ddff4be33e77c8a2 |
|
BLAKE2b-256 | d315abc1300b2441018fb8700cfa2d7f6dad14263199000959254772d5a7517e |
Hashes for maialib-0.0.28-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fe2f562037cd6dcadf869c6ab150e85885c48c32819abc4bf98c092917a5a90 |
|
MD5 | 2bf8aaa520c185cc5ee281d2e0cb7245 |
|
BLAKE2b-256 | 3226576b1c8cf0b14677dba7c0b4bd96539730e2b3c62654b73f9ad2e274fc9b |
Hashes for maialib-0.0.28-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ff0145c8908e0132794259d6d48502826719e0022b8b03113883025a2d3d51a |
|
MD5 | b1eb138ce800bbd1616d9369689b1c42 |
|
BLAKE2b-256 | e38f9c2eb712553e70416de324b42166b66db1e98811f5754ed7d779991d6c69 |
Hashes for maialib-0.0.28-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 389a53d26da61cd50e16ba06dcc19961bbc5dac0ccebbee990246313c70514fa |
|
MD5 | 7a1ecf3113cd44b97ab3f688cadbe58b |
|
BLAKE2b-256 | 3baf4a2312905a31adc7e6f1e4a82310423a8c2747e942cbe8fbab90d12746b5 |
Hashes for maialib-0.0.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 684221a40b38e25ffb10fbee17d57ff3752aedc2c93407f8fdd8c4cd75e64cd3 |
|
MD5 | 5f1c77415afd0ccf82700280203f7ef9 |
|
BLAKE2b-256 | b40f47f609098608c7935d32afc742dc8f85145f60b480a77cc443ffdf6a7df3 |
Hashes for maialib-0.0.28-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85bdeeee4d0ebcffb4d080c4ee5219a3ac4e8d2a27fd38c78be30a123d729923 |
|
MD5 | bc8a98eba27a4e69cff7bd046518d773 |
|
BLAKE2b-256 | 9ed8f64a3747890b3b798f8744e364179f110f4247cc2b84f56349e1ac7c705f |
Hashes for maialib-0.0.28-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6204c72125ecdc3e5300159d2fa7f9ea1a50c6d3941842fa1094ddc41178bc34 |
|
MD5 | 29704f49b891b78a6d85d251f91f562c |
|
BLAKE2b-256 | 828f62adcf3af6a37851627a2a6d72f8060a634d9a236996914e67ca15c10854 |