Skip to main content

Portal and facade for audio-to-symbol tools (MIDI, chords, pitch from audio)

Project description

denote

Portal and facade for audio-to-symbol tools (MIDI, chords, pitch from audio).

Denote wraps multiple audio analysis backends behind a unified Python interface. Each backend is an optional dependency — install only what you need.

Install

pip install denote                          # core only (librosa)
pip install denote[basic_pitch]             # + MIDI transcription
pip install denote[torchcrepe]              # + GPU pitch estimation
pip install denote[all]                     # everything

Quick Start

import denote

# Audio to MIDI (requires basic-pitch)
result = denote.transcribe("song.wav")
result.midi        # pretty_midi.PrettyMIDI object
result.notes       # list of NoteEvent(start_time, end_time, pitch, velocity)

# Pitch estimation (requires torchcrepe, or falls back to librosa pYIN)
pitch = denote.get_pitch("vocal.wav")
pitch.times        # timestamps in seconds
pitch.frequencies  # Hz (NaN for unvoiced)
pitch.confidence   # voicing confidence

# Beat tracking (uses librosa, no extra install needed)
beats = denote.get_beats("song.wav")
beats.beats        # beat times in seconds
beats.tempo        # BPM estimate

Choose Your Backend

# See what's available
denote.list_backends()            # all registered backends
denote.list_backends('pitch')     # ['librosa_pyin', 'torchcrepe']

# Specify a backend explicitly
pitch = denote.get_pitch("vocal.wav", backend='librosa_pyin')

Service-Level Access

For more control, access backends via the service layer:

# Per-backend service handle
denote.services.basic_pitch.transcribe("song.wav", onset_threshold=0.3)
denote.services.torchcrepe.get_pitch("vocal.wav", model='tiny', device='cuda')

# Native adapter (full backend API)
denote.services.basic_pitch.adapter

Supported Backends

Backend Task License Install
Basic Pitch (Spotify) MIDI transcription Apache 2.0 pip install denote[basic_pitch]
torchcrepe Pitch estimation MIT pip install denote[torchcrepe]
librosa pYIN Pitch estimation ISC (included)
librosa beats Beat tracking ISC (included)

More backends coming: pesto-pitch, madmom, autochord, beat-this, demucs.

Plugin System

Register your own backends:

import denote

denote.register_backend('my_tool', config={
    'name': 'my_tool',
    'tasks': ['transcribe'],
    'pip_install': 'my-tool',
}, adapter=MyAdapter(config))

Project details


Download files

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

Source Distribution

denote-0.0.2.tar.gz (65.3 kB view details)

Uploaded Source

Built Distribution

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

denote-0.0.2-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file denote-0.0.2.tar.gz.

File metadata

  • Download URL: denote-0.0.2.tar.gz
  • Upload date:
  • Size: 65.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for denote-0.0.2.tar.gz
Algorithm Hash digest
SHA256 86dd7bbc6c090e0b0ae30317320cd3b04878829be2a5c35792dd3882f2cd38de
MD5 bec495879fc795c5f3cb666997c9fe97
BLAKE2b-256 b816a8d870409b51c0ce97813ac54cee0642b4ffe67ff86b23c30ac6edfec41c

See more details on using hashes here.

File details

Details for the file denote-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: denote-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for denote-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8a3d2ad215d245ce3ba9349bdf29783c00394e2337f861a1b222f1ae022c019c
MD5 b94161bf8704bd53aa1348d5965d7d3d
BLAKE2b-256 911862020fcee582e3dd2fbf7076376c9fbc8434e40fefb4d64620fc0ef5cbe6

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