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.0.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77e55caa816e4d3e1e6b68f27e8c22a9b1c44416e5eb2abc48b603ec24ebaa1a |
|
MD5 | ce4a8b93a1160df3348b10ba5d81876a |
|
BLAKE2b-256 | f0e379aa5c48f7b223fec1f45a0b9924f8c8851753c3ae5c92fb6df3fed4b4b6 |
Hashes for maialib-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9a59559e78c0fb438b769abcf69d9e70cda4eaa7a33a474a56b3b5060960ffb |
|
MD5 | fc2f03d5cb89dc11a5155511171d9154 |
|
BLAKE2b-256 | c2b10855bc5937956a65973781f0f55605ad4408c69da2bc74bceea8745c8213 |
Hashes for maialib-1.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e92ad542edc059fca3938e8f5889ed7d158f92ca1f8fdb84d4f8fb1ed7f14f30 |
|
MD5 | 37cc5b9c350d60192e36734721366c70 |
|
BLAKE2b-256 | 717b223709445c74cdd44f2ae038e30215ef753f7a01261bd4b38143b4209a3b |
Hashes for maialib-1.0.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20d71d81f09a43abf6872dcec975a80e7485e482372e49fed6a7681342d45e81 |
|
MD5 | e7dc044da92be57375f83f3a361af5ff |
|
BLAKE2b-256 | 136d03c4a9d7372229e5e14ae68b37e1774462d98a47a4b483ea8014d4ea7c4e |
Hashes for maialib-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8893bccbc4af2a47d64c0deb7a8a65795b7dab330fb71e4902bdc5dd941a7c97 |
|
MD5 | 1600ae06c9f3635644e6ab1512615cd5 |
|
BLAKE2b-256 | 64de6a8ef9fe26483c63244cafb46bcfc66953ac81120614295be16bda774112 |
Hashes for maialib-1.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c0d70885f3cb375e7d824360f4817f5032cd99299c13a14f10ab4862b99887c |
|
MD5 | f7240adc877b0af0cef3835c7c0e7838 |
|
BLAKE2b-256 | 5b9c5ed7ebc7659a8523c541641066464fe4196e2f669a380e60963a5b7d333f |
Hashes for maialib-1.0.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24469b8f4bf76eda9a2b2c00d6746e29d650bc28ce7c19942aa44da6a35ae814 |
|
MD5 | a5b142579828809ab4e90a8b2c07d09c |
|
BLAKE2b-256 | 7d6c839e99e009bad31b16ca150fca61a24202396cbd5cfa8113ce74d90ba9fb |
Hashes for maialib-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc0edfc91ffa975aeec3ac53e5e8283dbb225e3cab6fd01365c8f8f90a0bc609 |
|
MD5 | b1bcdccc2f4aa62e8f7c58952f3e70a1 |
|
BLAKE2b-256 | 20a44be93ce551b62bae929ca6b31a8dc52331b3b1716d23e303952589b2e7af |
Hashes for maialib-1.0.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57ada0593dcb857e07a3ffb079237084b23a399579322099eee1c8d2c783b7d9 |
|
MD5 | 53b89fb04ad6a94f2fec6c2d56ab4d63 |
|
BLAKE2b-256 | 30c62d6ac2ed87691508923a2df16980499bb29297328bd4a883db90b5fde242 |
Hashes for maialib-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0a8e27427e8751f75d09f26eedf9061fa156dfcd1bdbc8a841cde37ef7c1140 |
|
MD5 | 243589dc5b1777146fd57b0d624a5472 |
|
BLAKE2b-256 | bb7a6ac0bd774c0d85c701f5ab262cc7c8af3b1cb55dbb62939e41f4c17246a8 |
Hashes for maialib-1.0.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07682e2293c67abee14ffb61efbb060388966c5e3df03c997cfa144e370e6a9d |
|
MD5 | 35c1dc98515160937c70894ae04a3254 |
|
BLAKE2b-256 | 3ac0c4df50e3c4fd15b844c5bd6cbcaaacf7fdd080281ab7c0f24a4ac63f4993 |
Hashes for maialib-1.0.0-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c2853d5c85b7dbfa0b1cce098c12f46da64a1d54fe8428ba4013489c7e05e73 |
|
MD5 | 483a170cfcea58ed839d86317eb4d553 |
|
BLAKE2b-256 | 4e04050e6535b53447b21164c28d5982dd31bccc862b407195afde989f0ed934 |
Hashes for maialib-1.0.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42eda753802cea8f9a929069fdfd4240230848ef3bf2cc4cb1d9d3622bfddf53 |
|
MD5 | 669f0820212d830ca12c48f21025c020 |
|
BLAKE2b-256 | 56c575470d0e1a265d571e83eef24b1c74339e2ab35ddcbbfc02bc9971efcb03 |
Hashes for maialib-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54364c9f5316d68272bbb82e207fa7127f94394ec429ac1b8cbf428818914093 |
|
MD5 | d1ea55426c6b0e641190c6335f3e3e42 |
|
BLAKE2b-256 | aceece47e9add730711ff0221773918558209aa9dd645065f8bd5cd1ecec105f |
Hashes for maialib-1.0.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d606db3c3b81005f0838532b3393746bfe601c876e61d091fb5344a0234a2a7b |
|
MD5 | 13ee30befe71dd5fc25a10f3766c7cd1 |
|
BLAKE2b-256 | 8aa6fd42754135d907eacd8abd12c1d0f203330a984ac0ef007aa834b10562a9 |
Hashes for maialib-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a5baad6c08ae4834f0531d74419ae3f2e18246f1c4e5834931dbc84b6ec1d55 |
|
MD5 | 483b05d87a0bbc28e605b755daf9c35f |
|
BLAKE2b-256 | bac3f53d51a70bec18d26710307d7380c3bc35ceddf388fc6e81df7ed0ec7270 |
Hashes for maialib-1.0.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1591e9e1634722a90582638a8c05224750f1bc37fc1c8d3c537f601be0560618 |
|
MD5 | 67e83d2327213f833b7293222c921a6b |
|
BLAKE2b-256 | d8851f6fcd64158696acfb6d5fc4b027ec74e3fea0e06c98f8273b6dd9a8c469 |
Hashes for maialib-1.0.0-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe081702d7aac0356abf2d2f2a15e089ee5908e783e9e9f1418ce8999c9e21a8 |
|
MD5 | b29587e2279137b1cd41adb64cb9a269 |
|
BLAKE2b-256 | ac0b69252ebe5aa556a553c34c4e21a5efd4bccac1eb2b7b076ca3c80d66c45b |
Hashes for maialib-1.0.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c293a71d7c021f02e1df3e6b9d3a5a0ae15a887e7b6a610d8cacb4cc91fd3389 |
|
MD5 | 1ec8b180dfbf7700d812cb97931391d0 |
|
BLAKE2b-256 | c2f2047c9b84e6d3dda426bd1728b8273ef2597e9df04a4a835ec35f6585b640 |
Hashes for maialib-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | efbc80bde021fd196c23dee243de9be5380af02023e6d5c7094e4e2f6109bfcd |
|
MD5 | 11b785a61fbe708d7ea638b366558f24 |
|
BLAKE2b-256 | 9902283b5219539fb8f7198d8349d761e6c4d28893b5b067bc8bd2bd34a79fe2 |
Hashes for maialib-1.0.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7abac21b1b220e0b14162f0df7940c8fc3a863c208fdde5e7edfdd416d498f9d |
|
MD5 | d49f12a14c5e5d0246cad86c43bd85a8 |
|
BLAKE2b-256 | b55118faf5ade1354129a0526701b71e42f5a253b065570ee3c4df048d1df19b |
Hashes for maialib-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b20c8ceebc768bcd29ed47771aafe308d5015216d74467dc52b0f99d3ea9a760 |
|
MD5 | 632d06339624a3c4a38de5c863f3b9ca |
|
BLAKE2b-256 | ff74875f3ef94d82cb6b13496844f140e926cbc450e64dbb4c6ad3fba24072f5 |
Hashes for maialib-1.0.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04076a2a50c87f1debbc164d196cf313f80d8e42760e87f86270b32f2fa29b38 |
|
MD5 | a7dc418d5a07689327511de6732065ff |
|
BLAKE2b-256 | 3ecf8cd58dd510668fec16f6fec005f8a9e86ebc79547a6b41346671546ae60b |
Hashes for maialib-1.0.0-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 470724843163d31b310fd2ba89199f50ccad7f824ee6f105edda5763989670d1 |
|
MD5 | 674b0532a89b43e678f5c4881855605b |
|
BLAKE2b-256 | c3345842efce8470958f937b5cccf21d6d5afbc161417ecbd3c45f98c5b5647c |
Hashes for maialib-1.0.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e3151235eb7a7cc734040bf88c0c8d3cce9e5766aa63d7b3d894444693b41e7 |
|
MD5 | b0d14e55f380d89235052a1ef253dd33 |
|
BLAKE2b-256 | 3b17a9d42fb40a206bf18d3c3143d9aa4e9abd76e1c06ce8964393fb4f5f4c98 |
Hashes for maialib-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e886fdb2afdbf3588f6698a02e4f23f2db81eeae6c97b6d8d304fd04a4efa2da |
|
MD5 | 80beeb9feff4641071527e28afe1b5fa |
|
BLAKE2b-256 | 34df8c511d6fee5c5410a1da19563015f3c8c29337f5c2ab46aff7e93bc5d07a |
Hashes for maialib-1.0.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c06d260bffdb1b86bc22ef5fdd5dfeddbaaf8a1e6e77282893ddb9ccbd6d9114 |
|
MD5 | 0c6a7d34753ad863122eea796098d75d |
|
BLAKE2b-256 | 328b56441b6bcd2c2901d1071e5da8df6fa63f81aa1a93f14a7692ac82283511 |
Hashes for maialib-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fec924dfac3d2756ad9191a96e307260947b705e59029b646c682b4e03aa3d5 |
|
MD5 | 4a60ca6edbaa1206d42ac771548e0851 |
|
BLAKE2b-256 | 53cbf326c858ffe951cdf7b90f57eee3e188df3c9fb03d1aa9e416b619bb3d53 |
Hashes for maialib-1.0.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff14ef4dd0351c1f8edb4026a9d848b30ac67259845fc5cff4203d59cf3b9b00 |
|
MD5 | 3c72a77c699caadf61e5bda3da6625b4 |
|
BLAKE2b-256 | 8e20ce0f8eb54453f47e0c572285f9e9b66fcec33f842ffdccb656be3be08486 |
Hashes for maialib-1.0.0-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 634ce609dd7305c1886a58add11c22a0803c8d050ef3d587fecfdbb53890d8d9 |
|
MD5 | 8cd57ef242f226cb3d4334d414ff898d |
|
BLAKE2b-256 | ca2b845328bfdef9cddba497e7b24b79205613ca79b9dd086bf4d4be970a3ced |