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.26
- 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.1.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71d872144aff7a6c4fd883bf51365888b07f7f4fbd2ee1a9b52f47ad8578857d |
|
MD5 | d98221bb6294bf2f07fc4cb947d09686 |
|
BLAKE2b-256 | 6e69b86af593ff198e39e165e144d48dd55f2fe9390c3588c3aaa90cc7afe40e |
Hashes for maialib-0.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c8006490d47873db1c5027a93ea1b76e9fef4f39056e385a255f3264b257c14 |
|
MD5 | 5c770b6d4f51e106ecc9bf320fdff2a0 |
|
BLAKE2b-256 | 4bfea6546b4605652208af80d323c884d1faf6ddb8c82b79d341affb3c938a84 |
Hashes for maialib-0.1.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38aed781e28b82a0623e8f4f8c27dae7d9f434a6b3fe61a661cbc3fc88059bea |
|
MD5 | 9a312a02e15654d48d48b347de9e0e32 |
|
BLAKE2b-256 | 72d59cba1a6fa9caa899a2ebf665f87a628fc57bb2776434d080acd2bc67405f |
Hashes for maialib-0.1.1-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 454ef7bdf75a9e405b0348f559b67726f8ddbf4f8118da5e9c05f4ef7fdcbee9 |
|
MD5 | e8b5b47f7177f8f3d1d1b47c17ab445c |
|
BLAKE2b-256 | ad42a047719e4c65e415ed51ac029c07692f52dd7e954a23566e36d850db4f58 |
Hashes for maialib-0.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b973fbf9cc26e721d83c85e2f7e93a2257b74544874527bed73beb30f39517f |
|
MD5 | 72ceee74ca710d7d596372fe98de7a74 |
|
BLAKE2b-256 | ff6b4c1c039d3fb6de29f5d507e2e475d328e497b4ce7f60f5dbab78c0502f0f |
Hashes for maialib-0.1.1-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f081a14140d17f39351f01ef32fb825d9954efe15aabfc63f64eefdc54d50ddc |
|
MD5 | 65f7de42015ad356e0b7a08c687cfb02 |
|
BLAKE2b-256 | 7f80bbf7e863a2cb29bd60ee668fd05991be28e0331f6699fe19959770601bb5 |
Hashes for maialib-0.1.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80e9b6f52ae78fdfde2689a89f6ead5f20c4cb1291dcf37ae1256678bfbccb47 |
|
MD5 | abfe0c8d21c4335afac62a319d79be14 |
|
BLAKE2b-256 | d22a097ffefc0e9ae1e9eb2f6fb8d58534c4b1d6ace1165931b554deb9e951b4 |
Hashes for maialib-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50b5118a0d1ebc0b7cb0579d6ec229085632cfa997bded454d4114984655ee5f |
|
MD5 | b4bc40e5f4167ccb51220a8397ee0f91 |
|
BLAKE2b-256 | d3c49632080c84f56f9d99ca936f4f7e5dbee4cccd7d12e6904e6871f160e767 |
Hashes for maialib-0.1.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b609cb91a5ca5965b6f19960174b3472b88cc061d3b49bb5038af5d47adc05f4 |
|
MD5 | 2e0a5fafb53d8a1c2b26452525953198 |
|
BLAKE2b-256 | e081e88ec91220eaeafdeaa5f22147ca70689a47294153068a3850ec48d54c91 |
Hashes for maialib-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74b4195c3e246ddec609fc1763d8c48bb75a8a235664f6097972b0b0b52438c9 |
|
MD5 | aa06f8e7f948b1b18876941a48d4b75a |
|
BLAKE2b-256 | b2608ae009eb041d973a0bcbfd26f3e9c147cc522fa4d16180879a5952f0b89e |
Hashes for maialib-0.1.1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38b397ee19ccc74c172df55ccd01708ca8a0649d8c9f44f95bfd24387a7d34b2 |
|
MD5 | bb7046d0988a2c578aa76f6b8b78d6f2 |
|
BLAKE2b-256 | 6e2bf6fca5e756e1e4329e1d53477ebf1c31c3c31d63b577b8748a233d61803e |
Hashes for maialib-0.1.1-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63f3a3ac3c983e7bfd5a0b0b099d4e8e5389f66ea5657eeafdce4576cc04638e |
|
MD5 | c1b33bf25a590c07ce53be7692aae96d |
|
BLAKE2b-256 | 86dcad1958bb22b825a35185ef540e8bb3175f3e0dee70fb40c0e0c94d841a96 |
Hashes for maialib-0.1.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01d67fe915438c72d95549b733b0fdac0c3e7eb6eac2d57b51142b82ce8d1ec0 |
|
MD5 | 7e8a1b63bbcfc90822db42c60a10dbd8 |
|
BLAKE2b-256 | ad97ca980dca0db353568c7f72e0793666b69154a4a5176ffc589e72afdc9751 |
Hashes for maialib-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cbafc9441e229b571dc7ebd0a2ec4f36badbde3223c917ed880cb2054537849 |
|
MD5 | cb0f71de48c8914ae7ad62978607aa97 |
|
BLAKE2b-256 | ef6f5e28a4bfad59762e733b27e15346b36c5d19c177dcf9ad1e762fa8098720 |
Hashes for maialib-0.1.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0826111a09e7c1d72f5c293cca554dfbbd86da9b8f6f40a174662d2d3fad715 |
|
MD5 | 17d667fdb64e76ae80de210615f5191b |
|
BLAKE2b-256 | e6dee660fb971c35f05d75549327eece8ab376eee6129b38d8a8a7f2ee5676f8 |
Hashes for maialib-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24bd0b65282c4e1585c163577b487ed2465aa1bfab15d4322dbae4d4930226b1 |
|
MD5 | fc8c1e2b201ecf3b72c841e8ef5b4676 |
|
BLAKE2b-256 | 5565fab2722cb1a83f1d9f61e9e85658e5af7e5e4c1ee89f4121a714919bf8a6 |
Hashes for maialib-0.1.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7bcc504acd6a4699d6f3d666e4d0992b81a426c7bd636ccb395927d94310d6f |
|
MD5 | 5507c23b2aaf2ade3dfb4d2537719eb8 |
|
BLAKE2b-256 | 89a766020aa03dfa2d670650e484be87c3687d4e2c2c57375311bd7ebc467195 |
Hashes for maialib-0.1.1-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4448c06e7284f1646ad5017830300332d9d23902898ba5c22e7b7c712d49f6b8 |
|
MD5 | c61d4ed91cc429485bc99d0be2516fcb |
|
BLAKE2b-256 | 38e3e4aa0487e0de57e22dbb6012c523ec82bcde6b7dbccdd210bd79d283890a |
Hashes for maialib-0.1.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1af3451568c41b0b15abd4230ad3ebbe929a0fa4c5bd56656aea23cf44a3a8e |
|
MD5 | d76f2178f55c1124160f85f462f82ef8 |
|
BLAKE2b-256 | 280ae94674fc121bf55145cbe82779c35b8c7732550a22e64f159c5e7d3f4f71 |
Hashes for maialib-0.1.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 570811e64983a56997303c2918685838c0c421cd618e9883664ce6642da506d7 |
|
MD5 | 4a1859faaf9328d3cf197b4c0519d863 |
|
BLAKE2b-256 | d8a5fd85d94796043566823f9459fcf9664df4a38debd9989249ee0542264fd7 |
Hashes for maialib-0.1.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a99a1742e96f47919881072101ba29c79da31567b040cd6ea492703cc0965ec9 |
|
MD5 | f7c4a3e4ceb707abd767748480012621 |
|
BLAKE2b-256 | 9d1ca3de07910862d7cbd767ffc62870c3a8e5df68a0b6d79b60adec7999cd98 |
Hashes for maialib-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcf0c518f678881c6fa8d153a2e635a2e5bbc313b146fc02390e0bac31d57603 |
|
MD5 | 4b6ced92230431dca07e96e9c6f87b6b |
|
BLAKE2b-256 | 0c48d4e5ec6d3a240bc1c20eea23d6da8949c14e9b7e141ef0f61b6c675d5161 |
Hashes for maialib-0.1.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94d764901595c76741fc117249c9a54daa58d029456aaa87d1629730c7ec14a6 |
|
MD5 | 54e16c20effe217a5c2c2f46bf659f42 |
|
BLAKE2b-256 | 97fb8931137824b634c81207048a44d9a95c6dd8a8442988665629cfed58da37 |
Hashes for maialib-0.1.1-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c86fbf7b07931560d86a2cf77eb910a32a3d48cf515d78b2a0505f0426fd69c5 |
|
MD5 | d11e1f18d31dd9fc459a30f82a684ebe |
|
BLAKE2b-256 | 703590036dd69511f39bf8614bf6eac89555945d6daa4fe968933e5ba1e130f5 |
Hashes for maialib-0.1.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1923f2a56a5b326a3b3e6071ed6abdccc91dd0e211cd308b0a86f13bcc18efa7 |
|
MD5 | 29e539346cfa482016c58ba387a441b8 |
|
BLAKE2b-256 | dbe8de69202510a24a84d1082a5fdf1bf5062a182f2bbeb97fb7682ef1b494e3 |
Hashes for maialib-0.1.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6513b2c56cbe09bd0c13d3eaafc6f8469a6e5098bd344c0b56db0dc5fc8b869 |
|
MD5 | bde5a6da3b5012ff28ceb3cce0da8dde |
|
BLAKE2b-256 | c743862bb9184d41f4f831cbf039b9d254c48ece3d71295851b8d79cf53d316a |
Hashes for maialib-0.1.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ed86249c01016b0d1fb11f9e1b399ab18d5395fedeeaaeea71851fc0fa80e42 |
|
MD5 | 8f043d02e970edf54600c36d2fdf277e |
|
BLAKE2b-256 | 9adc5bdcfd499fba0877a4b81247f97e0421950858b343c39029d1561c07d95b |
Hashes for maialib-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08a5ebd2b6289d8ec9139e11a2228541871aac890dbd483f443974220b174ad5 |
|
MD5 | 6b4fdc786ea191dc7647d4ec860f92c8 |
|
BLAKE2b-256 | 279ad9a01b08485abaa2153b3de645441fd45a24e591b2347c9f78b6a50e88b6 |
Hashes for maialib-0.1.1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47b0fdb658f597ef94b8e177e51f1ba241e536f59ceed07d04abd6b2576978da |
|
MD5 | b8990b9dd0468286344964a08665d909 |
|
BLAKE2b-256 | d59b9a2fc9d3b2fa0caff0815bb58e86ef71bd30b725bfa14d1ceab899f348f9 |
Hashes for maialib-0.1.1-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2fcce98eb46306ebb3bc588a341a84a36f406510a17f325ece6da4441625197 |
|
MD5 | 52c88f0ae8dd50081258e0fe4b31b5a4 |
|
BLAKE2b-256 | b759c832b8817d1ca0a9ffec44b109e169a2e479420fb848f1fdecaa06672e30 |