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.3.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b17e5de784c4308599131acd50721532037af2888cc6ca8bfb032575dbaaf3ea |
|
MD5 | 4462892810954276956a93de5dc79496 |
|
BLAKE2b-256 | 691da45484191071f64a0f9e0e253864d1a9c77073031a1747c9cb4e7effeeff |
Hashes for maialib-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b418f4c1908c4988384ae247b99b8049edccb51a532de257efb35e9e7294c09 |
|
MD5 | 2075996661c90a2ca0e809e3c99523ec |
|
BLAKE2b-256 | 454a526810f21c7571cb39eff6c00107626a37b46d1843dd50b857e8f4d62a4f |
Hashes for maialib-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1732fedb38466f3fce6328665ff6942f62b16f1683d2669fda8097dfd22535fd |
|
MD5 | 58636f67a3d3bc55dc7156fda7d0c08b |
|
BLAKE2b-256 | 3779314223f2cb1e0b9150bbc0a1742487ae1a2012b4aa780e461638d6db6cb5 |
Hashes for maialib-1.3.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 030bc5e15d9ac2932b4572e5e0f1c2da80f15c073ae09455c94c9322c48394a7 |
|
MD5 | 540bef39d140dd3e0a62877b9dfbffe2 |
|
BLAKE2b-256 | 2010ed350e0b4c209108be8b9bbe76a74ebb8353b5dc2da79a750908cc62ea7b |
Hashes for maialib-1.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5ae84cc73d2f6fb2d917761e1e10fef083dcffb029c7e2d6166e21743cf11e0 |
|
MD5 | 9dc77bf4e2342091149d0cbe369ff4de |
|
BLAKE2b-256 | 46cd0be0506f5b03eaa72db4d8b14bfd89fcde0ea73d0eb40f18fe833fddcc1b |
Hashes for maialib-1.3.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4da2a51b083945651083eb3e2bf02cb9bc1932b92634466f22098ef3d46b336 |
|
MD5 | 8b8adbcefc24093565bd9bd6a1efb08a |
|
BLAKE2b-256 | cae85a4b66c84ad1e32f9333131edbc1f8d98ae8ccf0cdba35937003211c5d28 |
Hashes for maialib-1.3.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05d80d2905cbc1712d455c6856cbd00a5c2f475ed75499368ae38c6af7f0d8fc |
|
MD5 | 4796fcb66afc5f306c477038ee9cbd6a |
|
BLAKE2b-256 | 126134b0de7567930dd66d53f3d4f614f869b8d872b707fd7426f6fd042b8bc4 |
Hashes for maialib-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbac914d9b7ba60b008d28c8c495c38d7431137b1833b5711acad8d5862dd494 |
|
MD5 | 9fc51a06076977ccfdc932cefec02817 |
|
BLAKE2b-256 | 7cfbbd927662f76f6661093727578241d7212547c85c4a08dcb300c13ae67c33 |
Hashes for maialib-1.3.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6af1d5888b1b986fa29968d7b611d25bbdf427ff25bdd66745eaee13e9fd7332 |
|
MD5 | e1bd26249dc76e5931263a4226b5cfda |
|
BLAKE2b-256 | dad38a229b234663c15de9404e1f807e4457277098679406a953bc6fe4205d08 |
Hashes for maialib-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5cc2b92d9bfd3a2fa717545d2ad3574883856d9c76dfff5d0c2e0a7bc2838f4c |
|
MD5 | 7186aa5a32a2fd8bb993c0e32fae4b40 |
|
BLAKE2b-256 | 431695fc7e0b769556899c7a8b94b9964ca00e4935c6d5e0aa6b1ff0fdae08f8 |
Hashes for maialib-1.3.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46f7c9ae150784caa2b12dbaff523ca68b36339bd26c5d3a2a3fc1e24f4ff0a3 |
|
MD5 | 532f81574b484414b99bae6e0d7ac3f4 |
|
BLAKE2b-256 | adfc9463554eb0ef501bd4ad73738d3a68f897780d4ebffff3e490dcc59d3d95 |
Hashes for maialib-1.3.0-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5266ad412e019fcef884ab00def45257492d2c9c036395706908f56f9b0faeb8 |
|
MD5 | 830592281b99c7b6ca8a242903d73a37 |
|
BLAKE2b-256 | e1de8b8a6d3c80b0ca9edf8366c32f58151e86a2f78200487deb9f43f7fcf8b3 |
Hashes for maialib-1.3.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 053675b399fd8e8908da1d131774d2453f34e737d8279c68849aeb9834697e9c |
|
MD5 | 3266db54a3085c90a6d601e77d3954e3 |
|
BLAKE2b-256 | 666fb585d8c2429acc82ec753c8e2cadef5cbc5ffdae86aa923cad1d355fe08c |
Hashes for maialib-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0ed64c240f10c36976d155c8a832e601113bb3c9ddffbd6215829a74e2affbd |
|
MD5 | 759c2fc3e9e1e2cb487b570999c0c894 |
|
BLAKE2b-256 | a1bc6b60ada3a8207a2e98bbb1d678f758bc907ad6ea401500b89e15ca671c64 |
Hashes for maialib-1.3.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38dfd6adf61df41cd751809a8f370743a28e226bafc412cf6f6dd129b249a29f |
|
MD5 | 682dba8d05b6e837f8b040a0884cb8c2 |
|
BLAKE2b-256 | 380cc26e6edd98ce941a04d60696221d8eb72761b9f0f5c244cdc00995e21a9a |
Hashes for maialib-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6629cf97533fb996bb951d98d008091a2637cd4d402e0a508e733c623c09020 |
|
MD5 | d2786a8869f9b7cd8bd96a8d19d1023d |
|
BLAKE2b-256 | 75adae9a9d848eb39ece1e1082c2ee70db2a523eb451bf8e8166f20afbcb2527 |
Hashes for maialib-1.3.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f5f6316906dcc636d4be642426ad9b723fafff627827b50a2d6f32d73cc3389 |
|
MD5 | 88b15c06134b65172e9b9118d6257df6 |
|
BLAKE2b-256 | ed33112ec6c0c7dc980a6e34b6f042499abb261de8b4cf447e949efc17d9ea30 |
Hashes for maialib-1.3.0-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47250781d3b2bc94d118016543a5438b4f2b863521dbdb03eba6acec39e5c424 |
|
MD5 | 5ff12221b24acd0603d7d3e4adb02316 |
|
BLAKE2b-256 | c30d9f5a5d926d711c90615e19061123ff8677fae8cdd0fe219ceb4c1612af65 |
Hashes for maialib-1.3.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ba4f34484dba97c22c80922558783624119df6e025222abd2662993f6170006 |
|
MD5 | 5d0b77dc1d9e069863bd9cde38b0f3b0 |
|
BLAKE2b-256 | 78419312c647057e49e2aedc1b4614aeba4e8450032f31b18e186222e72ac664 |
Hashes for maialib-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7560cc39bfdca53facd73aeb680aabf9df73fb2943c9e7a525352bdb1adc05fd |
|
MD5 | 80a6cb24551744897aa5d0613c2fd627 |
|
BLAKE2b-256 | 4690f0c46548a02e3eaafbccf9a73a4a6c017fc21dc197ecd803c5f4bfb8fb53 |
Hashes for maialib-1.3.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 188b7d1f02e4b9a0e99c21a74c9409812f74ab76ebb94a4c9a108a933e055d52 |
|
MD5 | 32ebb6781337e1178703181191d72185 |
|
BLAKE2b-256 | 64a36a104db6abb7b938e3e92c04683afd6183f56976e63a5589b7a0397cf6b8 |
Hashes for maialib-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 617c3eb732045ac59de5665a933a7761f16c509b450fbdea3fea183e6a223749 |
|
MD5 | 3cb8f38a99d2d3c307311f786984c84f |
|
BLAKE2b-256 | ec737de9ebfd2269766560b74025107461fcdd4b167171c61ab33932f8d5bcc6 |
Hashes for maialib-1.3.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d72086806572cb35c2f70815990d571d519c8b65b5cb5eb69d1f890e7ad7477f |
|
MD5 | 9c544f8a240cd0b56a3b4589b46d3f25 |
|
BLAKE2b-256 | 321f246c94874a588cb5e0248efd4295b13bb3592e3a4d7f50802e2b47c42516 |
Hashes for maialib-1.3.0-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d57b0ed19d3a6e18921b56b7815dec53ee30b38188ba92b537f76576d21d837 |
|
MD5 | 7a66097be396fe4c4801fad4a6169343 |
|
BLAKE2b-256 | 5085b638da6eef2850da505e64e15b01741c89155b4f60b9f22732bdc75a448a |
Hashes for maialib-1.3.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e0b2772dc3815c9a856af95b9a853db2c5308c5058ef635428a1927b961cad4 |
|
MD5 | ad7fb017ee36fc3516e4878dea140aa5 |
|
BLAKE2b-256 | 6496f6a1e9b806038e077eb36642099d24e927585bd518be9c5acef49577fe5c |
Hashes for maialib-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f12bc70d27183b4f61f9fb8430d3c66da67250a82849a505437404220ad1cc8 |
|
MD5 | 3f4e91a1d74f89d2ae9e6d155a7ecefc |
|
BLAKE2b-256 | 4adfc100e38b6a2ae4631642097d0c31c16687e4c63a1a18cfbef7cb282fc7e4 |
Hashes for maialib-1.3.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae0b840ff6ba08b5e14bd5a943c9fcbe86cc2a690521c688cd4cd0dab038efbb |
|
MD5 | bd43122ed04ca49b43e0e3179ff8ec16 |
|
BLAKE2b-256 | b5aa4f928a7719345ff68e1f83872e8f718738b39f6a9bf92ece962c3ca0feed |
Hashes for maialib-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca461d185ccfdef93e5e02d1e3cf689c1b55d6c9a29fa80a032fb98fcc283650 |
|
MD5 | a62dcc57400a95ba4bf20ae74848949e |
|
BLAKE2b-256 | 7783b29be30d9edd16e3285530eb8a686f0cce4af098bce48c6013128fdd2f98 |
Hashes for maialib-1.3.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 447f56d7ee481ebe95e4f98ace47875bf6f5a7eedf9a77c21d81aef4b7c044eb |
|
MD5 | fb215b71eae48679a236b7326698bff5 |
|
BLAKE2b-256 | ceb73880052fa965d16d03db5ae49dc6a05ac8cdb3afffcca243d85b136a6e8b |
Hashes for maialib-1.3.0-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d7297be93a5f931391014e16ef9b65761ea1dc6ce1f2d3b7925a1dabae0b4cc |
|
MD5 | f8c690abcd43db16a7ab40a061d93fdb |
|
BLAKE2b-256 | 964e13454e84aae9c710ab0347ceb04cf5e281358e8567c515996b52b6b952d2 |