Skip to content

Repository files navigation

Overtone

Discord Rich Presence for YouTube — with the song, the cover and the lyrics.

Overtone on a Discord profile: the artist and song in the header, the title, a lyric line moving with the music, and a progress bar

Download Version License

Setup · How it works · Lyrics · Troubleshooting · Deutsch


What it does

Your friends see the song, not just "watching YouTube".

🎵 The song in the header Listening to doli, szevczor - 162020, instead of the same "YouTube" for everything
🖼️ Cover art The video thumbnail, or the album art on YouTube Music
⏱️ A real progress bar With time remaining, following pauses and skips
🎤 Lyrics, line by line Moving along with the song, or as paragraphs
▶️ A state badge Playing, paused, on repeat, or live
🔗 A button to the video One click and they're watching it too
🌍 Five languages English, German, Polish, Russian, Spanish — including what lands on your profile
🎬 An overlay for OBS The song, the time and the lyric on your stream — four styles, adjustable, and a plugin like any other
🔌 Plugins Drop a folder in, it turns up under Plugins with whatever it asked to have set. Nothing is installed for you — the overlay comes as an example you add yourself
📚 A library you can edit Every lyric file Overtone saved, in a list — read it, correct it, or have it transcribed again
🔒 Privacy mode Show that you're watching something, without saying what

A look at it

A tour of the settings window: connection, appearance, lyrics, transcription, language and the log, with a live preview of the Discord presence along the bottom edge

Every option says what it does in plain language. The strip along the bottom is a live preview of what is on your profile right now — not a mock-up — and the log says what the program is doing when something looks wrong.


Setup

About five minutes, once.

1 · Install the app

Download from the latest release and run it. No other software is needed — the app brings everything it uses.

Windows will warn that it doesn't recognise the program. That is because the file carries no paid signing certificate, not because anything is wrong with it: More info → Run anyway.

Overtone then sits in your system tray, next to the clock.

2 · Create a Discord application

Discord identifies apps by an ID before it shows anything.

  1. Open the Discord Developer Portal and sign in
  2. New Application → give it any name → Create
  3. Copy the Application ID
  4. Paste it into Overtone's settings window, which opens on first start

This is the only fiddly step, and it is done once.

3 · Add the browser extension

  1. Open brave://extensions or chrome://extensions
  2. Enable Developer mode (top right)
  3. Load unpacked → select the extension folder
  4. Reload any YouTube tabs that were already open
The extension popup: a green connected badge, the port and tab count, the YouTube tab currently playing, the bridge port field and a switch for reading subtitles

Clicking the extension's icon tells you whether the bridge is up and which tab it is reading. If it says it cannot reach the app, the app is not running or the ports differ.

4 · Check one Discord setting

Settings → Activity Privacy → "Display current activity as a status message" must be on. It usually already is.

Play something. Your profile should show it within a few seconds.


How it works

Overtone is two pieces, because neither can do the job alone.

Architecture: a browser extension reads the YouTube player and sends state over a local WebSocket to a tray agent, which resolves lyrics and pushes a Rich Presence to Discord

Discord's Rich Presence arrives over a local pipe that no browser extension can open. A desktop app, in turn, cannot see inside a YouTube tab. So the extension reads the player, the agent talks to Discord, and a local connection joins them — reachable only by the extension, never by a website.

Playback data comes from YouTube's own player interface rather than from scraping the page, so it survives redesigns. The extension only ever reads; it holds no permission to touch network traffic, and never runs inside YouTube's own code.


Lyrics

Three sources, tried in order.

1 · A lyrics database. LRCLIB is free and covers most well-known music, with the timing already right.

2 · YouTube's own subtitles. Many music videos carry the lyrics as a subtitle track. This catches songs no database knows — the subtitles must be switched on in the player.

3 · Your PC works it out. Optional, off by default. Overtone can transcribe the song locally. It takes minutes and works the processor hard, so it never helps the song that is playing — but the result is saved and is there next time.

Why lyric timing needs a scheduler: Discord allows one update every four seconds while lyric lines change every two

Discord allows only a handful of presence updates per minute, which is the real constraint on lyrics. Overtone schedules its updates onto the line changes themselves, and can group short lines so none are lost. Paragraph mode goes further: several lines at once, changing only when the last of them has been sung — far easier on that budget.

Everything found is kept as a small text file on your PC, so a repeat play is instant. If the timing is off you can edit that file, and Overtone will never overwrite something you have changed.


Troubleshooting

Nothing appears on Discord

The desktop Discord app must be running — the browser version cannot receive this. Then open Overtone's settings: the sidebar shows whether Discord and the browser are connected.

It says "YouTube" instead of the song

The browser is still running the previous version of the extension. Click ↻ next to Overtone in brave://extensions, then reload your YouTube tabs. Unpacked extensions never reload themselves.

No lyrics for a song

Some tracks are in no database. Switch subtitles on in the YouTube player — Overtone can read those. For the rest there is local transcription under Transkription.

Friends can't see the button

Discord sometimes hides buttons when you view your own profile. Ask someone else what they see.

A video plays black, and the timer jumps

That is YouTube's player failing to receive data, not Overtone. It reloads such a tab automatically after twelve seconds. If it keeps happening, try switching your browser's shields off for youtube.com.

Still stuck? Open an issue with what you expected and what happened instead.


Documentation

Plugins The overlay, how to add it, and how to write your own
Settings reference Every option, and what it does
Architecture How the parts fit together
Bridge protocol What the extension sends the agent

License

Free to use, not to sell or redistribute. Use it privately or at work, on as many of your own machines as you like, and modify it for yourself. Do not sell it, and do not publish it or its installers anywhere but this repository — link here instead.

Full terms in LICENSE; the components Overtone builds on keep their own, listed in THIRD-PARTY-NOTICES.md.

Not affiliated with Discord, YouTube or Google.

About

Discord Rich Presence for YouTube and YouTube Music, with time-synced lyrics

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages