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.
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.
Keep listening where you already listen. teulda catches the sound wherever it comes from and gathers it into one window.
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.
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.
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.
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.
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.
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.
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.
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.
Double size · shade mode · visualiser
The bars and the oscilloscope are not an animation. They are drawn from the sound actually leaving your speakers.
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.
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.
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.
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.
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.
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.
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.
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.
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
The playlist looks backwards, not forwards
The kbps box stays empty
The minimise button is not wired up
The volume slider is the system volume
Windows only
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.
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.
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.
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.
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.
A caption source for streaming
It keeps writing the current song to a text file. Point OBS at it and you are done.
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.
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
Unzip what you downloaded and run
teulda.exe. No installer, no administrator rights. - 2
The Winamp Skin Museum opens in a new window. Pick one you like, press Download skin, and one
.wszfile lands on your disk. - 3
Drag that
.wszonto 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
.wszskinIf you have none, the Winamp Skin Museum holds a hundred thousand - Keys
Sscrap ·LlibraryCtrl+Alt+Sfrom anywhere ·Ddouble size ·Wshade ·Acover art ·Escclose
If nothing is playing, an empty window is the correct result. Go put something on.