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.