teulda v0.2.0
Windows 10 / 11

Plays nothing.
Shows everything.

teulda is not a music player. It never opens a file or decodes a thing. It takes whatever Windows is already playing — Spotify, YouTube, a game's soundtrack — and puts it back in that window from twenty years ago, with the buttons working.

Runs without installing · No admin rights · Bring your own .wsz skin

The window above is a diagram, drawn to explain the layout. What the real window looks like is decided by the skin you choose — teulda ships no skin art of its own.

A readout and a remote

This is not one more player to install

Keep listening where you already listen. teulda catches the sound wherever it comes from and gathers it into one window.

SMTC 01 → 03

Keep listening where you already listen. teulda catches the sound wherever it comes from and gathers it into one window.

01

Your app does the playing

Spotify and the Korean desktop apps (Melon, Genie, Bugs, FLO), YouTube in Chrome or Edge, even a game launcher's soundtrack. Accounts and DRM stay entirely their business — teulda never steps inside.

02

Windows already knows about it

Windows registers whatever is playing at a desk called SMTC. That is why the play and pause keys on your keyboard work in any app at all.

03

teulda reads that desk

It pulls the title, artist, position and cover art, draws them in the skin's window, and sends your button presses back the other way.

Measured, not assumed

Korea's four big music apps all work

This was the bet the whole product rested on. If a desktop app never registers with Windows, its users get an empty window. So rather than guess, we played a song in each one and measured.

Where it played Title Position · length Controls it accepts
Melon · Genie · Bugs · FLO desktop apps Comes through Comes through Play · pause · seek
YouTube Music, Spotify Web — sites using Media Session Track title Exact Play · pause · previous · next · seek
Browser — site with a plain <audio> tag Page title Exact Play · pause · seek

Measured 14 September 2026 on a real Windows PC, using the packaged build. Which controls work varies by app — a button the app never registered is greyed out in teulda too. Some apps send no artist at all, and then only the title shows.

.wsz

Twenty years of skins are already made

More than a hundred thousand classic Winamp skins survive. teulda reads those .wsz files as they are — no conversion, no redrawing.

Copyright

Skins are not shipped with it

Every one of them belongs to the person who drew it. Reading a file format and selling someone else's artwork inside your download are two different things.

Tolerance

Skins that break the spec still draw

A skin whose progress bar is 307×5 instead of 307×10. A skin whose font sheet is cut off mid-file. A skin whose region.txt follows no syntax at all. teulda draws as much as is there and discards only the piece it cannot read.

Four windows

Main · EQ · playlist · cover art

The cover-art window never existed in the classic, so it opens with the A key. Its frame is not newly drawn — it is built from that skin's own playlist tiles, so whatever skin you pick, the window looks like it belongs to it.

As it was

Double size · shade mode · visualiser

The bars and the oscilloscope are not an animation. They are drawn from the sound actually leaving your speakers.

When letters go missing

Your alphabet shows up

The font sheets inside classic skins hold ASCII and nothing else. So by default a title in Korean, Japanese, Chinese, Cyrillic — or even with an accent on it — simply loses those letters.

Skin font as-is
(feat.HAEMOO)/(DIVEP

Exactly the part you wanted to read — the song and the artist — is what disappears. Most of those hundred thousand skins carry only ASCII, so changing skins fixes nothing.

teulda
이 길 (feat. HAEMOO) / 디브퍼(DIVEPER)

If even one character is missing from the sheet, that whole line is drawn in a system font instead. ASCII-only titles keep the skin's own font, exactly as before — that is what this window is supposed to look like.

The title slot is six pixels tall. teulda borrows only the rows each skin actually leaves blank above and below it (a skin with a photo there lends none), and draws the letters at their true size for the window's scale. The ink colour is chosen by measuring how bright that slot's background is.

Newly landed

Never lose the song that just went past

Spotify will never know what you played on YouTube. teulda sees both — press Ctrl+Alt+S from anywhere and the song playing right now leaves one line on this PC.

S

Even when the window is not in front

The song you lose is the one that goes past while you are in a game or writing. Ctrl+Alt+S works wherever you are and whatever you are doing. If another program already owns that combination, teulda walks down to one that is free and writes the key it got in the library window.

Automatic

Play it to the end and it keeps itself

No keypress needed. But only if it watched the song reach the end — opening the window while a track is already finishing is not the same as having listened to it. Kept apart from the ones you chose by hand.

L

Read it and take it with you

See what you collected, delete a row, export to CSV — written so Excel opens it without mangling the characters. Or copy the whole list and paste it anywhere.

On this PC only

There is no road out

What you listened to and when is personal data. The code that handles the record contains no line that touches the network, and a test keeps it that way. Exporting happens because you pressed the button.

The app names in the “where” column are filled in together. What Windows hands over looks like neowizinternet.234211C5E0 — not a name anyone can read. Only someone who uses an app knows which id belongs to it, so the table lives in the repository and anything not in it shows exactly as it arrived. A guessed name is worse: nobody reading their own record could tell it was wrong.

앱 이름 알려주기

Said up front

What it can't do, and what it won't

Things worth knowing before you download, so you are not disappointed after. Hiding them only turns them into bug reports.

The equaliser changes no sound

We never hold the audio stream, so there is nowhere to put a filter. The sliders still move because seeing how that skin drew its EQ window is the point of having the window at all.

The playlist looks backwards, not forwards

The Windows desk hands over one thing: the song playing right now. No queue, no playlist. So that window is a record of what has already played, and clicking a line will not jump to it.

The kbps box stays empty

We never decode the file, so there is no way to know its encoding bitrate. Putting a different number in the same box would be a lie. The kHz and mono/stereo readings come from the output device.

The minimise button is not wired up

The window has no entry on the taskbar, so once minimised there would be no way to bring it back. A button that does nothing beats a button that makes the app vanish.

The volume slider is the system volume

The desk neither reports volume nor accepts it, so the classic slider moves Windows' master volume instead. Left/right balance is shown but never applied.

Windows only

It calls the Windows media desk directly. macOS and Linux have no such desk, so porting it would only produce an empty window.
What comes next

A readout today, a listening record next

Collecting works. Next comes how to read what was collected, and recognising the same song as it moves between services.

Building now

Recognising the same song

The desk hands over no track ID. So the first job is folding Song (feat. X), Song (Feat. X) and Song (2024 Remaster) into one — get this wrong and every number below is quietly wrong too.

Building now

Bring in what you already have

Read the export files Last.fm or Spotify hand you and absorb the past. Starting with an empty library and starting with ten years in it are different products.

After that

A screen to read it on

Share by service, listening by hour, and which songs you finished versus which you skipped inside thirty seconds — a number no service will ever show you.

After that

Send to Last.fm · ListenBrainz

If you already keep a scrobble history, it flows there. Under your account, and only when you switch it on.

After that

A caption source for streaming

It keeps writing the current song to a text file. Point OBS at it and you are done.

Later

Making skins

A hundred thousand exist, but the road to making a new one has been closed for twenty years. We already hold the full coordinate table, so we can build the editor.

The record stays on this PC. What you listened to and when is personal data. Anything that leaves the machine is something you switch on yourself — leave it off and nothing goes anywhere.

v0.2.0

Unzip it, run it, that's all

No installer and no admin rights. Drag a .wsz file onto the window to change the skin.

  1. 1

    Unzip what you downloaded and run teulda.exe. No installer, no administrator rights.

  2. 2

    The Winamp Skin Museum opens in a new window. Pick one you like, press Download skin, and one .wsz file lands on your disk.

  3. 3

    Drag that .wsz onto the teulda window. That is the install — nothing to unzip, nothing to put in a folder.

What you get
teulda-0.2.0-win64.zipAbout 35 MB to download, 81 MB unpacked · no separate runtime to install
Where it runs
Windows 10 / 1164-bit
What you need
One .wsz skinIf you have none, the Winamp Skin Museum holds a hundred thousand
Keys
S scrap · L libraryCtrl+Alt+S from anywhere · D double size · W shade · A cover art · Esc close
Signed, but Windows may still ask once. This build is signed as PROJECTTEAMFORYOU with a timestamp. A standard certificate does not come with a reputation, though — SmartScreen can still show "Windows protected your PC" until enough people have downloaded it. If it does, choose More info → Run anyway. The release page lists the SHA-256 so you can check the file is the one we built.

If nothing is playing, an empty window is the correct result. Go put something on.