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.4

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.4
File Size Uploaded Provenance Actions
ovos_skill_tuning_fork-0.0.4.tar.gz 27.7 kB With provenance Details for ovos_skill_tuning_fork-0.0.4.tar.gz

Built distribution (wheel)

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

Total release size: 55.3 kB

Release files / ovos_skill_tuning_fork-0.0.4.tar.gz

Download URL ovos_skill_tuning_fork-0.0.4.tar.gz
Size 27.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3b617d090ad539961cf7ee6a62f961e8ae7df4616abc00a15729dc19ac0aba88
BLAKE2b-256 checksum
How to use checksums
b644596b3451c2ecf86a073651d7f601977898ba7981017488a3de02d4628cb1
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 2, 2026.

Transparency log

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

Download URL ovos_skill_tuning_fork-0.0.4-py3-none-any.whl
Size 27.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0927aa142ed6b2e44d50853b1159e0e8c7161d3f4e59954a21989f92fe1acd83
BLAKE2b-256 checksum
How to use checksums
6ae9bc65ccf05eefe728746cba767ea4de740b8c7d9a3acbe794c92ec0f136e6
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 2, 2026.

Transparency log

Security for ovos-skill-tuning-fork 0.0.4

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.4.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 2, 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