* A collection of files in directories
* Ability to randomize full collection, or play just one directory
There's just nothing like this trio on OSX or Linux.
I have all my image browsing / viewing / light editing usage covered with gthumb on Linux and rythmbox does it for me in term of music listening as it can play both my local files as well as net radios. I think kde users are naturally more into Amarok or Clementine but they are all probably fine enough. I have the feeling music listening is a problem that have been solved decades ago an all operating systems. Well with the exception of iOS apparently.
I also like Irfanview because:
A) It has every basic editing function you might need (crop, color adjust, blur/sharpen), great for ad-hoc one-off things. It has all these functions but loads just about instantly on my older laptop. For example, if I need to rotate a picture real quick, it's convenient to open it in Irfanview and just press L/R to orient it.
B) I like it for one-off converting pics from one format to another, and it's the only GUI program I've seen that lets you save as jpeg, but also specify the target size. So I can convert a 10MB PNG to a 256KB jpeg easily. I know this is trivial to do in Linux with the convert command but when, for example, working with pics from my phone, I'm already previewing it in Irfanview in the first place. Irfanview's save GUI actually exposes a lot of knobs for many image formats that I don't see on other programs.
C) If you want to extract images from a PDF, you can open the PDF in Irfanview and Irfanview will let you save out the individual images. At least for the PDFs I've tried it with.
D) The batch mode it has is decently implemented and is easier to use than Linux command line stuff for small jobs if Irfanview can take care of the need (less than 50 images), especially if the images are all over the place and not in one folder.
I'm so used to it I'll probably use it in Wine (if possible) if/when I actually make the jump to everyday desktop Linux, which Windows 11 may make me do finally.
No idea if it's any good, I just use Music.
irfan was fun though, i do like Emulsion even though its not really under development anymore
im currently happy with foobar2k via wine, havent yet loaded all my plugins yet but will eventually load up the 7.1 upmixer and test it out. if you have not used the later versions of f2k, its worth checking out
- decoders
- asio output, virtual audio cable setup as needed (but for the most part the output i rarely change anymore)
- DSPs, audio (i upmix to 7.1 depending on output; but not exactly a requirement due to equalizer apo), video stuff for funzies
- Network related stuff (control, upnp)
- theme related stuff though i think this is lacking for my use
- lots of tooling stuff (though ive slowed down on a lot of that as of lately)
the app is a powerhouse for power usersedit formatting
I'm sure I can't be the only one that doesn't want to be a renter, give up control and stream anything the industry wants to push or deal with ads. It's cool to see some even go to great lengths to write their own application.
And it wasn't "special", it's just apps don't support playing the format
And you didn't answer the question, this discussion is about personal music libraries, like in the case of op collection of 25 years.
I'd bet almost all of them are stereo and not >8 channels
citation needed. Youtube still gives you crappy, unlistenable 153kbps crap.
I could take a 54 kbs rip of Rust in Peace and reencode it at 256 kbs. It's not going to sound better than the 196 kbs rip, even though the bit rate is higher. What software would detect this? And other artifacts, such as clipping?
And your examle doesn't make sense. You compare reencoded to the original, not to some 3rd sample. The issue here is whether to store large flacs or their smaller reencoded lossy variants. If you get a better quality flac, then you'll need to do another encoding to get a better lossy version
I'm too lazy for finding this but I recall this study or similar repeated for trained listeners (musicians and mastering engineers) with the same results.
Note that MP3 is 30 years old and newer perceptual audio codecs can beat it.
YouTube picking lower bitrates is a problem but the qualifier here is "at sufficient bandwidths."
(1) https://www.researchgate.net/publication/257068576_Subjectiv...
And I don't have any willpower to fix all tags and formats in 3.5TB collection (for example, to re-code all lossless zoo to FLAC and fix all MP3 tags for IDv2.4 format and Unicode).
[1] - https://hifigo.com/products/hiby-rs2?variant=43134031167727
Granted, 2TB sd cards are now a thing so once they come down in price, I'll probably get one.
I've been using Plex+PlexAmp for a while but have been really wanting to move to something outside of that.
Would love to take a look at your web app if it's available
I will say that I sympathize with the idea that ... I don't like any audio players that I've tried, but in the world of music apps the layout of screens and UI seem almost universal across them and ... I just don't like them / don't "get it".
I feel like I'm boxing with every music app ever...
I appreciate anyone who takes a shot at making something new.
I turned off Apple Music (the steaming service), loaded everything into Apple Music (the app on macOS). I then plugged my phone into my laptop like it was 2007 and synced it over like an iPod. Everything works as expected. My music doesn’t change so much, so syncing hasn’t been an issue. I get a certain hit of nostalgia when syncing over the wire as well.
Then it’ll show up in Apple Music when connected on WiFi, and sync can happen this way.
I have to disagree. Async may makes concurrent code easier to write, but also less simple to reason about as it grows. In a complex async codebase, I find it harder to reason about code flow and concurrency.
If the goal is to reduce the cost of executing threaded code, we have a solution in green light weight threads.
If we aim to reduce the cost of maintaining threaded code, I expect async to end up costing more effort in the long run.
Good concurrency should make the code simpler to understand and reason about as it grows. Simply having process/service based encapsulation is a huge win. IMO this is a failing of the async/await abstraction, not concurrency itself.
As an ideal.
But you can only go so simple once you have a piece of data that is read at the same time by many, while also maybe mutated by at least one. And as simple you can get version 1.0, as software grow, it gets new features which necessitate more interactions with that data, which makes synchronization more complex.
Dataflow patterns avoid this sort of issue by eliminating shared memory mutation. All data flows through the system by value with mutations only flowing downstream. There are several "Concurrency Patterns" videos by Rob about using these patterns in Go on youtube.
I think the iPos shuffle (usb stick form) is still the best mp3 player I ever had – it was small, pluggable without extra cords, and battery lasted a really long time. It didn't have a screen to browse music but that was part of the idea – just let the shuffle do its thing. Even this relatively simple concept has not been replicated in the hardware market.
People will say it's not a hardware problem but a software/drm issue. I think that's a real shame. I wish there were a good, inexpensive, portable device that would just play my music.
I think the real shift here isn't the iPod vanishing.
I think the existence of Spotify and smartphones is what killed mp3 players. Both of those just filled so much of the air in the room that it smothered everything else out.
Parents will probably buy similar devices to their children instead of an MP3 Player. You have an unconventional parenting style not to get your son a phone at 14. Don't get me wrong, I respect that, but there isn't a lot like you to warrant a demand beyond what's currently available.
That model looks a lot like what the iPod nano did.
Both are compatible with rockbox, so if you install that you can be sure they aren't running android: https://www.rockbox.org/
https://m.youtube.com/playlist?list=PLv0k4pV5hufxLd70t1bN7Zj...
My hunch is that they’ve got an actual from-scratch rewrite in the works that’s similar to the all-new WinUI-based Windows version of Music that came out a while back.
Apple is so quick to drop support for some things and keep other things around seemingly indefinitely.
What's the problem with baking your own?
My app is a prototype in the sense that I want more features, but the app has just enough functionality that I lack motivation to implement more features. Currently has audio playback, remote file access, and FLAC metadata parsing. Similar to the author, I originally wanted to use React Native because I have experience with it and already maintain a few React Native applications. However, I am not interested in targetting (or debugging) other platforms. So I decided to try using SwiftUI and used a special tool[1] to get something resembling hot reloading. (It's kind of a gross hack that requires supplying custom linker flags in Xcode, but it works just enough for me to not miss the DX of TypeScript and React Native).
Actually, I think it is a bit odd that the author didn’t find a free music app they liked. But I also think you don’t really need an excuse to go make something anyway, so… I dunno, it think maybe that was just a framing narrative to get the story started.
https://github.com/nzoschke/jukelab
It's a web app with the Spotify Web Playback SDK or a good old MP3 HTTP server and API like Internet Archive.
It works crazy well on a ChromeBook, and reasonably well on an iPhone, iPad or Android both through a native app with a webview component or the browser.
I have a theory the pendulum is swinging back and there is a demand for controlling our own music and music interface, and web technology is sufficiently good for implementing players.
Or else a large audio file will be halted on the clientside till it is fully downloaded.
Makes sense to me. See this quote from erstwhile Disney CEO Michael Eisner:
> We have no obligation to make art. We have no obligation to make history. We have no obligation to make a statement. But to make money, it is often important to make history, to make art, or to make some significant statement.
Apple is not innovative by nature, and it is certainly not democratic. It is profit-seeking by nature, and will innovate and democratize when it thinks that is the best way to make money. However, letting the riff-raff into your App Store without paying the entrance fee is not a good way to make money. That fee is where the money comes from. You're letting the public abscond with your golden goose.
Everything from writing code to building and publishing is overcomplicated.
Now, SwiftUI and Compose are effectively cousins, as are Kotlin and Swift. Both App Stores have their quirks. Publishing is part of both workflows. It's really not harder for one or the other, it's just administrivia.
But for me language is not a problem at all. I mean that you have a lot of pre-requirements to start developing for iOS.
And the stuff, except writing code feels much more restricted. AppStore is a walled garden itself.
But yeah, Objective-C was something...
You just upload your files (e.g. via Finder) and play them. You can browse by artist, album, etc. It's boring, it works, it's all I want.
The idea is to give me vocab, phrases and idioms with timed with a transcript to appear just before the audio, with some feedback on understanding and a simple learning model of users level, vocabulary, strengths and weaknesses etc
I've made a start using whisper and some simple Bayesian modelling but if anyone more technically gifted wants to steal my idea they're more than welcome... As it's going to take a while for little old me.
On android the best I've found is Pi music player
On both iOS and Android, HTML can play videos and mp3s while the screen is turned off. So maybe it is possible?
When I made https://ambiph.one I ended up having to route everything through a MediaStreamAudioDestinationNode to trick Safari into thinking it's a livestream, which is apparently the only type of audio allowed to play in the background
Minimal demo here if it's helpful for anyone: https://codepen.io/matteason/pen/VYwdzVV
If you are playing music through Spotify in the background, foreground audio in Snapchat still plays normally while recording and playing back just recorded snaps, as well as snaps or memories you have prepared earlier. Sometimes you need to start playback on Spotify again via Control Center, because Snapchat steals focus or takes priority for audio output or something, but it is just part of the jankyness of this workflow, which is probably not intentionally designed to be used the way I use it. If you combine these quirks with Screen Recording, you can make simple audio loops by recording simultaneously via Snapchat and iOS Screen Recording, then use those videos as uploads to Snapchat to stack the loops over each over by selectively queuing them, with audio from a video in Snapchat playing at the same time as audio from Spotify.
It’s kind of a weird workflow, but it’s neat that it works. It feels intentional, as most apps stop background audio playback when starting recording on the same device, but at least Snapchat does not do this, so it’s at least technically possible.
https://stackoverflow.com/questions/64283711
It works nicely in Chrome on the desktop and on Android. Not sure how the situation is on iOS.
Edit: https://caniuse.com/native-filesystem-api
Edit2: Just a few posts down: https://webamp.org/
That's a pretty big argument to go with an Android phone.
Being able to write your own tools in HTML is so nice.
I just never polished it to publish it, but it is quite easy and I guess ChatGPT can help with the basics as no arcane knowledge is required. (Except maybe the playing while screen is off.)
You also need a small node script, though or something different with system access to scan the media files. I think in browser tools make this now somewhat possible without(beware of security restrictions), but my approach is simply a node script scanning the music folder and generating a list that the media player consumes to find files for the player. I still didn't got around to make it automatic, but I don't add so much music (anymore).
I guess I will give it a try to see, how good it works a mobile player nowdays. I always wanted to upgrade it, so I can connect to spotify from my player as I hate the spotify mobile app.
It's not just an audio player but an eco-system, and for better or worst it changed the music industry forever.
Perhaps the modern version should make a p2p music streaming from peers rather than direct downloading.
[1] Napster:
I'd also recommend looking at communities such as Soulseek. And Limewire is still around!
Apparently he also the original author of OpenTDD and ScummVM, and it seems that he's the legit Carmack 2.0 [1].
[1] Ludvig Strigeus:
Software for playing audio used to be great even with far fewer engineering resources going into them. That suggests the reason they are getting worse is deliberate and stems from a misalignment between what software users want and what the producers want.
Most music software companies today are two businesses joined together:
1. A software company that makes apps to let people listen to music.
2. A content licensing company that pays artists and record labels to give them access to music and let people listen to it.
If they were only #1 then they would be agnostic to what music people listen to and how much of it. WinAmp didn't give a damn how big your music library was, what songs you listened to, or how often, because that was entirely between you and your MP3 collection.
But, say, Spotify has to pay someone every time you listen to a song and how much they pay depends on what you listen to and how often. That gives them a direct, perverse incentive to build an app that routes you away from expensive audio you might prefer towards cheap stuff that eats up your time but doesn't cost Spotify as much.
That's why every single time I open the fucking Spotify app I see a wall of podcasts even though I have literally never listened to one and never will. They don't put them there for my benefit, but for theirs.
For Spotify, the end game is routing people towards eventually-AI-generated musak that they themselves own the licenses for because it's free for them. This is directly analogous to why Netflix is now constantly pimping their own often-shitty produced shows over movies you might actually prefer.
The reason we aren't saturated with options is that producing a media app without also having deals that give the app direct access to media to play dumps a lot of work back onto users and most users these days simply don't have a local media library or want to maintain one.
And spinning up a new app that does off content directly has huge startup costs. You need an army of lawyers to go out and negotiate deals with every record label out there, and those labels probably hate you out the gate since they are still salty about not making anywhere near as much money as they used to make when they sold CDs.
And it's funny you point to the podcasts as an example for that, a lot of the podcasts and now audiobooks they push are some of the most expensive content they have.
1. Companies want you to keep paying for the subscription, so they want to offer you things with value.
2. At the same time, since you're paying a flat fee, they don't get much incremental reward for offering you things of incrementally greater value. So their incentive is to cut costs by offering you as little value as possible as long as the value is juuuuust above the threshold where you (well, the aggregate behavior of all users as "you") cancel.
3. Because of lock-in effects like having a huge library of liked songs and playlists in Spotify, being in the middle of binging an exclusive show on Netflix, the threshold of frustration where you would cancel gets higher and higher.
4. Thus, they are incentivized to increase lock-in because it enables them to cut more costs and deliver less value.
And then there's a massive chunk of the market that finds the tradeoff of ads for "free" access to music an acceptable tradeoff. A few dollars a month in cost for access to music is way more than they're interested in spending, even $10 for a CD is more than they're usually looking to spend to acquire content. They're the kind of people who maybe only bought a handful of CDs or cassette tapes back int the day total and got a lot of their content from the radio.
Most of the paying customers for digital music tend to be generally OK or even prefer streaming services. And generally speaking, those streaming apps work pretty OK. Most work better than the early streaming/subscription apps back in the day (like old Rhapsody and Zune Music and non-pirating Napster). I still remember how long it would take to go from clicking Play on Zune to the time it would actually start playing the song compared to Spotify which felt nearly instant in comparison. Not having to reconnect my Creative Zen every few weeks refresh the DRM from Napster. Having all that content on demand from my wireless portable device. Practically all of what is available today is quite a bit better than what was, in terms of "I don't want to bother buying all of this content, I'm OK with renting a lot of it" standpoint.
I've got a collection of music I own, things I really care about. Mostly physical formats, a few hundred songs exclusively digital files. But for a lot of music I consume, I don't really care if I have it locally or have it forever. Its like listening to the radio, that song may never play again, that's OK. Buying all that content legitimately costs considerably more than what I pay for a streaming service, so the streaming service makes a ton of economic sense for what I'm looking for. I'm mostly looking for something in between a radio and a privately curated music collection, which is exactly what streaming is.
The situation for me on Android would be hilarious if it weren't so saddening. Since I purchased a KitKat tablet in 2015, I've more or less stuck to the "Android Files" app to play music files. Yes, that has been the best solution: no app install required, bare bones, no feature demands from me. In fact, rather than making playlists, I would just copy out tracks to a new folder and play them in there. Want to repeat one? Make five copies of it!
On Chromebook I'm using the builtin app, Gallery. It's utterly barebones as well. All I want to do is listen to a track.
This has continued even to the present day, but you know what? Our days are numbered, because apps are staking out moats in terms of file types they will handle. They're looking to reduce generic handling of multiple file types.
I've been trying to conform to this "new normal" by using YouTube Music. With my Premium subscriptions I should be able to download any streamable track, and also listen to files on-device. This is working out poorly. The on-device management is abysmal and makes you want to die. The downloading feature just sort of... fills up my storage, and I don't really even use it. I still fall back on Android Files because Music is such a horrible app, except when I'm using it to stream.
That is something completely different to me, as it limits replaying.
Having access for 14 days lile a boo kwould be something very different and more OK with me. But limiting the act of playing that audio itself has a new quality for me.
(DRM of course)
Edit: but apparently I was wrong and the "countdown" was just the time left of the audiobook. But the mobile UI was stuttering, so that wasn't clear. But thinking about it, I am surprised it ain't implemented yet for real.
Not everyone had some massive record collection and hundreds of cassette tapes.
Today, those "cool" stations have primarily been slurped up into iHateRadio / Comcast conglomerates, so commercial radio is useless. The internet is the only saving grace for kids today, but even streaming platforms don't do it for me. Sadly, youtube is about the best thing for its ubiquitous availability. Bandcamp/Soundcloud are cool, but still not the same discoverability as YT.
Even with my collection, it's still not instantly accessible as I'd like due to the manual labor of digitizing. I've tried on multiple occasions, but it's only a fraction of the collection. It's just too easy to find it with yt-dl
These platforms aren't necessarily drawing people who really wanted a big privately curated music collection to own forever, they're drawing the people who just want to listen to music and not have to spend much or anything at all for it. Which happens to be a ton of people.
As the size of your music library goes up, the UX changes. The original iPod UX was (at least for me) genuinely awesome. It became less awesome as iPods got 40, 60, and larger storage, and it was pretty much unusable when I modded one to have 1TB of storage.
And related but different, everybody's expectation of what "a large music collection" is varies wildly.
I don't necessarily think this is intentional enshittification, I lean more towards "there's no right solution for everybody, and there's probably not even a dozen different right solutions that encompass most people".
You can transfer files to the app over wifi or even use files from the Files app.
Project's Github - https://github.com/nexo-tech/localwave
When I was 16, I developed an mp3 player in C (I cheated and used mpg123 library). Audio players are a great way to learn about low level stuff and as a first project.
Keep developing things!
However, I feel like this is one of the most re-invented wheels I've come across so far. Nobody seems to be happy, everybody seems to fail to build something that fits at least 80% of the requirements most people have.
My personal K.O. criteria is a bit awkward in days of bluetooth and wireless devices: Working cable headphone remote controls like Apple devices had for more than 10 years now - especially useful for audio books.
Years ago I tried to write a cross platform audio player[1] app with C# and Flutter inspired by iPod Nano 7g, but it always failed for the same reason: I could not get the headset controls working properly.
I've also spent some days to submit a PR on audiobookshelf-app[2], but it didn't get merged, although it worked pretty good on my device.
Nowadays I use a combination of my old iPod Nano 7g for music and audiobooks on the go and my Android GrapheneOS Phone as spare device for "streaming" something I don't have with me using Navidrome[3] and Substreamer[4] / DSub[5] for music and audiobookshelf-app[6] and VLC Media Player[7] for audiobooks (the offline support for audiobookshelf regularly breaks on my device) - most of these are available on fdroid or even official app stores.
Btw, if you ever wondered, why Apple EarPods do not support Volume Control on Android devices and vice versa, see this link[8] - it's definitely worth a read
1: https://github.com/sandreas/ToneAudioPlayer
2: https://github.com/advplyr/audiobookshelf-app/pull/1218
4: https://substreamerapp.com/
5: https://github.com/daneren2005/Subsonic
6: https://github.com/advplyr/audiobookshelf-app/releases
What should happen: The album only has one listing and opening it reveals the entire album
What actually happens in pretty much everything: The album has one listing per artist (so you end up with a screen full of the same thing) and trying to play the whole album as one cohesive unit is an exercise in frustration
VA stuff is extremely common in my experience and it is gobstopping to me that nobody gets it right. Gobstopping enough that I have been kicking around ideas for my own music player (as it seems many of you as well)
I'd still love to get a proper successor to the Sandisk Sansa Fuze, just with USB-C charging instead of its proprietary charging cable.
There's plenty of "luxury" /audiophile MP3 players out there which cost in the hundreds of dollars, but that one was in the sweet spot of bang-for-your-buck music player that I could just use for listening to music on long plane rides etc. without draining my smartphone battery.
Essentially, you could carry a small battery attached to an extra sigle-task dedicated device, or a slightly larger battery in about the same-ish form factor that will let you use that energy to do anything you want with your other device you're probably already carrying.
If your phone is in whatever airplane mode, battery saver mode, etc. it's not going to use that much power just to play local music.
Wheels will always be the best way to navigate music libraries.
https://www.amazon.com/JadeAudio-JM21-Snapdragon-Bluetooth-P...
[0] https://gerrit.rockbox.org/r/c/rockbox/+/6510 [1] https://github.com/amachronic/echoplayer
You can replace the hard drive with MicroSD/SD or compact flash cards.
You can buy different color faceplates/backplates, upgrade the batteries, etc.
https://www.idemigods.com/iPod_5th_5_5_Generation_Video_Part...
I don't even need it to be portable. In fact, I'm happy with a "component stereo" look with a VFD display. ;-)
Does Apple want to face a formal non-compliance judgment under the DMA, or is there another reason for Apple's blatant contempt of court with its refusal to properly and fully implement the mandated sideloading[1]?
[1] The Digital Markets Act (DMA) does mandate sideloading in Article 6(paragraph 4). It requires designated gatekeepers, which includes Apple for its iOS operating system, to allow for the installation and use of third-party apps and app stores. ( https://eur-lex.europa.eu/eli/reg/2022/1925/oj/eng )
Personally, I sync my music via Synctrain (a Syncthing client). [3]
[1]: https://apps.apple.com/us/app/foobar2000/id1072807669
[2]: https://imgur.com/a/7GVxB2y
[3]: https://apps.apple.com/us/app/synctrain/id6553985316
I was unaware foobar2000 existed on iOS too, but the Windows version is my favorite audio player on that platform too.