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.1.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d16f1716b7d01c00e8369d8b8fda90a3a79a5156be81b6cda22d2cad602dc6b6 |
|
MD5 | 3439180a9ad79991f2816cf92b16d917 |
|
BLAKE2b-256 | 43f44fbce6690dc39671510430aeb2b307bb85f8d2567df22bed2ac6c49b8abc |
Hashes for maialib-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc974960be25cf59e84bc0f2daa8d198960ea9ecdc26958a3c286ecc6f008373 |
|
MD5 | f40d742560ca7b90d391dc741cf3b29d |
|
BLAKE2b-256 | 8f1074e2450762fe958aeca31b935cf11aecbffa052a440cf7350439ffc9c2c6 |
Hashes for maialib-0.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b6bdf3a5b2827f1430de78f6e28f50d41ede823d037595d5d0162c932517061 |
|
MD5 | 4f2cb245357fc22fd391af1f36621ae3 |
|
BLAKE2b-256 | 9595925ef11128cd5690262511a36319d7f1de0563b9363d93e9d6b1dfd01304 |
Hashes for maialib-0.1.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 953a9983ca22fa55cfcb38e9331a9741fcd7a42c65607dc0d1dbcc4b859798f0 |
|
MD5 | 6091422cab2b8dbecc5ae7cd44941fd3 |
|
BLAKE2b-256 | e3d57c57ed2c6901a05621fc912ab330a3ec0135ab2f952a82c5bbeb65d5fd8f |
Hashes for maialib-0.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b36e8ee4989a4b894e411c2ed9919858942169f34b2ae24f913da1665606fcc |
|
MD5 | bac438de120e42abca29c1e6797a5b7e |
|
BLAKE2b-256 | 99ab524090d4d8c67d7551957fe61d5f9f7de67d876f518a76254dfc9c57811d |
Hashes for maialib-0.1.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d4f8ab5b6509dee06c846bf3f0f0f7cebade0426776a3cc01deaf53b14319ab |
|
MD5 | 311168c9fd9e3b4ee9e17dbfc3a9add8 |
|
BLAKE2b-256 | 3c9b5c7b077473fbb559f01f9a51fd970f43af3d139c05169b2bda0ee04c65ab |
Hashes for maialib-0.1.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05ff1a8b7353d45beecb1d8fb087d99a7c9a72b039daf4b7e6de6b15139efb5d |
|
MD5 | e1379cd1bfb97a80a490a3370b919717 |
|
BLAKE2b-256 | 01c2ceff4e62f345c3a20e8357ce45d2e96c7f1ed68558b462516b50b785dd55 |
Hashes for maialib-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | edad6a79499c602fee3743c7b628fd777796326bbbd41cd1463ff298abd3a657 |
|
MD5 | 434c18101939a8a4de17b3758556dcb8 |
|
BLAKE2b-256 | 0f8fdd7cafdf8d192bd563318695b2fc333d88807ab10febcca5a6704b991c7c |
Hashes for maialib-0.1.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce47fc08f8839f702989e0553f434f22281676594d7cb6f94c7d942f75d259ae |
|
MD5 | 33429e6f4c6dadaffa729a3b66f9cb05 |
|
BLAKE2b-256 | dcbf4a5eef154eb7641707c3de0f7945284553b42987bb9ef737fa7aace107a4 |
Hashes for maialib-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96b601cbc76fc7f0a430c54defbd93b2ca2f0c63d8468db3f724a86bc56be07a |
|
MD5 | a2be54f2c310f452ea14a5c064553db1 |
|
BLAKE2b-256 | 5c6058dacb7b9f9ee8efa936dd72a390228fbdc8d08780e7323ff99040637ee3 |
Hashes for maialib-0.1.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3186bc7fdf9a7a9a5a2e42941cc7d21dee39af74fde10cd8e96e682b43b7c850 |
|
MD5 | b7fca6b4fd090ed8837123df9d3518bc |
|
BLAKE2b-256 | 12f9757432e969d33a37916652637f8e4c6521c5bb2237275fa32d8a6a343473 |
Hashes for maialib-0.1.0-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb145fdfa22f928533c74137a5639b674053cce914b973ddb725895b6e12fda4 |
|
MD5 | 49d06d8528bbaf7195861e1ced5c9239 |
|
BLAKE2b-256 | 2645a6d65efb28db74040e3ee00f7dceb6380d5971b8acced37eeabccefc6d7c |
Hashes for maialib-0.1.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df8d11642b5800c50df0b3512526932cc52ccce016e44d6f98d5a7e7e9b3fbe0 |
|
MD5 | e0f11eb3eb1693a5ee292601147fcea1 |
|
BLAKE2b-256 | 1d0a73d39e6b036ff3f44bddecf5e41eec4411c97ad00fc10320ef7ca5242a17 |
Hashes for maialib-0.1.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fc8aeb9a3054b05444139855da1c3f6dc230e2eb82204195b8b250ed63fb0c2 |
|
MD5 | 0acd9948b6d136e858444057ca735d6a |
|
BLAKE2b-256 | ed6be13ff553cc92003552b1f3df1b96ace44e655f66d7044479ce30d5bcead0 |
Hashes for maialib-0.1.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f92295a0744d12e5fdeee631ac3b135a851d09bb5fa86ba9e78a63c857ad79d |
|
MD5 | b2b2fe43731ca7238708fe09525138a7 |
|
BLAKE2b-256 | 1d313934e345d4617a40de2d598c743d361878bd6773619acec824c507129ce0 |
Hashes for maialib-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 322d9ab534ebacfcf3c0637e09ded1c72771e97e0ab26d9a8d8fa84e6c250327 |
|
MD5 | 766cfc36b4e68860c4e0e88dca783b76 |
|
BLAKE2b-256 | d2768eb3346537c1db602869238348142b586180724196ba132cf6f0389fbf08 |
Hashes for maialib-0.1.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28ce0884ff17522429fc0f511953560ae9b7706c1cc81174c0c1d5cb8fd85fee |
|
MD5 | 47eb32cbb2973c10c41653da1559213b |
|
BLAKE2b-256 | 10d7b1a42270ff64382db82b6d89a8e96650587df95ff3f20305ed8ec78dc0aa |
Hashes for maialib-0.1.0-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 917294ee812bcd69d6be58724c9b9bd990078be2576843909334b00c760312cd |
|
MD5 | 51f8dbb7fc1d6ec44ad3dc1b32c0971d |
|
BLAKE2b-256 | 4d44526a8725e762a722e4054e4ad3e0363c1a3b2fb33fd595b5c6f68cd51173 |
Hashes for maialib-0.1.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72514525d440dd45fe2e64932cbd6a464ffcc8759445c6a49c1efdc83f620fb5 |
|
MD5 | e54af5480ef6d409da69a0e0ce5603f8 |
|
BLAKE2b-256 | 0f60fcf9c26fea62d8b217f902fd86e9d652505870597f47afc635ebd37e26d3 |
Hashes for maialib-0.1.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5108567f15295fe2589517a8532c33c3acbfeda0d88ff2caf3bc79ea8e93d7b |
|
MD5 | 0da197a9e60e150ae4edc67f183c401b |
|
BLAKE2b-256 | 4d4f71b2c8c5c9b6845bb02b1b193b7855f85026ccfe18e018903f148bd95dff |
Hashes for maialib-0.1.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b41ccb812938658bce2c413892c96e112388aeda7505b8130f3fe555f63ded48 |
|
MD5 | 2b223c79c6386ae91608d1f1e109268b |
|
BLAKE2b-256 | 137d362f4bd1f519620e6630cca0d84f2863d3323c134ec432fe563f55fbaf01 |
Hashes for maialib-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f121df8206b9c6342e0b65c9d058e360a27b111e56f6c7deec10ec33a93f9139 |
|
MD5 | e76bfc72820e287fb0f28f9171ceb7f6 |
|
BLAKE2b-256 | b1d04711c7ccc1f271f34dec11ba91b066b3120b2cda44eeb74920aa31cb92df |
Hashes for maialib-0.1.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7974b5a1b78553984550d35a91388f0c0780905f0e847e15a8bcce28e009c2b0 |
|
MD5 | 626939fc043f349fee4db0d206e79977 |
|
BLAKE2b-256 | 4c51f50091be4eda045808a84b5a7a81582ad86f80ba643fd19963a6bbdea208 |
Hashes for maialib-0.1.0-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e64f2b2261fb2a4cc938f109672dbe2273473861ec9423c3bbf089e4afeb5380 |
|
MD5 | a9305da024a96226326a15c87e199853 |
|
BLAKE2b-256 | 8470c8088fb1d0737f0b0db3aa7ad0bc17fb4ec3306953ea832f389e62424c02 |
Hashes for maialib-0.1.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7fcdfcd53a8707499825d0971817dc7075782909df2fddc4cb9ccfe750f3d14 |
|
MD5 | d046da3bf40e27041a3b91541de492bf |
|
BLAKE2b-256 | b997dfe9642322765f1d433740cc1563daa787889baa2b22760279cbe568b666 |
Hashes for maialib-0.1.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 695238c1016d2285d1adfef8ac9a59618eecf20319c98bc4b09242e2d7349084 |
|
MD5 | 6ed53c23b472fec40669aef8791c9d4f |
|
BLAKE2b-256 | 7be47f57ff219d354d72ce1e0643ebd469525091f16e0f85fc35c6fef9f8ade8 |
Hashes for maialib-0.1.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7dc60e2c401b920b51eabcb2097f037fc56122f576c067e68ecfb7a497a7c535 |
|
MD5 | bf88a5fafca568d9b4dc590ce813eccb |
|
BLAKE2b-256 | 40bcde83142ab63c5dde114b578304e50d361ec5431fc1acdd0a09f930ebac61 |
Hashes for maialib-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e81db8b281bf5b03c7cc6c7e2508c6d475672d6eeff7f418a9db48cbb636e98 |
|
MD5 | d403a708ef23fd1e8bee04de689490c2 |
|
BLAKE2b-256 | 9958a9a451fcc751236b5b2bc25108cbdf624116119960630e2dbc9daa4f371f |
Hashes for maialib-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ef9bd0d1e84cbe81d937b1fe55c5c576497acd827fe2b77e2d8f802b5e929ca |
|
MD5 | af4b6a76bb460f1f6f8dbb40115c72e5 |
|
BLAKE2b-256 | 0f6264557091e92ae1e8c6540b34d255a2e8bce63d070de36aa06a9d9dcedc10 |
Hashes for maialib-0.1.0-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce6ae567638b4d85dec9b5e2666b3c84639aea9b612aa6e22b02d5842234a42d |
|
MD5 | 23fa99527b84bedcce2697a0329670cd |
|
BLAKE2b-256 | 9394ba59aec588b7ef22bfa4c78fc61a4092a6ac281a040ac7173012008764e6 |