A C++/Python library to manipulate sheet music data
Project description
Maialib - Music Analysis Library {#mainpage}
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)
Get Python Package
pip install maialib
Get Started
You can easily import your sheet music (*.xml
file) to Python environment using:
import maialib as ml
myScore = ml.Score('./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!
Documentation (in development)
Are you a C++ developer?
Requirements to build from C++ sources:
- 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)
Are you a Python developer?
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 (help me to do that!)
- Level 2 - Developer documentation: A deeper information for professional C++ programmers (Doxygen)
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
- Fork this project
- Make your custumizations and improvments
- Please, send me a pull request
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.4-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 285da8b3ca3257be8ea604b24ecb8f49b75e813f3b96f5757cfc472a31535c71 |
|
MD5 | 09e365778f904827514d9b6543a81d06 |
|
BLAKE2b-256 | a3bf25e7c43aa8063abea8f94bcf59ddd92ad000b0b8775f93ca55b9128b0aa4 |
Hashes for maialib-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3097d1d128f959d38a0537d27d2eeb7b9ac4eb9e488ad6abbf5cee541a30d2e2 |
|
MD5 | 903f42cc496a687ecf8460514fdb930e |
|
BLAKE2b-256 | 80d94a1f24a00111de621c13f41d670e43cfd959aad12b5600b4bb75c855af99 |
Hashes for maialib-1.4.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcd584c5352389cc17dbfd74b1f3a41ce93de66258f86ccddb1f71637802ed0f |
|
MD5 | e31708196a69bcfb3b070fdeec435e19 |
|
BLAKE2b-256 | 92bc02389740202eea5b2ce3dbdf9b9c6012a0254343fe6fccba0ca8812d1613 |
Hashes for maialib-1.4.4-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3204b865820c4b8e7e933ad7d34f37709a9b22ddb96fbdd3d99f1b9f2f12e1f5 |
|
MD5 | b769ea5b32de359c84f4085b1b812325 |
|
BLAKE2b-256 | 6e8b589315fe092e25dbebe44d244f3eecf36262fb60d4bdad080ce07db41d7d |
Hashes for maialib-1.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3611da6b37c8653a3ecea735330744aa1ffc2488c6bf64a4a85ac472509b3309 |
|
MD5 | 3b4e69aad6bde9b336be536bfbc17c3e |
|
BLAKE2b-256 | 60b434713c35208c405c11963a10c2a15dfac70e662209d602a3ee19c32985eb |
Hashes for maialib-1.4.4-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e4b441f894b5c703f4a1b0853535cdafcf0744624bb0d187d82919152e941cc |
|
MD5 | da9a00cf83a9d5fde5ec6b3c70f15d4e |
|
BLAKE2b-256 | 5457b738efac2c615745a0a8c0b3c1b8c5c5a392172edea17ddfc923fedd99d0 |
Hashes for maialib-1.4.4-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0e5e8614d7674c93058510f636d09c3e3b3a889005df887b2cc96bc13f50786 |
|
MD5 | 4c4c8f128aca6326c20d3cbfc949e820 |
|
BLAKE2b-256 | 05f4d5667d8f0675fd8872a834e67ef3719856e2628f1d5611d32a3d9ea090af |
Hashes for maialib-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e75d8a8f7a3880fcfce8ffe2ed1c2946877640a5a89380a115781241cbd76e1 |
|
MD5 | 4e1654bb6378cbf3a9271b0d44872dcd |
|
BLAKE2b-256 | db0b144ff290735f09a5a7824d5279ff4ee370ed35a08c6098decb62c568c580 |
Hashes for maialib-1.4.4-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 138836d51fdc7ca91efed6b44fd74470509d105b566cb87b87923cf7a93a4b6a |
|
MD5 | 92e094f4955ca3a721f2cf7aa9fe74ca |
|
BLAKE2b-256 | a882e47fc07b720de3d197e02c9a294ce07e6d6da33b1b538ec331839a816ea2 |
Hashes for maialib-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c786b750984909db149b1f6f75f900ab78afe4b87059cd7555fc3efc2e31c2c |
|
MD5 | d801874cde81cdc7a41024e07dbab28d |
|
BLAKE2b-256 | 3cd42b977108b8bc505812ba48fd022cac8789fb51870fabec0feab7970d28f6 |
Hashes for maialib-1.4.4-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a551f355ee978c1c7036ce5ec6ddca51b8635291ebd7d19f6c849edee653c056 |
|
MD5 | e34d4c0e901bad8cf9635fb535ac30f6 |
|
BLAKE2b-256 | 6429d1200c521ec2fbe38c87dd20314109d11729ed6a3a9aef9a1f486de8efc1 |
Hashes for maialib-1.4.4-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06d11aec60bfa22c2158d3ec293304dbd1cde967a9f5a4ec4c9ff4486ac82d0c |
|
MD5 | a11cee382c236dd968c094f58fd954bb |
|
BLAKE2b-256 | b7b1cf429c9f31acdbe798f768e5346c668b2e4a6a95d44a66a18adac595a20f |
Hashes for maialib-1.4.4-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7cbc7f1fc936e51803f3f419451fc04f5f2adf0e382780bc4a65ec68688e974d |
|
MD5 | fb26c2d433b8dad26cf1f153b2ce74ec |
|
BLAKE2b-256 | 9549d3a8ed54bdce193a57f57646bae5cc1a011331b5aec8576d03e939a2320e |
Hashes for maialib-1.4.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd50d0793868ad404ffd75f24f305aab08452a1f8228a19c6b749a758c1bf687 |
|
MD5 | d1abf98bb5f488726f1d97726b2a5be8 |
|
BLAKE2b-256 | bd9b6d1a52b9eaeb535275fa3f420bee7db1948989766ed10073896537b6e741 |
Hashes for maialib-1.4.4-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f3a8d49e0f63b7cf343ba3a7a2665ef579e913efcd7ac1bccd845fb2617d670 |
|
MD5 | 0592afd03a556433fbdd70c9a8b8dcd9 |
|
BLAKE2b-256 | 88eca4799788e1e7117795714729229a7cd993d4f77ada480fbdc8fb6ad8149a |
Hashes for maialib-1.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 638dbd4bf520fdf4fbafa5a9b0f2cbeaa051ba36e68e049a9c11f26ed13dc412 |
|
MD5 | 43f7ac97ac835aa9cb2cd8023799f367 |
|
BLAKE2b-256 | 05dbb2928119d68651f6446933957d724173d9e99472b3d27ee17568b18f15f6 |
Hashes for maialib-1.4.4-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c39ee3ea35e4fdd89b73d3adb44748a10e5bb080622f0f9efc54240cb2653534 |
|
MD5 | 965573c24b1739829e12d1f2614d53d0 |
|
BLAKE2b-256 | bb539d710dc28692d3e408a321f48cc292a95aebbb2f7d6db7a911b4688024e3 |
Hashes for maialib-1.4.4-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09c2fd75fca5ff6b2d90076aba37795ad9f44c16c143f746e47e307c6c9f6fca |
|
MD5 | 0fbb81a41ba589465776a0a6cba17b08 |
|
BLAKE2b-256 | 390acd7204db6dcb6766d1a1f06b7cb79567f267157120317bfe83aac1863d9a |
Hashes for maialib-1.4.4-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ddaae111e6cae01f6e122f53e3728b716d16c7396660cb426eb5b94d10504ad |
|
MD5 | 81f4fa90ee4f1439d89f7ca60244d8ec |
|
BLAKE2b-256 | dcfa5c0b8e4591e6abdd6d40ceab2c5f998947fca3d46862ad333e21dd3accb2 |
Hashes for maialib-1.4.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 824e1682c0e6d9d808f09bfb102bbecaaaf8d7ad5142fa5b77b02e10652eee28 |
|
MD5 | da909fcc0f2454b181d33d4aa107e432 |
|
BLAKE2b-256 | f3ff10c4cb9a79a99d509e64fbb061afca2d4d5ecabe82dc30112ee150826920 |
Hashes for maialib-1.4.4-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b272fc65c068c5a60882defeeff338960de1f40c6ab5c7a01ea7e01dbe6ddffb |
|
MD5 | 03d7cfab382bda40ef38c75a195f36cd |
|
BLAKE2b-256 | 7cbc0d47cd7f36d569c31fb778d5c4fb350a6f3b1972644e1e92010fc87e4928 |
Hashes for maialib-1.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5119e87ddaede54e30ea3ecfcae7ce1bcf95ceaf0d667c2be8d2f42bd28c3443 |
|
MD5 | 765a041338d63cbeb19c0e5adbe94b96 |
|
BLAKE2b-256 | 4c2afb1a02de91ea835542b5062a781b57b5fe25356c724226265a5afe74e6df |
Hashes for maialib-1.4.4-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cff55513cbc2e886b3bd84d09dcb8812d72472249bcd4f63c001f2b70699863 |
|
MD5 | 108306aab2ad990a17beea2fbd1c2910 |
|
BLAKE2b-256 | 6d828bfaabaecc2d36716eb5b76f3550c6b810e5ca46e90b5c7713f1dd7f156a |
Hashes for maialib-1.4.4-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04261280ffa3d688c9e66dbee22a9041b66f46d5a5b04cf8f7dbf5e3ae5d4f25 |
|
MD5 | 3eec78bd9aa07b3053942ac8cfe9d50f |
|
BLAKE2b-256 | 6ba1b748f9ac8e1c1433c0b13584bce4f63acd01bbd1d92d3cfddb421a5f19d0 |
Hashes for maialib-1.4.4-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bcbf9671e5eb449187eed4f752dc5b9c239a16b78e00bae16300c5767b7d9cd |
|
MD5 | 84e0f9a3ac32644b12b8a749eeccae4c |
|
BLAKE2b-256 | 3719f6bc2192834b355967aaf694371535a5a9612c86872df74116d02578ed23 |
Hashes for maialib-1.4.4-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0110981f32561fd93a08f9fa45040c7f193d885934069fa911d5ee81165f556 |
|
MD5 | 05bcf10230e49080160c1dbbc7a12704 |
|
BLAKE2b-256 | 31880c8f22b766e137da27984f9b062cdf73ad6649529196b3bddce89bd7e89d |
Hashes for maialib-1.4.4-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e1ddd7167a1515b7eb36b962a88cceb33c5a73172f8d5faaf683ede3c1a1344 |
|
MD5 | 7b0fb7b87885c8c7b08d310dfe0a17e9 |
|
BLAKE2b-256 | b9e086bc6de10edb68d589001ebdb15f2067d192383c29212df4066c641a565a |
Hashes for maialib-1.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 691f036d12690f8f1ba0633a6bc20ee265ee278486c133c6008bcd4127955bbb |
|
MD5 | 6d5a8176e774d0a40f69cf1bcdcc5222 |
|
BLAKE2b-256 | 1dd3924af8228b765e5e7444183000bbd4ecbc2cca148635267be91c6f182bba |
Hashes for maialib-1.4.4-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17d8d2dc8c9174850f7ca4ec905256c14d97c8ffce1d448c1ff925942422014d |
|
MD5 | e2c9524fa2b8050229c79753e8587d87 |
|
BLAKE2b-256 | 2ca479dc1ed7ea187f5d53dd361c4bedad4a42e10c644b9c4cf8acd3b5d994f9 |
Hashes for maialib-1.4.4-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7222553ad837b2c4d0a1e493128f8da4582c865e319d1ca9e9e44d3f8d33321f |
|
MD5 | 2ad843219b929f95737e50f695bd0394 |
|
BLAKE2b-256 | 5546872f21c9f3563514c0e714d0a519cae6028fdb0bf97a0bc686c6582d6680 |