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-1.4.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67000b5dae2bd4114034825fe78863d779c31b4234f5bb454674f9580bb93a1b |
|
MD5 | f9c9486d2111249e295f4fea920b9e3f |
|
BLAKE2b-256 | 6ab84f7f9cf018c96ead0befb891d701a9bd0cb954162ea1c3b2996ef06c9864 |
Hashes for maialib-1.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dd0f7851873b022ca72ad97091a2d5d181bf1850b021ed0d3bed3b1b9ae03e0 |
|
MD5 | e99bb10e0746cf2ad253cfb27f77ce90 |
|
BLAKE2b-256 | ed5631094d44d7184edd093776baaeec1de8bed3be2dca80d1c7b7a09e94adc9 |
Hashes for maialib-1.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51c7edafc333878764877b6bfac52d1723f5f500222483ab4a4aa11f7a322436 |
|
MD5 | efdb2c9c41dc9c6ef21b8bbaa2ce9149 |
|
BLAKE2b-256 | f283f57304e570aa26285ee134644e60641d721cbece52c5420d9bd5b75757fb |
Hashes for maialib-1.4.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f0f6ce571ca0c3e545170111fde2cad5ca5391b740fb4c2bb326fb55f4ef7e2 |
|
MD5 | 889849e42058080b208df947a88bf1b8 |
|
BLAKE2b-256 | 1546ca01a32f8243286fbb27f2dc3a350f7cfaa467250e234b83264469f801b0 |
Hashes for maialib-1.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ea14f10477713b87455cf89059d659412cd61c397cafb442b3752aac9cc6b2c |
|
MD5 | 20cb52b7d31ff2f2f8adefae8e66bf4b |
|
BLAKE2b-256 | 8783d7c266fdb366d6c461688f55862f50edf99793a54b2353f6d67ccde84b2c |
Hashes for maialib-1.4.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a96cd331b065040ffe7432c4fc67f2f43969e62b471a916ed89cf3389f2f1192 |
|
MD5 | 66911178fa5b872f393191d8b1c5b50e |
|
BLAKE2b-256 | 60b9e3f5eb5abdc3918d918cf29b285b1199b621a3e9862b96e1d8bce73f9e7a |
Hashes for maialib-1.4.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 500559b96ab9d267d98fa345f82f7d896fef8d18601553b882edefc3f5c6a196 |
|
MD5 | 23dcd8bcd4da716e404c7371a540eb87 |
|
BLAKE2b-256 | 1b51e36b0c8f2e56f38a0dbc68e4c6dd1020ec62ddf46cbfd7a8cf3929eb3cde |
Hashes for maialib-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b985e02508d4199fa45b932d29729a98c9a034648a721db9cbcd39c36e6b8391 |
|
MD5 | 5ebbd4071dae00ce9218d88b7fcee76e |
|
BLAKE2b-256 | 625dc792ce106e164ab6709ee8d89e9be66daccb16617d7102f52c3c33d297b1 |
Hashes for maialib-1.4.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a76399d48a74ae1b722a88ab90da0dcee3754c905911ed848663c5bf1a9284d |
|
MD5 | 2c5cd6569eb2a8ace17e6419ff273012 |
|
BLAKE2b-256 | 4e154cd6a8f4e6ab46337669bdc7dadfd1d1180b2301239cace43d28e8dcfe63 |
Hashes for maialib-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea8ac16fe975cceaf1ee17d8c98dc9adf15c42136c9a309d6841de6863c2e305 |
|
MD5 | b62d56f1e832346332a0c85d6cd9958d |
|
BLAKE2b-256 | 3c2ae7d49605453f99534dc8a3a83dee1fbc57d4a4db47ab551b1befbd42e191 |
Hashes for maialib-1.4.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a57c2643e5474ec2fc8a6751f6d36927f67ccb5fdc8aa8fe20b49cab95a61d35 |
|
MD5 | 428a51dcf7a212d9987c02d103e1317b |
|
BLAKE2b-256 | 19ed5e799fe9625070c9ad1bfd79560d56543a6c76e60e92602ca8641089a182 |
Hashes for maialib-1.4.0-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0f6815a34ec30df4a76c7a2664f750842cadef9dc24cba2d4cdbb5ae9f24d3e |
|
MD5 | 62dff9e08203c63d1eeec705955271e4 |
|
BLAKE2b-256 | 63112efb582f2990eeef3766f7110fd176bbadc9d5292960ee2c0b36e127768e |
Hashes for maialib-1.4.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1de7718c9bec5420404441898f2e241df7b6efc1797c806f9b0c3edd6723c6a3 |
|
MD5 | a291fde46defdc4a15d27fa8c06484c4 |
|
BLAKE2b-256 | c395af3c2312e5e451e132cf95299db29e5db3f8df1ff10cd6556c145fd42ce1 |
Hashes for maialib-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b652415cdedab76fef3e38b0203600f5bcd93cae868fb37766bcc712b87b887a |
|
MD5 | 8908828d4b69b4d5635b2804e7b4fc93 |
|
BLAKE2b-256 | ef463e5d5901ad7bac35a2a1c83114af765c7b993fb2cc4fb2b96f8bbbff5a49 |
Hashes for maialib-1.4.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aed930de0ef66095d40bb3bdc67eaba64874a7ec1b5e3a4b009abc296a008204 |
|
MD5 | bae649164037ba8512a2ef4b2f13b460 |
|
BLAKE2b-256 | d31a736a46e1334b5ecac6ba7de7b3c6783ed6da071cd2f2b2ce6f90b9517fe5 |
Hashes for maialib-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | adc2ec5bfc871f57b98adef0ca778b71ca7c748c6a5c4613bc7b5579e86344b7 |
|
MD5 | bafceacc698095dc404d6048e887157e |
|
BLAKE2b-256 | 53adf1b81e33dae9b70274dbad0e2e870d29dce68b01f7c8adbf95e0af7ff712 |
Hashes for maialib-1.4.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f547b221bb14f78287988fc4f8f9e388a478d266b26631bd81591448f121d8a1 |
|
MD5 | 533b53ff3819aa0e3ac068e309f4b6f9 |
|
BLAKE2b-256 | 9be9e4da7f0038c379891e002e5cf002f3f715fd59d1c9cbb777fe3655ae3825 |
Hashes for maialib-1.4.0-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78fb3929e2333f127aa87198cb30363d6ed1fd01e8f26e72268e9bff7d5fd278 |
|
MD5 | 9c1a9b50d85106700b4eaf6a1db3c417 |
|
BLAKE2b-256 | fd7e788323527124c951b77806bec510ceed4baf241e9eb53f5c2df1ad989241 |
Hashes for maialib-1.4.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d927100136e310372c14ad1281c60282c43d8b51d49862494274f2a65469ca31 |
|
MD5 | ab1460bd390cae946f782b5d4fcf0e53 |
|
BLAKE2b-256 | 9779887c4237ffb8f1b7efd7c6b46d73d50e964be54bc9cd79286ea565478bd9 |
Hashes for maialib-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e547fade14a7d6ff4bd19d919ca6a52fbe4aba68d1b0fa95fe2954e561e1acb7 |
|
MD5 | ddff7f4f6e31a05abd9d42be0ed4862b |
|
BLAKE2b-256 | e02f248065d8afa2eefd2bc1fa3e79b6c3e367646a7d06732e05d301ee9f21eb |
Hashes for maialib-1.4.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f65e1dc96a4aaa2dbdb9b1b7faf684a7b83973c53840fb9ba676ad2d1889e419 |
|
MD5 | c9ec9ee976635bad689a6b2965bcf682 |
|
BLAKE2b-256 | 7bdf1c09a01c0469911b1ab393fb0a02cd8eae29bba90566605b01a82ef130d7 |
Hashes for maialib-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6470a60037885a6efce72b751201af4c888754db66f37d52a7a147c124bdd4a |
|
MD5 | b96897495957ff5c2bcdb3d16c94fb48 |
|
BLAKE2b-256 | f2b57e0d4a1790c233864ab415661454dc9f3e1e6ce2e20dd759e8fea0093dca |
Hashes for maialib-1.4.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5194a895bc1ece15e3dadd6820c8fd5510f7494232d5bbd66d7aff7e7d212f63 |
|
MD5 | 7181de6599ec8beb70d6b59343af23b6 |
|
BLAKE2b-256 | 4e46a5ae754b6b40990216688af50b80ac5a555a44de0f85d8286a0b8bac9977 |
Hashes for maialib-1.4.0-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ba20af4c32e7207fdecacb5da4c4dc22ef058a72e03e0b4a2eea957f9d4cbc2 |
|
MD5 | 90a13729ad2ccae25d62a19459138367 |
|
BLAKE2b-256 | 475fe732312107146621cfedf4125cde2d57755aefd36a0f88398dfbe0413190 |
Hashes for maialib-1.4.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51ce1a928a8e0ef2d3c63dbce35270ea552ca8c4a401d7f0aa5f1fa7f2aba03d |
|
MD5 | 5efa29fa5ae1dbc20cc404dbe39d36e7 |
|
BLAKE2b-256 | a64ef4660b159bdde2b3184b7f44a453fc996c131e337805d6a0b39077481915 |
Hashes for maialib-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37b68480c2c8fa19bfe1d621cf20c18a04fcd9d840f1c033c0f4c6361a8c1f1e |
|
MD5 | ab25591d1d7f5bbfe74bfa0f53247bb7 |
|
BLAKE2b-256 | 6446963a1515984ae8cc8671d4f91194295b81acae87b1c923157ae68c45bf31 |
Hashes for maialib-1.4.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 553e285c5c7cf39e2c97718c2fcf5fef47d88f34b3fac355718db198c7012282 |
|
MD5 | dc375d989e2342dede14f99af9d61e7c |
|
BLAKE2b-256 | aaa3653f0852b5633909b0204d8b735de76a094a57527bff49b8800ea31e2b42 |
Hashes for maialib-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4a0bb653c2a8743e8c92b4785304964f295edb4f0f7ecdd45f456cfa823cf47 |
|
MD5 | 8fa85ae134bf1adc3eec5a17e60d04ed |
|
BLAKE2b-256 | bde01c4a6822b522f9aaac423a4083bf4c640a7dc4867329b136889d44a47778 |
Hashes for maialib-1.4.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9333802c23ec712da580145eec884d4bd75111805d70c96b7f27ea77344dd7c8 |
|
MD5 | 086211f78a4f6beb9f3f03c5bacc0501 |
|
BLAKE2b-256 | da1d9c25c6e3d5aaf4bd895236df23b456e93a1f360682d150cdf8f626dc8334 |
Hashes for maialib-1.4.0-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73c2855c2df1f24407c7090232291e875ebbc2a5a5c0fd04ebc0a79f5378d1f0 |
|
MD5 | 9879377a3002fe075449fda7e5c2e7e4 |
|
BLAKE2b-256 | dc69081babe0fc249d7bd7f8c825ae8bea627e2224c0a3948098a0aa1624fef7 |