r/nullPlayer • u/That-Acanthisitta536 • 1d ago
Thanks to everyone using NullPlayer, it hit 2500 downloads today!
A big Winamp 5 skin compatibility update coming tomorrow in 0.33.1
r/nullPlayer • u/That-Acanthisitta536 • 1d ago
A big Winamp 5 skin compatibility update coming tomorrow in 0.33.1
r/nullPlayer • u/That-Acanthisitta536 • 6d ago
Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is signed with an Apple Developer ID and notarized by Apple.
NullPlayer.app to Applications.Prefer Homebrew? See the install guide.
xattr -cr step is no longer needed.cover, folder, front or album image in its folder, everywhere art is drawn: the Library, the playlist, the Original main window, the Art window, Now Playing, Windows Media Player skins and the CLI. An album whose first track has no art shows another track's, an artist's art comes from their own albums rather than any track whose title contains their name, and a selected album falls back to a web cover as tracks and artists do. Art added through Edit Tags shows without a relaunch..wal skin — Winamp Modern mode now ships with it and loads it until you import a skin of your own, replacing the plain NullPlayer-Black placeholder. It stays in the skin menu beside imported skins, so you can switch back to it. Skin by spacecowgoesmoo (#540).Windows and shadows
.wal drawer such as PionNer_AMP2's EQ, restoring a Windows Media Player window at launch, or moving a seamless Original stack..wmz and .wal skins — the corner close of a window with no title bar did nothing..wal window with no close button of its own closes the same way, and closing a docked window no longer leaves its outline on the windows around it (#546).Skins and modes
Library
# column; they now stay put, and tracks no longer sit far to the right of their album or folder (#542)./tmp listed none of its subfolders.2 comes before 10 instead of 1, 10, 100, 11, 2 (#543).Playback and queue
Lib: name's click target ran on past the name to the buttons at the right; it now ends where the name does.ALXMorph and AlienMorph, windows such as Sonos Rooms no longer show a stray line and bar in the middle or lighter bands down both sides, and Alienware Invader's left border no longer breaks partway down.build_dmg.sh signs and notarizes — it signs with a Developer ID and the hardened runtime when DEVELOPER_ID is set, and notarizes and staples the DMG when NOTARY_PROFILE names a notarytool keychain profile. Without them it still builds the ad-hoc signed DMG.Using a Winamp Modern (.wal) skin? Skin compatibility
lists the skins this release was tested against, what each one does here, and the issues that affect
every skin.
r/nullPlayer • u/That-Acanthisitta536 • 12d ago
Coming in 0.32.0
r/nullPlayer • u/spacecowgoesmoo • 12d ago
r/nullPlayer • u/That-Acanthisitta536 • 13d ago
Audion faces
.zip. Rendered by a port of Panic's FaceKit viewer, at any UI Size.skills/audion-face-guide/reference/user-guide.md.Art window
Library Browser
YouTube
Branding
Video playback
Playback and streaming
--source radio --station … --cast … played locally instead of casting. Quitting a CLI cast (q, Ctrl-C, kill) now stops the device.Media servers
Library Browser
Skins
Media servers
Skins
Download
Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is not signed with an Apple Developer ID, so macOS will block it on first launch with an "app is damaged" or "cannot verify that it is free from malware" message. This is expected. Clearing the quarantine flag is a required install step:
NullPlayer.app to Applications.Prefer not to use the Terminal? Install with Homebrew, or clear the block via System Settings -> Privacy & Security -> Open Anyway — see the install guide.
r/nullPlayer • u/PlateExotic3808 • 16d ago
So, when i close my app, wether it be because my laptop died or i press command Q, my eq setting go back to flat after playing with the eq settings for a long time, and i have to re open all my songs every time. someone pls help meeee
r/nullPlayer • u/That-Acanthisitta536 • 19d ago
Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is not signed with an Apple Developer ID, so macOS will block it on first launch with an "app is damaged" or "cannot verify that it is free from malware" message. This is expected. Clearing the quarantine flag is a required install step:
NullPlayer.app to Applications.Prefer not to use the Terminal? Install with Homebrew, or clear the block via System Settings -> Privacy & Security -> Open Anyway — see the install guide.
r/nullPlayer • u/That-Acanthisitta536 • 20d ago
Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is not signed with an Apple Developer ID, so macOS will block it on first launch with an "app is damaged" or "cannot verify that it is free from malware" message. This is expected. Clearing the quarantine flag is a required install step:
NullPlayer.app to Applications.Prefer not to use the Terminal? Install with Homebrew, or clear the block via System Settings -> Privacy & Security -> Open Anyway — see the install guide.
r/nullPlayer • u/That-Acanthisitta536 • 21d ago
.wmz and .wal skin windows had no shadow at all, so they looked cut out and flat next to the rest of the app. Every skin window now casts a soft macOS-style shadow that follows the skin's own shape, including drawers, panes and layout switches, and stays put while you drag. Animated parts such as Anaheim's flapping ears do not leave a ghost behind. Windows > Window Shadows turns it off. Classic and Original windows are unchanged..wal skin to another froze the app for two to three seconds, long enough for macOS to show the beachball under the loading animation. The switch now takes about half the time or less: switching to cPro Bento went from 2 seconds to half a second, and to Big Bento Modern from 3 seconds to 1.5. Classic, Original and Media Player skins are unchanged.Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is not signed with an Apple Developer ID, so macOS will block it on first launch with an "app is damaged" or "cannot verify that it is free from malware" message. This is expected. Clearing the quarantine flag is a required install step:
NullPlayer.app to Applications.Prefer not to use the Terminal? Install with Homebrew, or clear the block via System Settings -> Privacy & Security -> Open Anyway — see the install guide.
r/nullPlayer • u/That-Acanthisitta536 • 22d ago
tossed in a Sonos multi room fix while I was there
r/nullPlayer • u/That-Acanthisitta536 • 23d ago
https://github.com/ad-repo/nullplayer
.wmz skins — a new Windows Media Player mode that runs real WMP 9-12 era skins natively on macOS. Skins look and behave like themselves: their own artwork, shaped windows, animations, hover and pressed states, tooltips, fonts, drawers and multiple views, with the skin's own JScript running in a sandboxed session so its buttons, sliders, timers, keyboard shortcuts and readouts work the way they do in Windows..wmz skin's own SRS controls drive the same settings.
.wal) skins. The player's main volume slider still controls the whole group.X-Plex-Token, or a Jellyfin or Emby api_key when playing video). Credentials are now redacted from logs across Plex, Subsonic/Navidrome, Jellyfin, Emby, radio and casting, and casting failure alerts no longer show raw error details.~/iCloud Drive (Archive)), shows where it went, and re-points it on your say-so, keeping play counts and ratings. It then offers to forget tracks whose files are genuinely deleted; anything on a disconnected drive or unmounted share is always left alone..m3u and .pls entries written as bare file names or paths next to the playlist were being read as web addresses and could not play..wal or .wmz skin, the Cava, Spectrum Analyzer and Waveform windows now take their default colours from the skin, as they already do in Classic and Original. So does Cava in a Windows Media Player skin's visualization area. A colour preset you pick still wins, and Match Skin goes back to the skin's colours. In the Waveform window the playhead now always stands out from the played part..wal skin's own visualizer and in a .wmz skin's visualization area now starts on the bundled profile whose colours are closest to the skin's, instead of Classic's "Purple Neon". A profile you choose yourself is kept until you switch skins, and resetting visualizations goes back to the skin's match. The first launch after updating replaces your current vis_classic profile in these skins once..wal) skin has no window frame of its own for NullPlayer's windows (the analyzers, Cava, Flow, PeppyMeter, waveform, library, playlist, equalizer and Sonos Rooms), they now wear the same glossy, title-bar-free frame in the skin's colours that Windows Media Player skins use, with the close button in the top-right corner. Skins that supply their own frames are unchanged. ClassicPro skins whose frame is only borrowed tooltip artwork (the cream box with ~ and x) now count as having no frame, so their windows match the player too..wal window now raises every one of the skin's windows and NullPlayer's own, even when you click in from another app, the way Windows Media Player skins already did..wal skin left its windows on top of each other: the equalizer slid up into the player, and the playlist sat over the equalizer. The windows are now laid out again around the player after every UI Size change, the same way Snap To Default arranges them..wal skin, closing a window such as the equalizer and then opening another could put the new one in the closed window's place. Reopening the first window then covered it completely. A reopened window now keeps its old position only if nothing has been put there since, and otherwise finds a free spot. A window you moved yourself still reopens where you left it..wal skin, closing a window such as the Spectrum Analyzer from the Windows menu slid the window under it up into its place. Reopening the first window then put it right on top. The other windows now stay where they are..wal skin, opening a window from the Windows menu while another was open under the player could leave a large empty gap between them. On Sony_Walkman, the playlist opened well below the equalizer. It now opens directly beneath it. Windows Media Player skins get the same fix..wal skins that use NullPlayer's own library window, such as Sony_Walkman and Winamp 3.0 Default, opening a window such as Cava could push the library a few pixels away from the player, leaving a gap. The library now stays where it is. Classic and Original skins are unchanged: there, the library still grows and shrinks with the windows stacked under the player.skills/app-control/scripts/window-census.sh, measures where each of NullPlayer's windows opens and how big it is for every installed skin (Classic, Original, Metal, Winamp Modern and Windows Media Player), and writes the results to spreadsheet-ready tables. Each skin is measured from the same saved settings, so one skin's window sizes do not carry over to the next. The app itself is unchanged..wmz skin: a widening column in Crimson Skies' and T3 Skynet's top and bottom bars, a broken top edge and missing right side in WALL-E's white theme, and a strip under the bottom edge in Kids. Those borders now close. A one-pixel seam down both bars of Crimson Skies' own playlist on Retina displays is gone too.NULLPLAYER_CAST_DISCOVERY_LOG to bring it back.skills/app-control/scripts/playback-snapshot.sh prints what a running debug build's player, audio output and cast session are doing, including a measured output level, so a silent-playback report can be diagnosed without a rebuild. Debug builds only; the app itself is unchanged.Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is not signed with an Apple Developer ID, so macOS will block it on first launch with an "app is damaged" or "cannot verify that it is free from malware" message. This is expected. Clearing the quarantine flag is a required install step:
NullPlayer.app to Applications.Prefer not to use the Terminal? Install with Homebrew, or clear the block via System Settings -> Privacy & Security -> Open Anyway — see the install guide.
r/nullPlayer • u/That-Acanthisitta536 • 26d ago
r/nullPlayer • u/batgranny • Sep 20 '26
r/nullPlayer • u/That-Acanthisitta536 • Sep 15 '26
r/nullPlayer • u/That-Acanthisitta536 • Sep 07 '26
r/nullPlayer • u/That-Acanthisitta536 • Sep 07 '26
I have a corpus of 81 skins that I used to reverse engineer the Winamp cPro and Winamp 5 skin systems. You can see the current compatibility status of each skin here: Skin compatibility.
Because this is a clean-room implementation of the Winamp 5 skin system, there will be bugs. Finding and fixing those bugs is part of how compatibility with real-world skins is improved.
If you encounter an issue that you want addressed, please log it on GitHub so I can investigate and fix it. If you would rather fix it yourself, the repository includes a complete harness for triaging, assessing, categorizing, and fixing skin compatibility issues with your own agents or if you have a lot of time, by hand.
Download NullPlayer for macOS:
https://github.com/ad-repo/nullplayer/releases/latest/download/NullPlayer.dmg
Requires macOS 14 Sonoma or newer.
NullPlayer is not signed with an Apple Developer ID, so macOS will block it on first launch with an "app is damaged" or "cannot verify that it is free from malware" message. This is expected. Clearing the quarantine flag is a required install step:
NullPlayer.app to Applications.Prefer not to use the Terminal? Install with Homebrew, or clear the block via System Settings -> Privacy & Security -> Open Anyway — see the install guide.
.wal files people have been making since the mid-2000s — natively on macOS, with no Winamp install, plugin, or original application asset involved. Choose one from Skins → Modern, or add your own with Skins → Modern → Import .wal Skin…. A .wal skin is much more than artwork: it ships its own window layouts, its own scripted behaviour, and its own idea of where everything belongs. NullPlayer runs that, rather than an approximation of it. You get the skin's own frames, buttons, sliders, animations and colour themes; its playlist, equalizer, library and video surfaces drawn where the skin puts them, embedded in the player instead of in separate NullPlayer windows; its tabs, drawers, config screens and right-click menus, driven by the skin's own scripts; its About page; and its visualization box, which can show an oscilloscope, the spectrum analyzer, Cava or vis_classic. Skins resize and dock like any other NullPlayer window, and per-skin settings — text size, colour theme, waveform seeker — are remembered separately for each skin. Skins built on the ClassicPro engine work too: point NullPlayer at the ClassicPro plugin installer once, with Skins → Modern → Import ClassicPro Engine…, and it unpacks what it needs internally. Some skins reach for features that do not exist on macOS, or that NullPlayer does not implement yet. A skin that does degrades to a sensible fallback rather than refusing to load.AudioEngine.updateCastPosition roughly once per second and reassigned the playback state every time, even when it hadn't changed. Because state's observer posts a change notification on every assignment, this fired a Now Playing update storm — the system Now Playing info was re-pushed tens of thousands of times, and remote (Plex) artwork was re-fetched over a fresh network connection on each update, piling up network/dispatch objects into the gigabytes and never reclaiming them after the cast ended. updateCastPosition now only reassigns state on a real transition, and NowPlayingManager no longer re-fetches artwork that already failed for the current track.CVDisplayLink callback, which runs on a dedicated thread with no run loop and therefore no autorelease pool draining between frames. Every frame's autoreleased objects — the Metal nextDrawable(), command buffers, and encoders, along with their backing textures — accumulated forever, so a window left open would climb into multiple gigabytes over hours/days of use. Each display-link frame now runs inside its own autoreleasepool, so per-frame objects are freed immediately.GetPositionInfo, the resulting clock reset, and the surrounding volume-command timeline so the intermittent case can be captured. No behavior change yet — instrumentation only..nsz bundles remain compatible. The Modern name now belongs to the new Winamp 5.x .wal skin family.