Skip to main content

OpenScofo is an open-source score-following system specifically designed for contemporary music.

Project description

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

Examples

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) and antescofo~ (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).
  • pybind11 (optional): To build Python package.
  • PureData (optional): To build the Pd Object.

Building Options

  • BUILD_ALL: Build all OpenScofo modules (Python, Pd, Max).

  • BUILD_ALL_OBJECTS: Build Pd and Max Objects.

  • BUILD_PY_MODULE: Build or not the OpenScofo python module.

  • BUILD_PD_OBJECT: Build or not the Pd Object.

  • BUILD_MAX_OBJECT: Build or not the Max Object.

  • PDLIBDIR: Where the Pd object will be installed.

Building Steps

git clone https://github.com/charlesneimog/OpenScofo --recursive
cmake . -B build -DBUILD_ALL_OBJECTS=ON -G Ninja 
cmake --build build

To install use cmake --install 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. Any software that incorporates, links to (including dynamically), or forms a combined work with OpenScofo and is distributed must also be licensed under the GPLv3, with its complete corresponding source code made available.

Non-compliance automatically terminates the license rights granted under the GPLv3 and may constitute copyright infringement.

Full license text: https://www.gnu.org/licenses/gpl-3.0.html

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

openscofo-0.1.7a2-cp313-cp313-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.13Windows x86-64

openscofo-0.1.7a2-cp313-cp313-manylinux_2_39_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

openscofo-0.1.7a2-cp313-cp313-macosx_15_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

File details

Details for the file openscofo-0.1.7a2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for openscofo-0.1.7a2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1e69d2acb882d02a0adc9e048ab2c053416ebebab5854a85b1ab9478e433fac6
MD5 28ead31f296ad261e3a40763e1407587
BLAKE2b-256 b966dcff4c4dc4813e048a27697b20f97baaed08e364b364f4d6e2f654cddf6c

See more details on using hashes here.

File details

Details for the file openscofo-0.1.7a2-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for openscofo-0.1.7a2-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 358d7679d8712588503f7ab16e8717dd649f4bb3e7a413e089af8cc4da664fd3
MD5 647891fd1aa10349d05ec4ff7b86cb9b
BLAKE2b-256 b53aa1b8d390204349d0daacbd477da7bc7fb1817d2109a5f71d08dcfdd12fcb

See more details on using hashes here.

File details

Details for the file openscofo-0.1.7a2-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for openscofo-0.1.7a2-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3cdfb654cea1fff5519722dd69f8d331e68027dcb074578e6d50119fb60ccac2
MD5 edec4acd120c11495e702a1c04100b26
BLAKE2b-256 a3bc84c1766a9e0e8a546f5471c0a4294c2830c6bcfa5bcea18dd62c2622c728

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page