Skip to main content

Tuning Fork

A reference-tone generator for OVOS - "give me an A" plays a clean 440Hz sine tone, "play 300 hertz" plays an arbitrary frequency. Fully offline, fully deterministic: every tone is generated (equal- temperament, A4 = 440Hz standard concert pitch), nothing recorded, nothing to source or license.

Tests PyPI version

Early 0.0.x release. Named notes always play octave 4 - no octave selection yet. See "Not yet implemented" below.

Usage

"give me an A"
"play a C sharp"
"play 300 hertz"
"giv mig et A"          (Danish)
"spil et H"             (Danish - see "The Danish H/B swap" below)

Each tone rings for 4 seconds (short fade-in/out to avoid clicks) and stops on its own - see "Why no stop intent" below.

The Danish H/B swap - a real trap, not a translation nicety

Danish (like German) uses a different note-naming convention than English for one specific note:

Danish English Frequency (octave 4)
H B (natural) 493.88 Hz
B B♭ (flat) 466.16 Hz

Saying "H" in Danish means the natural B - not a flat, and not "the letter after G" the way English speakers might assume. Saying "B" in Danish means B-flat. This is the actual Danish/German musical convention, the same shape of false-friend trap as the unit- conversion ones in ovos-skill-convert (Danish "ton" vs the English "ton", etc) - getting it backwards would produce a confidently wrong note, not just an awkward translation. See tests/test_note_resolution.py for the regression tests that would catch this being backwards.

The exact spelling of sharp/flat suffixes (ciss vs cis, ess vs es) is lower-confidence - see locale/da-dk/note_aliases.json's _notes key for what's hedged and why.

Why no "stop" intent

Unlike ovos-skill-metronome and ovos-skill-rhythm-box, there's no background thread or stop intent here. play_audio() has no reliable "stop this sound" counterpart in the standard OVOSSkill API (only mycroft.audio.speech.stop, which stops TTS speech, not sounds). Rather than build a stop intent that can't actually stop anything, each tone just has a fixed, short duration and ends on its own - the same way a real tuning fork rings out rather than being interrupted.

Why no "listen and identify the pitch" feature

A natural-feeling extension: strike an instrument, have the skill listen and say whether it's sharp or flat. Deliberately not built - not a scope preference, a real technical blocker: a standard OVOSSkill has no access to raw microphone audio for analysis. The only "listening" primitive (get_response()) goes through the full STT pipeline and returns transcribed text, not a waveform. Real pitch detection would need a dedicated PHAL plugin or audio- transformer tapping the raw audio stream, plus an actual pitch- detection algorithm - a different technical domain (audio analysis) from this skill (audio synthesis), and arguably a different product (an instrument tuner) from this one (a reference-tone generator). Left as a possible future skill, not a feature of this one.

Not yet implemented

  • Octave selection. "give me an A" is always A4 (440Hz). Octave- in-speech parsing ("A two" vs "A 2") adds real ambiguity that wasn't worth solving before the basic note lookup worked - use "play {N} hertz" for a specific frequency in the meantime.
  • Listen-and-identify pitch - see above, likely a separate future skill rather than an extension of this one.

Install

pip install ovos-skill-tuning-fork

Development

See DEVELOPMENT.md.

Category

Utility

Tags

#music #tuning #reference-tone #instrument

Metadata

Release files for ovos-skill-tuning-fork 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovos-skill-tuning-fork 0.0.3
File Size Uploaded Provenance Actions
ovos_skill_tuning_fork-0.0.3.tar.gz 27.7 kB With provenance Details for ovos_skill_tuning_fork-0.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ovos-skill-tuning-fork 0.0.3
File Interpreter ABI Platform Actions
ovos_skill_tuning_fork-0.0.3-py3-none-any.whl Python 3 none any Details for ovos_skill_tuning_fork-0.0.3-py3-none-any.whl

Total release size: 55.3 kB

Release files / ovos_skill_tuning_fork-0.0.3.tar.gz

Download URL ovos_skill_tuning_fork-0.0.3.tar.gz
Size 27.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6e2820344e620c209149872e1473165acd0e1d5c35f4ad3bf71d9a0fd2b0b1ae
BLAKE2b-256 checksum
How to use checksums
6d94e212f5c852483d14336c8f093091dd680c0e20828a63479db73eca70f338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

Release files / ovos_skill_tuning_fork-0.0.3-py3-none-any.whl

Download URL ovos_skill_tuning_fork-0.0.3-py3-none-any.whl
Size 27.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0792032745574423a6c8be1e5604868cd73fa3595cf26a33c54b91fab69dc34d
BLAKE2b-256 checksum
How to use checksums
670a0f0e26d862637165e36fbe339621a6722b529b583d3eac1522930650bc8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

Security for ovos-skill-tuning-fork 0.0.3

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ovos_skill_tuning_fork-0.0.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page