10 ms·
Show HN: Nighthawk: A stealthy, simple, unobtrusive music player
- cift 8y agoSomething something electron bad
- designcode 8y agoOne of it's key features listed is 'Highly Efficient.'
- bestnameever 8y agoI saw that too...How can something using Electron be highly efficient? Maybe they are talking about the interface and not the system resources the app uses.
- wst_ 8y agoClementine doesn't use Electron and consumes more of my memory and UI is ugly. Before we start talking about resources maybe we should compare other music players on the market.
- catach 8y agoThe observation that there's a music player resource tax just makes me less inclined to combine it with the Electron tax.
- jchw 8y agoThere isn't really one inherently; a music player like foobar2000 only takes a few MB of memory even with many plugins. That doesn't mean Clementine and Winamp haven't found ways to waste resources that aren't loading a full Chromium instance (after all, Chromium is pretty efficient considering what it actually brings to the table.)
- chupasaurus 8y agoDebian 10 + KDE, 46MB RSS + 10 MB shared memory consumed while playing some FLACs with lyrics tab opened.
- wst_ 8y agoWindows: private 90M, working set 111M. Mac: real mem 110 MB, around 10MB shared. Maybe Linux implementation deals better with memory.
- chupasaurus 8y agoAs a matter of fact(but not scientifically accurate), chromium-based browsers were consuming twice as much RAM on Win than on Linux whenever I checked. edit: missed a word
- quantummkv 8y agoBoth interface and performance actually. I have a library of about 1000+ songs and it barely takes anymore than 130 mb of RAM for me. This is actually better than some native c# music players that I used before I made this. And CPU usage is very light.
- pwg 8y agoMy how resource consumption expectations have changed. This player: http://gqmpeg.sourceforge.net/mpeg-over.html http://gqmpeg.sourceforge.net/mpeg-over.html With a library of 5,011 songs. Consumes 18 mb. Since it uses the CLI mpg123 binary to actually play the songs, when playing the child mpg123 process uses up another 3 mb. So take your pick, 18 mb or 21 mb. Much lower resource usage either way.
- qop 8y agoOther than shipping an entire browser? Lol
- ovao 8y agoMy current instance of Spotify is consuming 5.09 GB. (Not a typo.) Certainly can't be any less efficient than that. Or can it..?
- sus_007 8y agothat's why I always use the web player, instead.
- brusch64 8y agodoes the web player still sound atrocious (free Spotify). Last time i've checked it came with memories of 96Kbps mp3s.
- KozmoNau7 8y agoHigh quality on the web player should be 256kbps AAC, so it should have no audible issues. That said, I find the web player absolutely horrible to use. The desktop Electron app may be a bit of a pig, but on the other hand it runs on Windows, mac OS and Linux with very few issues, so I'll accept that trade-off.
- brusch64 8y agoI don't have Spotify premium - so the quality is 128 kbps. The app works pretty fine, but is absolutely slow on my (old and quite underpowered) living room PC. But on the other hand it is just a media player... The quality was the deciding factor for me to use the Spotify app.
- marssaxman 8y agoAh, thanks for the warning.
- johnwheeler 8y agogorgeous UI
- roryisok 8y agoI'm typically the defender of electron on these threads. I think its a great way for devs to get an MVP out there quickly. But there is a time and a place for electron. electron good - IDEs, markdown editors, visual git clients, things that are front and center electron bad - music players, tray notifiers, app launchers, things that work in the background On windows and mac I use foobar for music and greenshot for screen grabs because they use minimal resources.
- wst_ 8y agoSo now Foobar2000 is available for Mac? Mister, you've made my day! It's only beta from what I see but I am going to try it anyway. Thank you.
- lediur 8y agoHaving used foobar2000 for many many years, I've loved its power and customizability, but I do wish that there was a modern way to customize its UI. The basics are simple, but if you want to do styling tweaks or anything approaching a "custom" UI, you need to start hacking away at an obscure C++ SDK or an even weirder mishmash of GDI+ and old JavaScript. If there was a modern and easily customizable frontend to foobar2000's core audio and media library engine, I'd be in love. Something like Zeit's Hyper, but for music. I'd be willing to trade off Electron resource usage if it meant I could set up the UI just how I like it.
- 8y ago
- znpy 8y agoElectron? No thanks.
- giorgosts 8y agoYou can't throw folders with subfolders at it to make a playlist out of them. The music files have to be in the same folder. Where's the unobtrusive in that if I have to create my playlist first?
- quantummkv 8y agoThanks for pointing that out. I tend to curate my library as a playlist itself without sub-folders so I never gave a thought to it. I am working on a playlist system after all the feedback i got. Will definitely look into the sub-folders way. Oh, and unobtrusive is for the fact that the player stays completely in the background without a single notification or interruption to your work.
- Dolores12 8y agoI just tried it and compared with Winamp 5.666 - 10mb download, 14mb memory footprint.
- anotherevan 8y agoI'll stick with https://www.clementine-player.org/ https://www.clementine-player.org/
- themodelplumber 8y agoMy needs are simple... http://qmmp.ylsoftware.com/ http://qmmp.ylsoftware.com/ (Need 1: Player must remind me of WinAMP)
- mrweasel 8y agoThe WinAmp interface is fantastic, most other media players simply take up to much screen space. Everyone seems to build iTunes like clients and media library managers. My files are already managed just the way I like them, in folders, there's no need for additional management.
- KozmoNau7 8y agoI like having a solid tagging scheme. I don't go deep into subgenres, re-release dates and all that jazz. But having an easy filter mechanism to select music that can have multiple tags for a particular category is very handy. That doesn't work so well with folders, unless you go mad with symlinks everywhere.
- quantummkv 8y agoThis is exactly why I made Nighthawk. Point it at a folder and play. No messing with settings, libraries, paths and other bullcrap.
- tambourine_man 8y agoAs a developer I completely understand the appeal of Electron. I love web technologies and targeting 3 platforms at once is amazing. As a user, I simply won’t accept it. Platform integration is suboptimal at best and resource usage is preposterous. If this is the future of desktop software, and it seems like it is, we have got to find a better solution. There has to be a way to share the rendering engine and Node process among the many Electron apps that are proliferating on the user’s machine.
- benbristow 8y agoDon't use it then, simple.
- tambourine_man 8y agoI don’t, but I’m worried over the course we are taking as an industry.
- yoz-y 8y agoWould sharing help a lot though? DOM will still eat up a ton of memory and windows are each using a separate process. I have not done this for a while but a year or so ago communicating between two windows in an Electron application was insane.
- tambourine_man 8y agoIt’s not ideal, but it should help. I don't think the processes need to communicate though.
- onion2k 8y agoThere has to be a way to share the rendering engine and Node process among the many Electron apps that are proliferating on the user’s machine. I prefer it when one app crashes it doesn't kill a bunch of others.
- tambourine_man 8y ago
- Something1234 8y agoHas anyone else tried deadbeef? It's one of the lightest players I've ever used. It's very bare bones. http://deadbeef.sourceforge.net/ http://deadbeef.sourceforge.net/
- snovv_crash 8y agoDon't forget Billy, from back in the day: https://www.albinoblacksheep.com/download/billy https://www.albinoblacksheep.com/download/billy
- signa11 8y agoor cmus (https://cmus.github.io/ https://cmus.github.io/) for that matter.
- Jerry2 8y agoI prefer Audacious. Much more polished, less buggy than Deadbeef. https://audacious-media-player.org https://audacious-media-player.org
- KozmoNau7 8y agoI'm very partial to Quod Libet. It is utterly flexible and has probably the most powerful tagging engine of any media player. Customizing it just right takes a little bit of work and is a little bit arcane, but once it's there, navigating a huge library of music is completely fluid and intuitive. https://quodlibet.readthedocs.io/ https://quodlibet.readthedocs.io/
- crtasm 8y agoI don't play music from my Linux machine often, but when I do it's from deadbeef. Big view of the current playlist, tabs for others and keyboard shortcuts for playback control works for me.
- v-yadli 8y agohey is anyone interested in building a modern frontend for Foobar2000? edit: I think from the Foobar2000 sdk alone, you'd see how advanced that thing is.. I mean, extension points everywhere, dsp plugin support, built-in query & library management, codecs, gapless processing, all of that written in a scalable & native architecture. It truly lacks a proper UI toolkit though. The current options are quite outdated that I'd rather fall back to the default Win32 UI. So, Electron frontend + C/S communication with Foobar2000? I'd totally buy into it.
- quantummkv 8y agoInternally, both foobar2000 and Chrome/Electron use ffmpeg for audio processing and codec support. The web audio api allows for writing all sorts of equalizers and audio processing effects. Extensions and query and library management can be coded in JS easily, like VSCode, Hyper and others do. Electron frontend communicating with foobar2000 sdk for every little interaction will lead to a huge mess of performance and latency issues. It's better to rebuild the whole thing in electron instead.
- v-yadli 8y ago> both foobar2000 and Chrome/Electron use ffmpeg for audio processing and codec support not quite true. for example, the ZXTune plugin brings support for a dozen of chiptune formats which is obviously out of scope of ffmpeg. It'll be possible to incorporate webaudio api for codec but that's a resource hog. Also if you're doing decoding work and the GC jitters, you're going to run out of audio buffer (stuttering). If we take one step back and rely on some audio playback API, then gapless play and other issues would be difficult to deal with. > The web audio api allows for writing all sorts of equalizers and audio processing effects. maybe, but that's reinventing the wheel. foobar2000 supports VST plugins, the professional tools used in the audio production industry. there are a few dsp components for webaudio but that's far from satisfactory. > Extensions and query and library management can be coded in JS easily, like VSCode, Hyper and others do. Yes I agree. That way we can make a neat package manager for an audio system. Some Digital Audio Workstations(DAW) have already begun to move this way (Bitwig Studio etc.) > for every little interaction will lead to a huge mess of performance and latency issues. Not quite sure.. Think about how NeoVim is built. But my concern is that, foobar2000 is not built for tightly interacting with a frontend, so yeah, better rebuild a native audio core, and use a modern communication protocol (msgpack maybe?) to do the roundtripping. But again, that protocol could be implemented as a foobar2000 plugin... The downside of using foobar2000 is also obvious. It's close sourced and Win32 dependent. So I'd think about this: ``` Electron frontend <-- msgpack --> Native audio core <--> JackAudio, RtAudio or alike, whatever that bypasses the middleware and directly access the hardware audio buffer ```
- rootlocus 8y agoIt doesn't seem to work with flac and wav files. Tried on windows.
- quantummkv 8y agoIt currently only works with mp3, wma and ogg files. Flac had some codec issues when I checked it in the beginning. Might have changed as I recall chrome having done something in this regard. Will definitely check if the new versions of electron support it. If it does support flac, I'll get it working on the next release.
- dmitrygr 8y agoWinAmp can hide in the tray too, and uses 3 (!!) orders of magnitude less RAM than this. I know it is not new and shiny, but it still works well.
- gilmi 8y agoNighthawk looks very nice! However, I found out that for me tui is where it's at for music players. Using cmus combined with a drop down terminal such as tilda or a tiling windows manager is the most comfortable i've been with music players.
- zabana 8y agoI see a lot of negative comments on these electron threads (rightfully so, especially if one cares about resources / performance). Question is: what other frameworks would you recommend for developing cross-platform desktop apps ?
- ms013 8y agoI don’t have a good answer to the framework question, but I do have an opinion about cross-platform. Why make cross-platform a priority over efficiency and user experience? I bounce between Mac and Windows daily, and my least favorite apps are those that try to run on both. They are often resource hogs and provide a UI experience that feels worse than native apps. Electron apps have the least bad UI experience, but are resource hogs. One app I use for work, Mendeley, uses Qt for its UI I believe, and it’s garbage on both platforms- so I use the web interface instead. Give me a good native app instead of a suboptimal cross platform one. I often think the issue isn’t cross platform though: it’s that there is a cohort of developers who know a toolchain (JS+web), and use frameworks that let them live in that instead of investing the time and effort to learn how to write an app well using a toolchain not built for those focused on web/browser models of programming.
- lucideer 8y agoSince we're on the topic of music players, I'll comment here that the lack of foobar2000 on Linux is frustrating. I don't have the wherewithal to contribute to a port, the maintainer doesn't seem interested, and things like quodlibet and deadbeef just don't hold a candle. That said, if foobar2000 had been made cross-platform initially, it may never have been very good. Who can say.
- iaml 8y agoElectron does not magically make your app work like shit - if you treat it like any other framework and actually invest resources into architecture and optimization it (surprise!) results in a good software, eg: vs code. Problem is it also allows to disregard all that and quickly prototype a solution that works good enough for some, and forget about all the optimization. That's real problem, but it's not tied in any way to electron. Same people would go and make a shitty app in qt if there was no electron, or just wouldn't make anything.
- antihero 8y agoIs there a subsonic interface/client that integrates nicely natively? Having to have it in a browser tab and not having music hotkeys is kind of a bitch.
- dvfjsdhgfv 8y ago> Finally after months of development, procrastination and a complete rewrite, the First stable release is out It's a good occasion to change the "Hello world" window title.
- Rjevski 8y ago> Unobtrusive Well besides eating half your RAM and melting down your battery.