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.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96ae5918fe5f6f4eb67c1b5e3f670e7d021fdfdb16aebc23092315da3b9fc76f |
|
MD5 | f216b9f52721a4a425da9c9ef36054d1 |
|
BLAKE2b-256 | 16e1e3ccf2318613d08b9a3288d15940846c3bad4e1443575b840c65faf70d7a |
Hashes for maialib-1.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cac4539c0d38e01c259942760b81e319e4a41aa9b10da28c5b3d33ed6ea379ef |
|
MD5 | 2b05a90f12795fdd1e1d80c5d477ba27 |
|
BLAKE2b-256 | 421bd5d91e5c260b579bec4d2d3d42a79ab8f2e96e12719b86aa284431f28514 |
Hashes for maialib-1.4.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e533d5c3a01d021700cb9e79922a65322e77c6269c7edbb9bb6fa1c6099122c4 |
|
MD5 | 86780af69f3fd2e78d09f73244a7a7e4 |
|
BLAKE2b-256 | e80728f85904b7f36974ada23c67ae93ed2bbadaa7511fb49e120fa2a7f43ee5 |
Hashes for maialib-1.4.1-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca63a96fea90451facd7862b70b5ce6b09e1b105f1345f60476b7f3a9ad6e997 |
|
MD5 | c2fdba93d9dc156349639abeeed063dc |
|
BLAKE2b-256 | 48bd0d7c1ba7c5114846d9a04a213551ae3ee1a28e0cccde8ab28fee9cecd2e1 |
Hashes for maialib-1.4.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 873a37d916634372713846e85bb2dd79056e0a4c843f8e3c1b8a8d5c04e52ba5 |
|
MD5 | bd12733eee380b180fb35d0fe03edf66 |
|
BLAKE2b-256 | 5dca9cf18d9aab40440da19e10f050d6a9736f1cf52d4ad08f80202a4f1891e7 |
Hashes for maialib-1.4.1-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1407c6595876ed9cf359fbc65897a5f28f126fd4df5a77137aba422961d59a3d |
|
MD5 | 3ed6667b92169b819027f38acb4d74e9 |
|
BLAKE2b-256 | 2bd0266c40992f5631d52cb8eebed6598fdfa06d6cb185732bfe9f85016833e8 |
Hashes for maialib-1.4.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d9fa33ded83b98a6e4a7d1264722b3588176d9e8e56470fefbf265585df3efd |
|
MD5 | 7c4aba04aec76c17f9a5d743b1fa37a0 |
|
BLAKE2b-256 | c81fc187fc123bcfb82c4dfd28308c60cf47da88ce5bdccb9e4840d86ed38c93 |
Hashes for maialib-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3db16e944444c5d79d2b1ce7a5a7d875bf9cceee6140ca385127b4bd7fbac31d |
|
MD5 | 053ca656cdd5a81ba7a7477a00ec9103 |
|
BLAKE2b-256 | b1579c6d0a42b6305483e61ec6e555a7cf103ca5ca8764c80ca167f7952b0763 |
Hashes for maialib-1.4.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be05c0f17bd24b7135502d4f322e0bc68f3c71f7b610e0ec8505d6104ae02659 |
|
MD5 | eb434a3c9dcca93a2187737f41b719de |
|
BLAKE2b-256 | c33f54f4a9d054a312cfcb6d16ae56d4dd7b4f164f52e60f18f181a17a7c5743 |
Hashes for maialib-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80234f3002e0f571fe16da8cf280f1bfd1ae65a40f3fe46500edcfad9a420fab |
|
MD5 | 13a31f1d77494c4a54606dc51efe474e |
|
BLAKE2b-256 | 596a0bd3664f9ec9fffabafaf57b1b94e4fd2fcf2d80ba7a022dcee325b75af1 |
Hashes for maialib-1.4.1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c73350317fb46eb63f7d997eea0bf09db96ad88217a5b9bdbf10f6ecc697ae3e |
|
MD5 | 8cca5d6b64e0c02afc73641bc83d0463 |
|
BLAKE2b-256 | 58abcfc28f6a0bce7c939a7ed187498c676f55c2de0e204fc17b5e5991da768b |
Hashes for maialib-1.4.1-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34b9a5e753f733e349803fb94d7dc3899ce6bb1c1532b356bb6ea90aa9603fcf |
|
MD5 | c75f4c62c67948be98a585bf3e34e8dc |
|
BLAKE2b-256 | 99b94e90c83aeb508bd0c12b83993e4fbd4638b0add8428bb2e0813f7e010473 |
Hashes for maialib-1.4.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6753c7a73b056ef794e1c4fe08b176e298c5abfd85c7c2620c583f0b295e216b |
|
MD5 | 02d18fe899c7418e7d1ffb46995a5edc |
|
BLAKE2b-256 | 102d290a07c9dfeb1d3311c9eff13be633cc9e677d46ae7446514b4c9a865f60 |
Hashes for maialib-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29993b6be77d70e253dd047ab3b208a6d86b205baafbf57df4e2eed1359f5a42 |
|
MD5 | d6da3dc9676a5ba9c63e0d85ba3f4fb6 |
|
BLAKE2b-256 | a4724b36f34769c8e29482e61e4456bbf2bb8f541739236f137118a13c6d6daa |
Hashes for maialib-1.4.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28a9933032b8d341d8d2ee21cdb82a0b6f06bd70fdf8c8f40e10487aee3b907b |
|
MD5 | 1a32ad444740aabe77916dc8044394cb |
|
BLAKE2b-256 | ebf72debbe7b7a67a3b5d3e2abc5b9c52bf8f6d5f5fae2f11536ea0e6cb52fd2 |
Hashes for maialib-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28c256f9697b3b9c4b40740935d5c9d522d3b184efa7f9b5c43ce8760b3dac3c |
|
MD5 | f0ac8c06f64b023e2fafdbd4e85796cc |
|
BLAKE2b-256 | 62434983337e67f48eccef2b4a72f8428cb38ff49038f3844e58d0a68fb7e4b1 |
Hashes for maialib-1.4.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b5aefec4c9b692f9d20221e3a51de681b310d7d0352891d9cabc54f8d227c16 |
|
MD5 | 317f6f6e5612f82741d1b2afd8f89e45 |
|
BLAKE2b-256 | ad50607b28e88513f2ffcda55d85335b76106338e024c6689c544f8ba0e0fb4d |
Hashes for maialib-1.4.1-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 507473350152b7ca548872017566f547a916c04353f429c164497418a2b5eab3 |
|
MD5 | 24f8446517ccfbfda7b35fd87a94c4ad |
|
BLAKE2b-256 | 78aecdf74704317832bc537f2e386a8cb6d47fcc2f529d25b2e5f2c3c6597e67 |
Hashes for maialib-1.4.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c28946449d71ccf91fdb490146182090cee3c53c67ee01162310a68776cbb878 |
|
MD5 | 4d884d924c383d6e43e44bf82ab3d8d0 |
|
BLAKE2b-256 | 76b997fcac7d08db9f35e02e9d0515b1ab7102dddbf09683129a17334d64031e |
Hashes for maialib-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94d2048157f179fa6c7713d9e374a605f47da1c44c4ed705e6671d6d84b941ec |
|
MD5 | 92d68ab13b08285e7528df974350da6c |
|
BLAKE2b-256 | b23a1ae6b16215b98b5a2b8b7cfe70f7eb1081327b5aa1444caf82dfb30a3d40 |
Hashes for maialib-1.4.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4dfe9501201528b80ba976bc91e9e21018280a1ebc4945f07267fa8b96165e5 |
|
MD5 | 607a190de04ce5b25c769207d41d7302 |
|
BLAKE2b-256 | 8c481771f246804ad2b394f91d9f2ffa58911bbec288b96ab2053bbafa2de163 |
Hashes for maialib-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b95b7b244067de1c4d3b6b95479cb8ff46561911f426fe81d6f38231847c4571 |
|
MD5 | 1d7788ff84d505c6012ed6478a5cebb2 |
|
BLAKE2b-256 | 6d962839603716feeb2e736de54de6688307cce700de85d0463a4df81b2ef06f |
Hashes for maialib-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b8e4343f5dab89e4b448ea846584e8b0d5bad82fcd42ed5ec98e08a8156bab1 |
|
MD5 | 9b529cdc6daf80d5f2a272e8b0bee3b9 |
|
BLAKE2b-256 | 5de02a70a23c4f27369445810ef381758bd98dcbb3196489f9654f753158b2e8 |
Hashes for maialib-1.4.1-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78ae1c26e94f6859b6b4920eadc53a985706ccb9af86c4bdc249e0f7d5c7925f |
|
MD5 | 291372b4db83b74a8136fbd6fc80cfc6 |
|
BLAKE2b-256 | e7448b7353582fd7c8a1510999a51e2f7ee23faa35639854d809a8c3a22cef0f |
Hashes for maialib-1.4.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14209e078bce2ca003f5fa64bdf8d3cff979e0d71a33bbcd936999a1e7fe1996 |
|
MD5 | 01107e155e2d83f0d24c89e22827d5d3 |
|
BLAKE2b-256 | 5d610e620cbd0d1c59923384bd6f4c9c2562a9aa5b873454e0c420e7d1963f61 |
Hashes for maialib-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 471cb1b43072db60fc17c22a499469d17c28023b7a7303c63658244088e0b9a9 |
|
MD5 | a9dd38c2a1598c68f3f851541307c32f |
|
BLAKE2b-256 | aa594229fea2dbe844791d41ade8c64992390f1060f1bb7cae3f9976968b44a0 |
Hashes for maialib-1.4.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b34d5557fedb2bd93b1157a41d9d0333d13aaa5596604358d73ede911d58113a |
|
MD5 | 1b6a7d18d8803c8365e9e3a630d0db97 |
|
BLAKE2b-256 | af2f23c8801e70affd43317ffbd5a1b99c2ad886ace3ce33a79f64fdf0a2e924 |
Hashes for maialib-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 353d3dfe95a89b63871a7a84dc62bd34deee41773bdbd6e25c96ea620bafc7fc |
|
MD5 | 1212664d834533b6c90fd69e43cd7871 |
|
BLAKE2b-256 | 39e6806504dd693feb347c0dc47612849a78be83ce29d5658214fd0c5e59f305 |
Hashes for maialib-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6fe959d9d67df9114f8e22cac4e61f04105b31f8c5060f340d11e6011186b50 |
|
MD5 | d2c10e198fe8cf5201ba8453e278904c |
|
BLAKE2b-256 | 1769820a39a32dc180eee954683a4573c449c6f16b0772ba89669f68acd0128b |
Hashes for maialib-1.4.1-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 135f40e4e9fb8adb56b2948250b8667b80327361f2b81b789f59f9d4e015538f |
|
MD5 | eaf7011a053f285a3ff0027d128b4768 |
|
BLAKE2b-256 | f1fbbac5b73c826a4fb0aa980e88aa97ec04cfb611696748e2a0242c7f0512bc |