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.2-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57fb39c0d799c8bef3723d15e8c315826c6b4148f63f411782c92c27f585b5c8 |
|
MD5 | 170f4c45ccf7023d23f78853b942910f |
|
BLAKE2b-256 | e95eb7867f4b07d0d1881b2bda2591818e538a60d3cdda1ed27fd2ea5148bc68 |
Hashes for maialib-1.4.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ffaa3898bd3663dce05371071ac154f9a52b318197b1a54dc9f40e56d0f07f28 |
|
MD5 | 06a6e9d330b7a99461c9a3b39be88c6d |
|
BLAKE2b-256 | 805c1058bf64dab7e0a23be62af7e0878feca5aa06840f5f7958405197e3248c |
Hashes for maialib-1.4.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c8d947d9f9796d741df8f9f48b3bbe5a07a233f19de1f15ab3b5ad453a2e6d0 |
|
MD5 | 7cb6b5156dda4747e4ba387a429b8c55 |
|
BLAKE2b-256 | 39e8500ea5098fbdc676c2841cbbba8d0aecd559704be91778192ecc468e7416 |
Hashes for maialib-1.4.2-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c5b1b39d07a3db4a9ee2391ee3fd68efa73c6b284ef1d926c42a31bf38a2a58 |
|
MD5 | 4f7aec53eb8487c50cd0db304b77f3a7 |
|
BLAKE2b-256 | d0f2c03bb41c0afe7fe6d566d69e55687d43f230c406d9068106f6b58b3407f2 |
Hashes for maialib-1.4.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 382b22dc635307a2ef58418af97cf3ea79bce78abbd900f1d8c820f088781624 |
|
MD5 | fd01e7fbf1a74a585cb925ec66933732 |
|
BLAKE2b-256 | aae7b7604ea7eeec93cd50ff6ccf1cf603633ff2a296e04ae37e112c52cc15a5 |
Hashes for maialib-1.4.2-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc4789dcb0e861b0ce7302a6f7bdeed850f36cfa7e5a30caf08e2484bdefc5e2 |
|
MD5 | 9a62e02e6cb57b4ecb15d91df35caf77 |
|
BLAKE2b-256 | 65e06599a8849e51201bfaeb9f089ea9bf3ce0d5a61ad503d169f29b3067efde |
Hashes for maialib-1.4.2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47cdfcc6a5e18849aa800d7df73393d69daf02d36a893714a804ec2905a1034d |
|
MD5 | f568ae4040a919d7b706c5e04ab07e7e |
|
BLAKE2b-256 | 955e74571c208acfa5bf6909a1eb845d27db4013e6de42f8dc62ce35087c226f |
Hashes for maialib-1.4.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b78869170950a6111b412822b73e606d6e14fbefc32bd3d83b15433acf418547 |
|
MD5 | 99a7918e2925a07dfb1aec9170fddf4d |
|
BLAKE2b-256 | fdd98c2b0ead7c36bed20ec85d16d0194e7d24f4a6e8d088516ea757cd6b86ef |
Hashes for maialib-1.4.2-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3f33eb03a27e13f07e7e917bb8ca9484114fa6945c0581929ef720942ed7034 |
|
MD5 | 6f2dab0b0115ae52cf6f574dc89e3a22 |
|
BLAKE2b-256 | 3362bf3d85f2b8f24c22f7a17ee75184955b9234e102eadf2beb2eb31daaa4c7 |
Hashes for maialib-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6720d274998b770ed9b7964b343fb9b4954f7dbc6d9af9a67e4972c361c4117f |
|
MD5 | 8c88080f54a9466f0b509b3ecbf4039e |
|
BLAKE2b-256 | fe8e05c842def0b29e00aba1f7fef08525060698b0f91cadc9eadde3c30210bd |
Hashes for maialib-1.4.2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f93f2c5272113d037b77bc5451ede38e0ece10a84fcddb6ffea30f89b336d38a |
|
MD5 | 76b138c43e8637d322040fa49dd6dc9f |
|
BLAKE2b-256 | fc57e2cde54a07ec9245de3943791b34b8d437af40b1238f2b267fbc72607052 |
Hashes for maialib-1.4.2-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4d6a9fd22373018aad32cd56d4f9f719e9c789c9681128d279d5b63b27d6236 |
|
MD5 | 983347b886312ef4fd0cc3b464cd2fd3 |
|
BLAKE2b-256 | 95e17c66fafa98cddab2715ded7114c4958129d4070cc6223c1f43936266f70a |
Hashes for maialib-1.4.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cabe0bdec18a2111f11179bc1b28e05418221e2a9ce58d52b7a891c3bcbb4925 |
|
MD5 | f42d36b9cab5f72d55b9ea3d9054fc97 |
|
BLAKE2b-256 | 10d38742580704ef48875ec7ba2a2570d033c556ccffbddc9bca9649a44a5a91 |
Hashes for maialib-1.4.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | caff168b9cf9157d1c78e3edcb588c2827b8395a7e295536acdbffc6ca2808ad |
|
MD5 | 10f7b262253f8a4b0a5cb740b1f027b3 |
|
BLAKE2b-256 | a963d11c5cd15b5bf083961ff486d117124ce53f5dbf7bb1e9cc4516f1ae5eaa |
Hashes for maialib-1.4.2-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4618f0e24f357eb608e621bf524eb021a1c3dda8b3ce5da357328fe5971dc36f |
|
MD5 | 11658e60b04329f28900b32303b374d2 |
|
BLAKE2b-256 | 80b8d1645486180a8ac60df817b12b50930ce644a85e33e805555ab74247f554 |
Hashes for maialib-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50d4bd030504dafcc3cdf8bb77e84a31a96d9766f24132f7c15613bd02a81f25 |
|
MD5 | 40dbe819db5e7419e3f79ffc89e8117f |
|
BLAKE2b-256 | 3a04fabaf7f21529ffadd384a46571de3668048e4fd8ed8ad6e7722811dbb755 |
Hashes for maialib-1.4.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f16afa5e5a7e447ae3a21e953fa2e076b4d4ab51952b2b1b39d420fb352fafd |
|
MD5 | 23f289db30f818ef58f9338c16f7c421 |
|
BLAKE2b-256 | 1f89b840e885ca244933f2048634512bf9097d80a2938c9000ba5a6beb09ed0e |
Hashes for maialib-1.4.2-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c9aa515a5b8c3f50beb2188b1a1491797747b9b886be0d387c73b1e50806a58 |
|
MD5 | f17ee0693e3592b777d314ce933bafe5 |
|
BLAKE2b-256 | 68a6a56a03a637e54edde6110915d850ba5f3cf4feef7b1bea4df8d9738b8907 |
Hashes for maialib-1.4.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | feca9dd6ced5d59c104aac40b9b23152660b4bd4ed86948cbb206fe9bbe654ab |
|
MD5 | b6c5241642200d60e37e62fad0898858 |
|
BLAKE2b-256 | 776bb88c87b7f98468b83533fca655e686836bc3d2fc32eaf371dbaca91c32ff |
Hashes for maialib-1.4.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 281c1cb2f43723b6749b25abc8eeae4cb41750445ce580395347aa198da8e10b |
|
MD5 | 0e1b7cbddd727d102626a6bbfacb588a |
|
BLAKE2b-256 | f0d36cd878b5ceb87f716032af5748959c3e7eb3254557d31afd3e9d7cbe583b |
Hashes for maialib-1.4.2-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41cb1f89be658591137924537c9b2a073e4b3ea4e28979ceed0717b712a8260a |
|
MD5 | 46352ac0709c48dcc279ac1dede0651f |
|
BLAKE2b-256 | a2a7c6dc6c59cdf9abfc221bc77c1ce87ad5a32cbbb228a55944f5e0be718e45 |
Hashes for maialib-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c4d1f66657f9aff7653f4e478e047a2f3af847deb9b6181b3620a8f63d0b2ae |
|
MD5 | 129cbddd622e4f50ef0f3c01cd6d6987 |
|
BLAKE2b-256 | 7f0ddbfe3fae5250e54d04fb23e935e534551c09ac0a95c9d90536275115d2b2 |
Hashes for maialib-1.4.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec7e8cc33c9037c0145f24f8d58f4d303af427a3e5e62a79a864269943b6a4e4 |
|
MD5 | 019311e099e64b6adb9efbaabe8342db |
|
BLAKE2b-256 | fcff80a43fafcea7f86a6e679d20ad68a0e90834f475471fd9924f85c700f849 |
Hashes for maialib-1.4.2-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cb09a19c686a7adb6b211c09bd394d6204f4fe3269cb477373a3cfcabd30647 |
|
MD5 | 917ada0c5b74e3e3d3fae6c8d48fed27 |
|
BLAKE2b-256 | 1ffc20e59ea9e3a8e8d372a7ebb68710cc4f152bfef3d2068c59f1f057a96975 |
Hashes for maialib-1.4.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 465514a067f1871dc55a265f3c1a6a932fa988a63e00a143a4c9a80069adf243 |
|
MD5 | 24b34e11e9d40a035c58e4caf8a251be |
|
BLAKE2b-256 | 9574e508e00acc6ee46b66dcd45772d6f671ab47356c7c688608f35e9cadac7d |
Hashes for maialib-1.4.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e556cf1bae1e5f884cc9ae0ef7c742e3d67695044d6cfa5e43ecd2c187201ee7 |
|
MD5 | 8f91d27357e280fccc028b8b1fa5eb20 |
|
BLAKE2b-256 | 7db0d93743749a0c2da2e62266bf89a43a88fba76079261f25f1fbdb85e692d4 |
Hashes for maialib-1.4.2-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d62237a12dd6b38c3f18cba2e5dd3ea3e7b04d6b46d35b5829c0f14c3cb53b0c |
|
MD5 | 5b1f5b5e094219ffac6937c4e232601d |
|
BLAKE2b-256 | a5a1c1deb7a9c464885b94d298d2f25627bdff0ca32e1c61590e81eca8893046 |
Hashes for maialib-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08f3a44714fb4de946144a2215341cb3348bde077c102f5e923c917c5d1f9cbd |
|
MD5 | a23e891bb1564d4b276e8eb5e4a1809a |
|
BLAKE2b-256 | e47fb10aaca236cf3254a8db03e8075c3498c3691a9a63a7b2a1fc84657f6196 |
Hashes for maialib-1.4.2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 112985d92050c68407937b7d3fef2a9593c5ef0c1c0f96f4dd6edd4f07e50230 |
|
MD5 | a746a15d9b11bb161fda73846ea0de4c |
|
BLAKE2b-256 | fa1c2fe60709604d2ddd7b29a1260cdb650accfdfd989016a0463a5d749b1995 |
Hashes for maialib-1.4.2-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b50705272519437674e7ed6f338b67b3cb7f287adb66d6ec489e644e94be1166 |
|
MD5 | 5557f35e5ca2f72ce54d1ebc4d9a503e |
|
BLAKE2b-256 | d4ebcf4cae7c38e6c5ef25f51ffafed7c05db9a1e83249e6874eaaada6ce2f42 |