OpenScofo
OpenScofo: OpenScore Follower
OpenScofo is an open-source project designed to provide score following capabilities for contemporary music applications. Originally developed as a PureData (Pd) object, OpenScofo has now been expanded into a versatile C++ library that integrates seamlessly with multiple environments, including a Max Object, Python package, and others comming. Currently under development, OpenScofo is already functional and serves as a valuable tool for researchers and musicians.
Download
- Check the Releases Page.
Examples
- Cânticos de Silício by Charles K. Neimog;
- BWV-1013 by Bach;
Goal
The aim of OpenScofo is to provide a straightforward and accessible tool for real-time score following. By keeping the software lightweight, it can run seamlessly on the web through the pd4web platform, thanks to the ability to use PureData directly in web browsers. With pd4web and OpenScofo will be possible to use the software in rehearsals with just a single click, eliminating the need for external libraries, compatibility issues, or complex installations -- ultimately facilitating the sharing and performance of contemporary music.
Collaboration and Contribution
I invite composers, researchers and developers to contribute to the OpenScofo project. Not just with code, but with theory, math, etc. I am trying to make OpenScofo acessible via a Python implementation, to test it should be easy. By sharing the source code, I am trying to provide access to the theories and mathematical formulas that drive the software, all this come from the amazing research work of Arshia Cont and Philippe Cuvillier at IRCAM.
Technical Foundations
OpenScofo uses several concepts developed by many researches (with focus on the research of Cont and Cuvillier).
- Pitch Comparison: Utilizes the Kullback-Leibler (KL) Divergence method for pitch comparison as presented by Christopher Raphael (2006), Arshia Cont in 2008 and 2010.
- Rhythm Synchronization: Integrates theories of rhythm synchronization developed by Edward Large and Mari Riess Jones (1999) and Edward Large and Caroline Palmer (2002), as presented for Cont (2010).
- Forward Algorithm: For now, OpenScofo uses the equation presented by Arshia Cont (2010) and developed by Yann Guédon (2005).
- Score Language: Based on the
scofo(by Miller Puckette) andantescofo~(by Arshia Cont, Philippe Cuvillier, and others) language.
Building
Requirements
- On Windows, you need
mingw64.
Optional
- treesitter (
npm install tree-sitter) (If you want to change/update score syntax). - nanobind: To build Python package.
- PureData (optional): To build the Pd Object.
Build Options
OPENSCOFO_BUILD_ALL(ON/OFF): Build all OpenScofo modules, including Python, Pd, and Max. Default: ON.OPENSCOFO_BUILD_PD_OBJECT(ON/OFF): Build the Pure Data (Pd) object. Default: OFF.OPENSCOFO_BUILD_PY_MODULE(ON/OFF): Build the Python module. Default: OFF.OPENSCOFO_BUILD_MAX_OBJECT(ON/OFF): Build the Max object. Default: OFF.OPENSCOFO_BUILD_CSOUND_PLUGIN(ON/OFF): Build the Csound plugin. Default: OFF.OPENSCOFO_BUILD_TESTS(ON/OFF): Build test suite. Default: OFF.OPENSCOFO_BUILD_WITH_LUA(ON/OFF): Build Lua module embedded in OpenScofo. Default: ON.UPDATE_OPENSCOFO_LANGUAGE(ON/OFF): Update OpenScofo language grammar (grammar.js). Default: ON.
Building Steps
git clone https://github.com/charlesneimog/OpenScofo
cmake . -B build
cmake --build build
GPLv3 Licensing Notice
OpenScofo is distributed under the GNU General Public License version 3 (GPLv3).
The GPLv3 is a free and open source license. Software distributed as a derivative work of OpenScofo, or as part of a combined work that is subject to the GPLv3, must itself be licensed under the GPLv3 and be accompanied by its complete corresponding source code.
The Free Software Foundation considers both static and dynamic linking to generally create such combined works.
Failure to comply with the GPLv3 automatically terminates the rights granted under the license and may constitute copyright infringement.
Full license text: GNU GPLv3 License Text
Metadata
Release files for OpenScofo 0.2.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| openscofo-0.2.11-cp312-abi3-macosx_10_15_universal2.whl | CPython 3.12 | abi3 | macOS 10.15+ universal2 (ARM64, x86-64) | Details for openscofo-0.2.11-cp312-abi3-macosx_10_15_universal2.whl |
Release files / openscofo-0.2.11-cp312-abi3-macosx_10_15_universal2.whl
| Download URL | openscofo-0.2.11-cp312-abi3-macosx_10_15_universal2.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.12 abi3 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
000f9492492f1259c05e7792d2333200128b02286f60922184e66964a3029ca2
|
|
BLAKE2b-256 checksum How to use checksums |
8349a7ce71fb26a8e2a5d27ddd295ade5dc116a31e7f770422f422c0436c071b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Security for OpenScofo 0.2.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.