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.3-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 148b002b9582ed8f69863f59e68184180268145aaaf18774e659747b63fc532f |
|
MD5 | b850092191c959acf8aa88b09a9de017 |
|
BLAKE2b-256 | 19456dfef38ef9a9e1b0e42ac9b292c7f4f99aaa0ee287e12df88b1387c40edb |
Hashes for maialib-1.4.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e944874356f64b65d3c96a51716b346e73ab615feabacb43679a22cd4dfc9831 |
|
MD5 | ea43b8c5da926ccdaf7b0a0519a9c636 |
|
BLAKE2b-256 | caab2e87a8efe3b755a1fdc7ddc69a72c7a96dd550e75772c4183a0531d8f425 |
Hashes for maialib-1.4.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9ae009e6c8c014fb9efea24ccc4c4b78d72d19fe2fe7d5c285b24dc4c64fec9 |
|
MD5 | 57a14cac05288411f991ae3b20105564 |
|
BLAKE2b-256 | 2c1f4d2a373bf5cdb703eff8bffc86ae2d932965a591159065d332a014e78b22 |
Hashes for maialib-1.4.3-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b5cc8cb4251ce72b9cf96e3b59ce2d74fdddfe155522c6c5ad1b600412d3393 |
|
MD5 | 9d371599fe718afb24e63bfcf6aef249 |
|
BLAKE2b-256 | ad9a3c4e51a71dc34591a226b5edb23c8765b0a4c7afa267217d2168a75910a9 |
Hashes for maialib-1.4.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56d326da325e748bca188ad2d97a46e52550506358b17e7fbbfb38726ed98e4d |
|
MD5 | bae9c2caf9859f2169dda21dad0b6fe6 |
|
BLAKE2b-256 | c113a316d0666a619bc1f658fcb05ae6eb61d21b2f7266ee7e94cfa8da98158f |
Hashes for maialib-1.4.3-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68a38332562d44406f3abbb6e25660f3b46df8edbcda1046ea3207da697a866e |
|
MD5 | 808c5915807a260d890bdde6ca275702 |
|
BLAKE2b-256 | d2a7f00f9932cf2911733d684f979bd772770e93adef93816cf27e31fc70a631 |
Hashes for maialib-1.4.3-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75e2b557006f5bc8efdda940e950fabeafc369d596639eb1ccbbe18e71d23665 |
|
MD5 | ccd0d622092ca73004060e92d7882e88 |
|
BLAKE2b-256 | 9a3e7bd224d8e7f7663f0dc67139db66267c3f1051c47cee7ff60a2b8127e014 |
Hashes for maialib-1.4.3-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca28b89b769f206104d8880795e6195ef3f55dd4ddef0448ac5c22a84eb9db02 |
|
MD5 | d2cf59ef60a85ac48db25ab50ad1e316 |
|
BLAKE2b-256 | ec3e714c757539ea0677a4db2755d8a7d2a9ac08645c107c18762d85fa476ab2 |
Hashes for maialib-1.4.3-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4b3f76687c3215b8e88eda3b93d2d0f1a4398467e06e2b9dd77bddd86338954 |
|
MD5 | 1534bb2c8a32fa8b2f32567e3236f92b |
|
BLAKE2b-256 | e9fbe21525bdc4be48858ca6849eddf201b4501e3b77bfaf5917d9d9cd8201e5 |
Hashes for maialib-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23398bfaad8eafe752e0f705ce2c5d22df6eb13418a20a1fa3bd4540fe32fadb |
|
MD5 | 7e00251648cfa70c5ba932cd44cf4d3d |
|
BLAKE2b-256 | 44ed5248346ccb47f26c140ad36615033b4db45f93b836c5d13befe58179d036 |
Hashes for maialib-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1177e1802c2faf39c409b760cab2c65d1a9e5ee25ea37a8b5a44252e00b5b5b |
|
MD5 | 5595adf5b3fe2526bac041451f25fe66 |
|
BLAKE2b-256 | 34a8cd24514c7b6458c2aafa231c0b4deef705a8bd4391494e747a59eb3ebd86 |
Hashes for maialib-1.4.3-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04e17b16746e0e0693896dbf02582e9c2c9a14f3c5d9287850b92d34458775bd |
|
MD5 | 257213796be73873f42a1235541944d2 |
|
BLAKE2b-256 | bb670ceffff3abb9da37ee6c6b47265f362b2877b10b5558070111999f30842c |
Hashes for maialib-1.4.3-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8e9fded409bcf9312d142c26700e63497cbeaf255d024476ebd293369487f1a |
|
MD5 | d15386affa358295b8c27d204c5d54d5 |
|
BLAKE2b-256 | 84bdd7925255d525451e2d8215f3453567c10c08cce13ac240523680f20220a6 |
Hashes for maialib-1.4.3-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c977aa1ecb0adc5155daa710dd08cf90e547b21563e3808648ef1f63191410e5 |
|
MD5 | 8c78f8bbd989c0fbf9a079ec4abb8823 |
|
BLAKE2b-256 | ec1ef33db2ee4a879b5fb6ed687ccc898f5ccd8ddf9284a0698120635e638696 |
Hashes for maialib-1.4.3-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab9a61fd067aa7ae99270476cc2f20c62908b54169150d12fe0afaf6d16d4312 |
|
MD5 | 0fa9c415e8b252473491fa1df5325519 |
|
BLAKE2b-256 | 5b7dcff1d7b1acc761f82ae54f76cb340079ab31c6d2d4904e9e5c42b5fe5604 |
Hashes for maialib-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c06ab966d0d6658219fea35ae259d81970b6ed10bee26840b35deebfd0e9087 |
|
MD5 | 86c082c579fd6602e34f4bd8e78f779b |
|
BLAKE2b-256 | aa58fa915fd221d59f8e9c7b1fd1e2f9d162ee4fd11d7e20c991daf71998e435 |
Hashes for maialib-1.4.3-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60577267fbc18af6b05308eac423bbbf4acb15dcee5709474081f0970091e709 |
|
MD5 | 4275f46e35386736679ce2ccf29f4784 |
|
BLAKE2b-256 | 80b86d8243250352e8760101d4034d1c509b7e0b5477cd0f250b08577fb50224 |
Hashes for maialib-1.4.3-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50049320105791c83bf4eff5491bf1ee9710221beff28682b5521b3f08c2df23 |
|
MD5 | ce22cf4c4035e345999df84b1b14fe39 |
|
BLAKE2b-256 | 4af059c9e89b33d029c5745ff68a190e96b3380f1a2be267c49e58f2188a1712 |
Hashes for maialib-1.4.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a1eb1af4f5c243de257f6d7b3be4e778000bcddaff662dfb5107b46737fcaa0 |
|
MD5 | af31e02d24f705571c352f46669a335e |
|
BLAKE2b-256 | 11e998dd8411326a30ee87ee9c837635bd863468d92643c64c12a224633b82d3 |
Hashes for maialib-1.4.3-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d84fc42320f06e3ba4dbd25e4d4e770c813eb8b43c38c1397a99e35fcec8d91 |
|
MD5 | d8242629665a0f227a73eeb0deb6e9e5 |
|
BLAKE2b-256 | 4358f1b0990fef4c3205429db86664c653457c48dd575a4cca4473f3955dfe14 |
Hashes for maialib-1.4.3-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ef0c68be977f48c4f94c69ad901ae5477f2b72a8a91b6171d07466cb37c2231 |
|
MD5 | 4b724f6c930f1777071650261fbf9ec7 |
|
BLAKE2b-256 | 1ee44fd767a7144eac83162c2f3e115c8686827b0d097a031d4f58594adf635a |
Hashes for maialib-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46e1f7b001c6270db91ec2538ad7e688039cae84beb48b4c49f51d82ad2c97e0 |
|
MD5 | 2b5ef67506eca6141112d90733b16b57 |
|
BLAKE2b-256 | 45f8e8833937b16b7f2d99f6f3c1f40ea8f06aec7e8df3cff514031fdc328299 |
Hashes for maialib-1.4.3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c19457c6ce50d9b709f648bafa4c09379ead6cc48a0104ba5b42f6a03ad6d28c |
|
MD5 | 52aa27c1d285eae76c270c577d040d9c |
|
BLAKE2b-256 | 171a1e960bae71bb9f35d8cb567d86cac9088b3ad1260d21c20f73ba31be54e3 |
Hashes for maialib-1.4.3-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d2683d843e38e6371fd3146e4d695d49f7752f319b39795171ff3b1247d96c2 |
|
MD5 | 2e06d51d99ef46a89135939b22716406 |
|
BLAKE2b-256 | b2193532a11c08f53b00b6f73947c9f8ec598d68b2e0d106c17da94f60389867 |
Hashes for maialib-1.4.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c133e491155ec7f7260b77eed60d8dad612b2be58afb11e00655cc030889f80 |
|
MD5 | 14a891398db9d49bf58b12bd3b1fa6d9 |
|
BLAKE2b-256 | 590fadd6a10314120b6cc140a23f9c62e34e18979fc5fca59d1d3d56e84437e5 |
Hashes for maialib-1.4.3-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 159642710c0aa210ea74942a77511a3dcd234d241d09a63a74cfd0375fd5db0d |
|
MD5 | 78eaf65e26f8d0368c8604d4ee1419d9 |
|
BLAKE2b-256 | 8f59885ce5cfa1cd4b38e142eee078bf563568996497a74727eb544548aba8fd |
Hashes for maialib-1.4.3-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fdc61e8e18ae5f21f278a99d031536bbc2b80516320d735fbce2759f6f394f6 |
|
MD5 | 5fe1a46a0ada7e571adb6ebab9e903ae |
|
BLAKE2b-256 | ab3dbcaf2772fa180c50fd28b8fa11580ab421efa4ca355cdfde26f383df45ed |
Hashes for maialib-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d7c33e28571a8091d80460250250384643eb41979fde30d968f9249b67f2065 |
|
MD5 | 0221592a33cfd4798d77cd0bf3e622a5 |
|
BLAKE2b-256 | f7b744e69d483461cca540f105ae0fb39190ac0c85ef97f0b7a67acd3dc109ba |
Hashes for maialib-1.4.3-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa4cb47a2795110090d02a6e24cbffec551374bb3a467a1a486c1b94b1c5cc11 |
|
MD5 | 276e2767e64947f6d9a4227dfafd501d |
|
BLAKE2b-256 | 6d8ffdd3b0c00eab59c9ef8e3c7fd92da7eb2aa23166fd970b5bc9c7e6a4373c |
Hashes for maialib-1.4.3-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd23a0f62b23394ccb2430cdfd9494766637c35108eb4cac741f67e37bd7926a |
|
MD5 | e4fefcbb82ccf9de476013f1e7d44497 |
|
BLAKE2b-256 | 7c0833ead73504429801f4faaeefb56d690625b9222dce6924d9ce136458aa52 |