Skip to content

Python

Overview

Use the Python bindings for development, validation, descriptor extraction, and research workflows.

Installation

pip install OpenScofo

Minimal Example

from OpenScofo import OpenScofo

scofo = OpenScofo(48000, 4096, 1024)
scofo.load_score("score.scofo")

Reference Table

Constructor

Argument Meaning
sr sample rate
fft_size FFT/window size
hop hop size

Core methods

Method Purpose
load_score(path) load a score file
process_block(audio) process one NumPy audio block
set_db_threshold(value) set silence threshold
set_tuning(value) set A4 tuning
set_current_event(event) force score position
set_harmonics(value) set pitch-template harmonics
set_pitch_template_sigma(value) set pitch tolerance
get_live_bpm() return estimated BPM
get_event_index() return current event index
get_states() return score states
get_pitch_template(freq) return pitch template
get_block_duration() return block duration in seconds
get_audio_description(audio) return descriptors for one block

Score Actions

Use the binding's score state/action APIs when you need host-side action handling. See the C++ integration for the underlying action structure.

Descriptors

desc = scofo.get_audio_description(segment)

Common Description attributes include mfcc, chroma, onset, silence_prob, loudness, spectral_flux, spectral_flatness, harmonicity, db, rms, and power.

Complete Example

import librosa
from OpenScofo import OpenScofo

scofo = OpenScofo(48000, 4096, 1024)
scofo.load_score("score.scofo")

y, _ = librosa.load("audio.wav", sr=48000)
fftsize = 4096
hopsize = 1024

for pos in range(0, len(y) - fftsize, hopsize):
    block = y[pos:pos + fftsize]
    scofo.process_block(block)

Remarks

Use Python for offline validation and training workflows. For real-time performance, prefer Pd, Max, Csound, SuperCollider, or an embedded C++ host.