I Built My Own Audio Player
292 points
13 days ago
| 50 comments
| nexo.sh
| HN
prell
13 days ago
[-]
I come from the times where winamp was the go-to music player. Today, even in the age of streaming services I still keep a local music library organized in folders. So, just as others here in the comments I built myself an old-school music player as a hobby project to listen to my music offline. It's a 1 page html/js app, has full keyboard controls and also features a simple queue mechanism functionality Check it out: https://nobsutils.com/mp
reply
khazhoux
12 days ago
[-]
I also came to say, some 27 years later, I still think winamp had the right UI. So simple:

* A collection of files in directories

* Ability to randomize full collection, or play just one directory

reply
wink
12 days ago
[-]
the only reason I've preferred foobar for many years is that I can have many playlists "loaded" at the same time. If Winamp's playlist panel had tabs (and a bigger font)...
reply
randomstate
8 days ago
[-]
I love it, I was looking for a simple music player like this! FYI Currently the standard bookmark shortcut `cmd + d` changes the theme instead of bookmarking the website :-)
reply
bromuro
13 days ago
[-]
To me the go-to music player has always been foobar2000. (Replaced today by Cog app)
reply
out-of-ideas
13 days ago
[-]
2025 and im still rockin foobar2000 with 2000 plugins. wish a native linux binary was out though through wine is okay, just lacks native dark mode
reply
andrew_lettuce
13 days ago
[-]
Foobar2000 is the irfanview for audio, apps I still use regularly more than 20 years and counting.
reply
ibz
12 days ago
[-]
foobar2000, IrfanView, Total Commander. The 3 apps I still miss after 15+ years of not using Windows (went through 10 years of OSX, now on Linux for probably 5 years).

There's just nothing like this trio on OSX or Linux.

reply
prmoustache
12 days ago
[-]
I've used foobar2000 and irfanview when I was a windows user 20 years but I am struggling to figure out what these have that make them more desirable than comparable apps on 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.

reply
RiverCrochet
12 days ago
[-]
In the early 2000's I discovered Irfanview, and used it because it was lightweight and loaded jpeg's much faster than anything else I was using at the time - this was on a 133Mhz Pentium 1 running Windows ME with 56MB of RAM.

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.

reply
egypturnash
12 days ago
[-]
You can get Foobar for the Mac. https://www.foobar2000.org/mac

No idea if it's any good, I just use Music.

reply
out-of-ideas
12 days ago
[-]
i never got the hang of Total Commander; i only use the file browser on windows as the cli form is so terrible compared to bash..

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

reply
jorams
12 days ago
[-]
I haven't used it and you might already be familiar, but I've seen people mention fooyin[1] as similar enough to foobar2000 for them to make the switch. Might be worth checking out.

[1]: https://www.fooyin.org/

reply
blacklion
12 days ago
[-]
What plugins do you use? I cannot imagine to add even 10 plugins to foobar2K, especially now,when "exclusive" access to sound card is built-in and doesn't require WASAPI/ASIO plugin anymore.
reply
out-of-ideas
11 days ago
[-]
i try to install them all and only remove ones that break or really bother me - its fun to play with things from time to time. in terms of which ones i use:

  - 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 users

edit formatting

reply
brulard
12 days ago
[-]
foobar2000 is awesome on Windows, but on Mac its a very different and lackluster app. At least it was some years ago.
reply
julianz
13 days ago
[-]
This works great! Nice one.
reply
wvh
12 days ago
[-]
I've been building a music collection in FLAC format for 25 years, and last year I bought an (Android) phone and a MicroSD card of 1TB that fits all of my music. It's been a long project for technology to catch up, but now that it's possible to have all of it in my pocket, I'm pretty happy with it.

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.

reply
eviks
12 days ago
[-]
Technology has caught up many years ago, it's just that you insist on an format not fit for purpose. With good reencoding you get transparent audio quality (impossible to hear a difference) to fit all of your music on a much smaller card. (and as a backup you can always have those FLACs on the desktop)
reply
wvh
10 days ago
[-]
Perhaps. I've never gotten into the effort of re-coding everything, though I have converted some to MP3 to take on runs with me before memory cards exceeded the size of the data. I'm happy we're getting at a point not having to care anymore about disk space – that is, those of us not locked into a walled garden forcing expensive upgrades for more storage.
reply
legends2k
12 days ago
[-]
Even if we agree on a format I don't want someone to quietly say a song I like is gone from my library while I wasn't looking due to some reason.
reply
duped
12 days ago
[-]
People should use wavpack for archiving instead of flac, to be quite honest. It feels like FLAC has mindshare and name recognition but it doesn't support hybrid encoding (which is great for storing audio for archival and playback) or more than 8 channels of audio.
reply
eviks
12 days ago
[-]
Music has 2 channels, so that feature is of no use. The other feature is cool as it avoids the need t maintain 2 sets of tags, though as far as I understand, it's not widely supported, especially in smartphones
reply
duped
11 days ago
[-]
Music absolutely uses more than two channels. Or less. You don't need special "support" either any more than flac, you just decode it and write the bytes to your output buffer.
reply
eviks
11 days ago
[-]
How prevalent is music with >8 channels???

And it wasn't "special", it's just apps don't support playing the format

reply
duped
11 days ago
[-]
You don't pick an archival format for the common case, you pick it for all cases. But to answer the question, virtually every film soundtrack for the last 10 years.
reply
eviks
11 days ago
[-]
That doesn't make sense, you don't pick to suffer from poor support if you have a zero ore tiny niche case for it, you preserve it for that case only.

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

reply
hulitu
12 days ago
[-]
> Technology has caught up many years ago

citation needed. Youtube still gives you crappy, unlistenable 153kbps crap.

reply
eviks
12 days ago
[-]
You're not limited by YouTube, it's your library, your encoding settings. And you don't even need any citations, do a proper AB test yourself to confirm the well established
reply
dotancohen
7 days ago
[-]
Does there exist an _objective_ method to test the sound quality difference between two files?

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?

reply
eviks
7 days ago
[-]
For some specific issues like clipping sure there are objective methods, and encoders use objective quality levels (so you don't target bitrate), and if it's not a tricky "subjective human experience can't be objective" question - the method to test is do A/B testing and see that humans can't detect a difference. That's audio transparent encoding. And since you don't care about other people for your personal phone use case, you can do this test yourself to detect the encoding quality level that's transparent to you.

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

reply
dotancohen
7 days ago
[-]
The idea is that once I have my CDs ripped to flac, I could run an encoder to MP3 for e.g. listening in my Tesla. But I don't know if the settings that work best for Dark Side of the Moon are going to be good for Rust in Peace. If there were some automated tool review hours and hours of audio, finding the discrepancies, that would save me a lot of time and provide me much enjoyment listening.
reply
duped
12 days ago
[-]
There are a number of studies on this but this one has a good summary (1). The TL;DR is that over 256 kbps for MP3 there's no significant data that listeners could perceive a difference to CD quality audio. Lower than that you can perceive artifacts.

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...

reply
blacklion
12 days ago
[-]
You are very good collection curator! Only ~25% of my collection is FLAC/APE/ALAC/WavePack and still I have more than 3TB. It is what stops me from listening music on the go — I cannot choose what to put in mobile device in advance :-)
reply
sshagent
12 days ago
[-]
I solved this by running a music stream. All songs i "like" are in a collection, and ices/icecast randomly select one song after another (i can also request things via discord bot) and i just fire up VLC and listen when i need music. Yeah its a little too random at times, but its also fun.
reply
BeFlatXIII
12 days ago
[-]
I have a Pi in my kitchen that I use as a Navidrome server. Of course, this only works so long as my phone has data reception.
reply
blacklion
12 days ago
[-]
I've tried many media servers (but not Navidrome, though, I'll try it too!) and all for them mangle my collection. Albums shown twice (because there is FLAC and CUE files, for example), albums splitted into to tracks (each track seen as its own album, I don't know why), problems with non-unicode tags in old files, 6 ways to spell "Bjork", some don't understand FLAC with embedded CUE (and don't show tracks in such files at all), and, as a cherry on the top, none of them understand such abomination as ISO image with WavePack and CUE files inside (format which was popular on one big tracker some time ago). Files without tags are also a problem. So, each of these servers show 75% of collection Ok and 25% as hot mess. Each software has its own 25%, of course.

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).

reply
BeFlatXIII
11 days ago
[-]
I understand that pain. So many duplicate files, etc! Two or three laptops ago, I had a well-curated iTunes library, but now those same files are a tangled mess on the media server, as I'd overfill local storage on laptops & iPhones with the collection.
reply
Matl
12 days ago
[-]
There are DAPs with two SD card slots such as [1]. There's now also 2TB sd cards, be it they're not cheap yet.

[1] - https://hifigo.com/products/hiby-rs2?variant=43134031167727

reply
Matl
12 days ago
[-]
I have also been building a personal collection of exclusively FLACs, be it for a lot less than 25 years. It's past 1TB but https://www.navidrome.org as the server and https://symfonium.app as the client has been great.

Granted, 2TB sd cards are now a thing so once they come down in price, I'll probably get one.

reply
nullwarp
12 days ago
[-]
Never seen Symfonium before going to have to give that a try looks great!.

I've been using Plex+PlexAmp for a while but have been really wanting to move to something outside of that.

reply
Eavolution
12 days ago
[-]
I've always had the issue on Android of the cover art/title being unreliable i.e. I change it and it just doesn't change, or it does then randomly changes to a random cover. As far as I could tell this was a bug in Android, did you run into this?
reply
tschumacher
13 days ago
[-]
I built my own web app to listen to full albums while allowing me to take breaks and switch devices. I really like to listen to albums from front to back but I found that at least YouTube Music doesn't remember playback position and you can't just switch devices without pulling up the album again on the other device and finding the position where you left off. My web app lets me paste a URL that is then downloaded to the server using yt-dlp and can be streamed from there. It always remembers playback position so I can listen from the phone in my car and then continue on the laptop at work from where I left off. It also works great for adding mixes from other sources such as NTS Radio - one of my favorites.
reply
sphars
13 days ago
[-]
You've just described one of my biggest frustrations with YouTube Music, wishing I could save queues and switch devices more seamlessly.

Would love to take a look at your web app if it's available

reply
duxup
13 days ago
[-]
This is a good read, admittedly haven't finished it yet. I like reading about the more granular details developers decide on and why.

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.

reply
al_borland
13 days ago
[-]
I still use the Apple Music app with my own local files.

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.

reply
frosted-flakes
13 days ago
[-]
Automatic wi-fi syncing to iTunes still works fine as far as I know.
reply
runxel
12 days ago
[-]
Huh, iTunes is not a thing anymore... so how would that work exactly? Genuine question, what do I miss here?
reply
jiehong
12 days ago
[-]
If you plug your iPhone on your Mac, you can click "show this iPhone on WiFi" in finder.

Then it’ll show up in Apple Music when connected on WiFi, and sync can happen this way.

reply
frosted-flakes
12 days ago
[-]
It is on Windows.
reply
selkin
13 days ago
[-]
> Initially, I avoided Swift because of my previous experience with it […] without native async/await at that time, writing concurrent code compared to Go or JS/TS felt clunky and boilerplate-heavy.

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.

reply
eikenberry
12 days ago
[-]
> 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.

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.

reply
selkin
12 days ago
[-]
> Good concurrency should make the code simpler to understand and reason about as it grows.

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.

reply
eikenberry
12 days ago
[-]
> [..] once you have a piece of data that is read at the same time by many, while also maybe mutated by at least one.[..]

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.

reply
Citizen_Lame
12 days ago
[-]
But for his usecase, this most likely won't be an issue as he just wants simple audio player.
reply
ivyirwin
12 days ago
[-]
I was hoping the article was going to be about a physical device as well as the software to manage and play songs. A few years ago I wanted to get my 10 year old son an mp3 player – he's really into listening to music but wasn't ready (still isn't) for a phone. I was shocked by the state of the mp3 player options. When Apple discontinued the iPod they created a huge vacuum that no one seems to have filled.

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.

reply
TheDong
12 days ago
[-]
> When Apple discontinued the iPod they created a huge vacuum that no one seems to have filled.

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.

reply
cloudhead
12 days ago
[-]
Fiio has a bunch of products in this category, eg. https://www.fiio.com/cp13 and https://www.fiio.com/jm21
reply
hexfish
12 days ago
[-]
Vouching for Fiio. They make really nice stuff! Never tried their audio players but the few Fiio DAC's I have used all felt really premium, especially for the price.
reply
zevon
11 days ago
[-]
Maybe also an option and an educational little project about electronics and (re-)using "old" devices: There are lots of used iPods around and many of the old hard drive models are pretty easy to retrofit with flash-based storage (there are also lots of options for aesthetic customization as well as more involved modifications such as adding Bluetooth, USB-C and whatnot). As others have mentioned, the software side also still works well with iTunes on Windows and Finder/Music integration on MacOS.
reply
MarcellusDrum
12 days ago
[-]
I think its a demand issue, not a hardware/software one. Chinese manufactures are creating Mini IPhone 16 and Mini S24, devices that look good, can play music, have the functionalities of a smart phone, and sell for $50-$100.

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.

reply
brulard
12 days ago
[-]
OP says son is 10 years old. (not sure if it was edited)
reply
MarcellusDrum
12 days ago
[-]
He said a few years back. I might have wrongly assumed 10 was his age back then.
reply
stateofinquiry
12 days ago
[-]
Sony still makes very nice players - under the "walkman" brand no less. https://electronics.sony.com/audio/walkman-digital-recorders... . Probably too pricey for a 10-y-old child, but you might be able to find a used one on ebay?
reply
videogreg93
12 days ago
[-]
This are just dumbed down phones in a sense: I don't want my mp3 player to be running android. I want a minimal piece of software that lets me quickly navigate to the songs that I want, and physical buttons to do it. I've look long and hard for something like this and cannot for the life of me find it. I'm really sad that I lost my Ipod classic 10 years ago.
reply
DocTomoe
12 days ago
[-]
Sony also has 'dumb' - and incidentally cheaper - MP3 players: https://electronics.sony.com/audio/walkman-digital-recorders...

That model looks a lot like what the iPod nano did.

reply
TheDong
12 days ago
[-]
Surfans F20 HiFi MP3 Player / HiFi Walker H2 fits your description.

Both are compatible with rockbox, so if you install that you can be sure they aren't running android: https://www.rockbox.org/

reply
flobosg
12 days ago
[-]
You just reminded me that I have a SanDisk Clip lying around somewhere in my flat.
reply
voidUpdate
12 days ago
[-]
Just buy a bag of nuggets from ebay :P
reply
theandrewbailey
12 days ago
[-]
reply
slmjkdbtl
13 days ago
[-]
Managing local music with Music.app and syncing with Finder iPhone sync still works good for me, but Music.app does seem unmaintained for a couple years now with some annoying bugs since the terrible Big Sur rewrite. Despite the flaws this combination is still the best music library management + mobile sync solution I've seen (plz recommend!), but I feel eventually will have to write a system myself since the software is not maintained and not cross platform.
reply
cosmic_cheese
13 days ago
[-]
Part of the issue with the Music “rewrite” is that it’s less of an actual rewrite and more of a copypaste from iTunes. Lots of iTunes quirks remain, like the modal settings/preferences window that’s a holdover from the OS 9 days (OS X settings windows aren’t supposed to be modals).

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.

reply
DrillShopper
13 days ago
[-]
The built in Finder sync is still very broken on my 5th Gen Video iPod. The most annoying breakage was trying to sync podcasts - it worked fine back when iTunes was the program to do that with, but when using the Finder sync on Big Sur it's buggy and does not remember your place in the podcast if you move to another track / podcast and back, which functionally makes podcasts longer than a few minutes unusable on the device.
reply
jonhohle
13 days ago
[-]
It’s amazing to me that iPod syncing still works. I use a 2ᴺᴰ gen nano and my son uses a, 6ᵀᴴ gen. I preferred managing in iTunes to finder, but it’s crazy that a 20 year old player with a proprietary software interface still works.

Apple is so quick to drop support for some things and keep other things around seemingly indefinitely.

reply
cageface
13 days ago
[-]
You could give my app a shot too:

https://www.plastaq.com/minimoon

reply
slmjkdbtl
12 days ago
[-]
This looks great! Will give a try later. For iPhone sync can it sync to the built-in Music app music library?
reply
369548684892826
13 days ago
[-]
People will literally build their own music apps instead of switching to Android. Is it just for the blue bubbles, or because of how everything "just works" (unless you want to play offline music)?
reply
rollcat
13 days ago
[-]
You really would move to a different country just because they have better bread?

What's the problem with baking your own?

reply
noman-land
13 days ago
[-]
It's more akin to moving to a different country because this one mandates which bread you will eat and how you will eat it. A mighty fine reason to emigrate.
reply
coolcase
13 days ago
[-]
More like the country bans the sales of cannnabis but you are allowed to grow your own, so you buy some lamps etc.
reply
rollcat
12 days ago
[-]
How are any of the players mentioned in the comments banned on iOS?
reply
koito17
13 days ago
[-]
I made a prototype of a music player for iOS, since the VLC app cannot reliably parse metadata of FLACs stored on my file server. I cannot store my whole music collection on my device, due to storage limitations.

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).

[1] https://github.com/johnno1962/InjectionIII

reply
somanyphotons
13 days ago
[-]
People will literally write code to avoid Android
reply
bee_rider
13 days ago
[-]
Foobar2000 has been on the App Store for ages…

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.

reply
mynegation
13 days ago
[-]
I’m on iOS and I use navidrome/substreamer app combo - it work great and I can keep selected music on device too.
reply
icar
12 days ago
[-]
Tangentially, I really recommend https://play.google.com/store/apps/details?id=in.krosbits.mu... if you have your collection of music offline. Works flawlessly.
reply
octo888
12 days ago
[-]
Symfomium is also excellent (supports Plex, Jellyfin, WebDAV, SMB etc too)
reply
nzoschke
13 days ago
[-]
I built my own audio player too.

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.

reply
keysdev
13 days ago
[-]
Yes web player usually requires 206 support on http or you can chop up the audio file to a m3u format.

Or else a large audio file will be halted on the clientside till it is fully downloaded.

reply
bccdee
12 days ago
[-]
> This makes ultimately no sense. An innovative technology company actively puts roadblocks into democratized application development.

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.

reply
codingjerk
12 days ago
[-]
I feel like developing an app for iOS is harder than developing one for Android.

Everything from writing code to building and publishing is overcomplicated.

reply
brulard
12 days ago
[-]
Unless you try to support wide range of devices. That's where android development is harder.
reply
codingjerk
12 days ago
[-]
This. And it feels like competition is lower on AppStore.
reply
eddieroger
12 days ago
[-]
I've done both, and this was not my experience. Nowadays, they're much more similar than different, but 10 years or so ago, "easy" was defined by if you knew Java or Objective-C. Android, like most Java, required a lot of code to do simple things (public static void main...), and tons of XML to make the app support so many devices. Objective-C had good boiler plate thanks to Apple and NeXT before it using the frameworks for years.

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.

reply
codingjerk
12 days ago
[-]
Thanks for sharing. I agree in general,

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...

reply
eddieroger
11 days ago
[-]
What prerequisites are you thinking of? Nowadays, all you need is a Mac, download Xcode, and go. You can't do /everything/ if that's as far as you go, but if all you wanted to do was flesh out an idea, that would get you started. And how's that's any different than getting a computer, installing Android Simulator, and starting a new project?
reply
rollcat
13 days ago
[-]
Since everyone's dropping their fav/DIY players, shout out do Decoupled: <https://apps.apple.com/app/decoupled/id1382409837>

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.

reply
johng
13 days ago
[-]
Man, this is awesome. It's sad that this is a rarity now a days... I have a hard time playing my own music on the iPhone as well. I'm pretty sure the first mp3 I played was in DOS BBS days and you spent a good 20 minutes downloading a single song and then fired up a fraunhoffer DOS CLI player. S3M/XM/IT players were much more advanced interfaces at the time....
reply
TartHint54
12 days ago
[-]
Loved the deep-dive! Your switch from React Native to pure SwiftUI really drives home how much easier native code becomes once you need proper iCloud access, and the SQLite FTS5 search trick is brilliant—I’m borrowing that for my own library app.
reply
tipofthehat
12 days ago
[-]
Tangentially related: as a non-developer I have started trying to hack/extend Anytime Podcast player to become a light language learning app, for supporting using native level resources for intermediate learners.

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.

reply
NSUserDefaults
13 days ago
[-]
Interesting read, nice to see technical details and rationale for building it this way. I made a similar one (https://www.catnapgames.com/tiny-player/) except instead of iCloud I rely on web based uploads. For me one of the high level takeaways was to use ffmpeg next time. Apple APIs for decoding are nice but have limited support for file formats. And then there’s the lockin aspect..
reply
nopelynopington
12 days ago
[-]
Historically one of the reasons I became an android user was the sorry music experience on Apple, if you don't buy into iTunes.

On android the best I've found is Pi music player

reply
mg
13 days ago
[-]
I wonder if one could build this in HTML, so there is no need to install anything.

On both iOS and Android, HTML can play videos and mp3s while the screen is turned off. So maybe it is possible?

reply
matteason
13 days ago
[-]
It's actually surprisingly hard to get iOS Safari to keep playing audio with the screen off.

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

reply
thorum
13 days ago
[-]
The solution I found after approximately two months of struggling with this problem: you have to generate an audio file that is a few seconds of silence, play it on a loop, and play it at the same time as the actual audio file you want to play (via separate audio elements, or an AudioContext). Specifically I believe you need to make sure the silence is “playing” at track boundaries for the real audio, so there is never a single moment where your webapp stops playing audio.
reply
prmoustache
13 days ago
[-]
How do you even accept to use/and develop for a device that forces you to do that?
reply
thorum
13 days ago
[-]
Apple makes webapps/PWAs hard because they want you to make a native app instead.
reply
matteason
13 days ago
[-]
Ohhh that's interesting, so the root cause for my workaround working might be that the "live" audio node that I stream everything else to effectively never stops
reply
busymom0
13 days ago
[-]
Does iOS let you play multiple audio at the same time?
reply
aspenmayer
13 days ago
[-]
I have been able to have multiple streams on iOS, but not easily. GarageBand might be able to do this via imports, but I’m not sure it it lets you queue/play multiple samples simultaneously like it will on macOS iirc.

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.

reply
thorum
13 days ago
[-]
It works on iOS 18. Safari’s audio support was pretty rough on earlier versions, especially <17, but I didn’t need to support those for my project.
reply
egglemonsoup
13 days ago
[-]
Hey Matt! I've been a fan of Ambiphone for a while and I see your comments on HN surprisingly often. I've been trying to build a different web audio player with inspiration taken from yours. I haven't figured out the screen off audio thing, so thank you so much for sharing this demo!!!
reply
matteason
13 days ago
[-]
Thanks so much, that's really cool to hear! Let me know if you ever hit any more problems, I've been meaning to blog about a bunch of problems I had to work round in various browsers but haven't got round to it yet, so happy to answer any questions
reply
__jonas
13 days ago
[-]
They specifically ditched react-native because of their requirements regarding file system traversal, so this is definitely not something that could have been done in-browser.
reply
mg
13 days ago
[-]
Traversing local directories is supported via the File System Access API in browsers these days:

https://stackoverflow.com/questions/64283711

It works nicely in Chrome on the desktop and on Android. Not sure how the situation is on iOS.

reply
miramba
13 days ago
[-]
But unfortunately not on Safari respectively the iOS webview, which would have been mandatory for the author to use. If I am wrong, I‘d gladly take a solution. I think this is one of the main problems for PWAs: No good , platform-independent way to access the local file system. As in „pick once, access forever“.

Edit: https://caniuse.com/native-filesystem-api

Edit2: Just a few posts down: https://webamp.org/

reply
mg
13 days ago
[-]
I see.

That's a pretty big argument to go with an Android phone.

Being able to write your own tools in HTML is so nice.

reply
lukan
13 days ago
[-]
Sure, I did it 13 years ago and still use it daily. On a PC though, mostly. (But the actual player was mobile first, as it was my remote connection to the PC that is connected to the bass box. But works also standalone.)

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.

reply
ochrist
13 days ago
[-]
I use an app in NextCloud called Music. I can use this from all my devices.
reply
koakuma-chan
13 days ago
[-]
I built my own player too, but it's a web app https://github.com/mayo-dayo/app
reply
precompute
13 days ago
[-]
I don't play music on my phone very often. But when I do, I use VLC to access my local minidlna server. It's easy and works with ~no config.
reply
teleforce
13 days ago
[-]
For me the best audio player ever is Napster [1].

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:

https://en.wikipedia.org/wiki/Napster

reply
soulofmischief
13 days ago
[-]
Spotify was originally p2p. The early principal engineer was the same dev who built µTorrent, Ludvig Strigeus.

I'd also recommend looking at communities such as Soulseek. And Limewire is still around!

reply
teleforce
12 days ago
[-]
Thanks for the info although I was around during the released of µTorrent and one of its early users, I didn't know Ludvig Strigeus was instrumental in the Spotify early days.

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:

https://en.wikipedia.org/wiki/Ludvig_Strigeus

reply
soulofmischief
11 days ago
[-]
Strigeus, Fabrice Bellard and Carmack are three of the most GOATED hackers ever, I look up to them as examples of real 10x engineers.
reply
slurpyb
13 days ago
[-]
Do you ever think about how the mp3 lead to napster, facebook, then whatever hellscape we have now?
reply
josefritzishere
13 days ago
[-]
It's interesting that most/all of the available tools for playing digital music, a well-known and very popular activity... suck. Do we think that's enshittification or product managers misunderstanding the market? In a normal universe one might otherwise expect it to be saturated with options.
reply
JCattheATM
13 days ago
[-]
VLC has always been more than sufficient for me, or mp3blaster back in the day for a TUI app. I have trouble understanding why those or similar solutions are not sufficient for others....just interface preferences I guess?
reply
munificent
13 days ago
[-]
It's enshittification.

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.

reply
vel0city
12 days ago
[-]
Spotify (and other streaming services) has a stronger incentive to push things you're actually likely to listen to and find value in, otherwise you're likely to not use the app and stop paying them.

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.

reply
munificent
12 days ago
[-]
The game every big media company is playing now, and the thing that Doctorow coined as "enshittification" works sort of like this:

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.

reply
mouse_
13 days ago
[-]
When billions of dollars are involved, never attribute to stupidity what could be adequately explained by malice.
reply
vel0city
12 days ago
[-]
Most of the market of actual paying customers don't really care to have directories of FLAC files and terabytes of local data. And most of the people who have large collections of FLAC files probably didn't spend much to get those collections and aren't likely to bother paying for an app to be developed and supported. Most people I know with a local music library of thousands of FLACs spent $0 on that content.

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.

reply
eviks
12 days ago
[-]
It's hard to answer that question without understanding what specifically "sucks" in all the tools? I mean, the market is saturated with options, there are dozens of apps and streaming services well suited for "popular". It's the more advanced parts that are underserved, but that's just what you'd expect in any normal universe, you're rarely popularly saturated with greatness.
reply
AStonesThrow
13 days ago
[-]
Yeah I think a sibling has it right: DRM factors into this, and TPTB do not want another Winamp or VLC that gives freedom to users to play what we want.

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.

reply
dylan604
13 days ago
[-]
The enshitification was completed when they convinced us to no longer want to own our own copies of music but to perpetually rent access to their content.
reply
lukan
13 days ago
[-]
The latest Iteration I discovered 2 days ago, a audio service(via Amazon), where you have limited time for listening. So I get to listen to that new audiobook, but see my 10 h contingent decrease every second I listen. Creates a new vibe for me.
reply
dylan604
13 days ago
[-]
Libraries had the same count down, but it just wasn't in your face. If you returned a book after the agreed time, they charged you late fees. These guys just cut off access to it. They should have a late fee equivalent where you can extend the time without having to pay the full rental rate again.
reply
lukan
13 days ago
[-]
Maybe I was not clear, but the counter only ran while it was playing.

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.

reply
Obscurity4340
13 days ago
[-]
Ughh, I hate the sound of that. Hard pass, I'll find whatever it is and download the darn thing or create an audiobook from it if need be
reply
lukan
13 days ago
[-]
Yes, but recording the audio is annoying, but currently what I will do ...

(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.

reply
Obscurity4340
10 days ago
[-]
I think you could actually just play the audiobook and screen capture video the whole time and you'd have a decent clear video with audio you could just rip the audio from. Only problem is you would have to have it running the whole amount of time without any hiccup in that process but I got a great, rare piece of audio I couldnt find anywhere that way
reply
vel0city
12 days ago
[-]
People have spent many decades without actually caring to own their music content. Back then they used these things called "radios" to enjoy music content without owning the collection. Streaming services today are just another evolution of listening to the radio.

Not everyone had some massive record collection and hundreds of cassette tapes.

reply
dylan604
12 days ago
[-]
I never have liked commercial radio. There's too little music, and too many commercials. Then of course there's the whole payola issues, and the lack of variety in the tracks played on the radio. In major markets or college towns, there might be a few stations that just play good music based on what the program director or specific jockeys want to play. Luckily, I had one near me, and it offered me a catalog of music I just wasn't going to get otherwise. So for me, the only way to hear what I considered "good" music was to collect it. I spent lunch money and other random bits of cash I'd receive as a teen solely on music.

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

reply
vel0city
12 days ago
[-]
I mean sure, there's always been a lot of people who didn't care for the radio and absolutely found it valuable to buy physical media copies or later digital versions they truly owned. But there's pretty much always been a large chunk of people who didn't care to own a lot of content. They didn't have to be "convinced" to no longer want to own their own copies of music, they never cared to from the start. They just didn't really have any other options other than maybe buy a small handful of physical media or listen to the radio. Now they have a ton more options. It's not enshittification to build new services to target customers which previously only had worse options. Before, these users practically only had AM/FM radio to service what they were looking for. Now there's lots of apps out there with ad supported or cheap tiers (the price of a few CDs a year to get access to thousands and lots of constant new content) offering them on-demand music and autoplaylists and what not.

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.

reply
bigiain
13 days ago
[-]
I think it's a combination of both scale and people's expectations.

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".

reply
wafriedemann
12 days ago
[-]
I thought about doing that as well. Currently I use Doppler but I wanted to add meta data from Wikipedia to create an experience similar to what Roon offers. It should also have more automation like auto-generated daily playlists and the like so your local library feels more alive and let's you rediscover things.
reply
busymom0
13 days ago
[-]
I personally use the Documents app by Readdle. I have the free version and have been using it to transfer and play audio files for like 3 years. Their audio player looks just like a music player and has all controls too.

You can transfer files to the app over wifi or even use files from the Files app.

reply
strunz
13 days ago
[-]
Site is down, mirror - https://archive.is/Mxfcp

Project's Github - https://github.com/nexo-tech/localwave

reply
jbirer
12 days ago
[-]
This is really cool, I love how you planned the entire development before with graphs.

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!

reply
Gud
12 days ago
[-]
I wish someone would revive XMMS.
reply
karpovv-boris
13 days ago
[-]
reply
thelastinuit
6 days ago
[-]
We gotta go back to the 90's... this is awesome!
reply
sandreas
13 days ago
[-]
Nice write-up - although I thought you've built your own HARDWARE audio player first.

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

3: https://www.navidrome.org/

4: https://substreamerapp.com/

5: https://github.com/daneren2005/Subsonic

6: https://github.com/advplyr/audiobookshelf-app/releases

7: https://code.videolan.org/videolan/vlc-android

8: https://tinymicros.com/wiki/Apple_iPod_Remote_Protocol

reply
pdntspa
13 days ago
[-]
I wonder if this app shits the bed with "Various Artists"-type compilations (or DJ mixes separated into tracks) like seemingly every music app does.

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)

reply
detectivestory
13 days ago
[-]
Would be amazing if you could connect this to pcloud. Their default player is no fun to use
reply
apt-apt-apt-apt
12 days ago
[-]
How long did it take you to finish the app? 1.5 weeks seems incredibly fast.
reply
dvh
13 days ago
[-]
Years ago I also made music player in Lazarus using mplayer in slave mode.
reply
Almondsetat
12 days ago
[-]
Do people forget iTunes allows you to load your own music files so you can play them in your music app? Unless you only have linux computers, this is a non-problem
reply
zaphodias
12 days ago
[-]
Did you read the article's section "Why I Built My Own Audio Player"?
reply
aanet
13 days ago
[-]
Now THIS is the kind of project that I love to see on HN. Well done!
reply
slimebot80
12 days ago
[-]
Plexamp is pretty OK, btw
reply
hondo77
13 days ago
[-]
I don't see the problem with cable syncing, which works fine for me with lots of music and three devices I sync to, but you do you.
reply
bigiain
13 days ago
[-]
Wireless charging means I rarely (perhaps even never for my current phone) plug it in with a cable. It wouldn't be a huge deal if I needed to to sync music, but it's certainly friction to my adopting apps that require that.
reply
throw_m239339
13 days ago
[-]
Very good read about your experience developing an Audio Player for Iphone. thanks.
reply
CommenterPerson
13 days ago
[-]
Years and years ago I tried to store and organize family photos using iTunes on my computer. Suddenly, I could not use image files directly any more , for example edit them in Photoshop, without having to jump through hoops. That was when I ruled out apple products for ever. .. It's enshittification.
reply
shubkukreti
13 days ago
[-]
This is soo cool
reply
AdmiralAsshat
13 days ago
[-]
Dang, I thought he had built his own hardware.

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.

reply
vel0city
12 days ago
[-]
I get what you're thinking of with having a separate device, but I've found it better to just have a decent extra battery pack to travel with. You get a lot more flexibility with use. Maybe you just wanted to listen to music. Maybe you later decided you actually wanted to read instead, or play a game, or watch a video. Maybe you forgot to sync those podcasts until you got to the airport waiting on the plane and only just downloaded it and now it's a hassle to bust out a cable and sync it to your offline only MP3 player.

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.

reply
blizdiddy
13 days ago
[-]
I had been wanting something similar recently and ended up buying a Hifi Walker H2 and loading rockbox on it. Works great, and it’s a total nostalgia trip to be using rockbox again after so many years!

Wheels will always be the best way to navigate music libraries.

reply
AdmiralAsshat
13 days ago
[-]
Oh, nice! That undercuts the price of the FiiO JM21 by about half, which was the other entry-level audiophile music player I was looking at if I ever decided to splurge on one:

https://www.amazon.com/JadeAudio-JM21-Snapdragon-Bluetooth-P...

reply
yapyap
13 days ago
[-]
The Tangara from cooltech.zone fits most of ur requirements, except the price one maybe
reply
Foobar8568
13 days ago
[-]
You have many options for DAP, unfortunately they are often android based. In some rare cases, they are either pure custom OS, or stripped down android device. I have a Cayin N3U, I hesitated a lot with some Hobby device as it's a small brick and Android, while the android interface is still too present for my taste, and a bit too large, I have no regret, I really wanted something dedicated, no Bluetooth, tube, portable, no streaming, no extra app.
reply
keyringlight
13 days ago
[-]
There was a merge into Rockbox [0] last month with someone making their own hardware [1] primarily to run rockbox.

[0] https://gerrit.rockbox.org/r/c/rockbox/+/6510 [1] https://github.com/amachronic/echoplayer

reply
razakel
13 days ago
[-]
I wonder if you could get an iPod Classic and upgrade the storage/replace the battery...
reply
windowsrookie
13 days ago
[-]
There is a whole modding community around the iPod video/classic.

You can replace the hard drive with MicroSD/SD or compact flash cards.

https://www.iflash.xyz

You can buy different color faceplates/backplates, upgrade the batteries, etc.

https://www.idemigods.com/iPod_5th_5_5_Generation_Video_Part...

reply
sphars
13 days ago
[-]
I have an iPod 5th gen sitting on a drawer, I definitely need to check this out, thanks for the resources
reply
q2loyp
13 days ago
[-]
Yes that is possible, I got gifted one such iPod once.
reply
JKCalhoun
13 days ago
[-]
I've considered building a device with the Teensy.

I don't even need it to be portable. In fact, I'm happy with a "component stereo" look with a VFD display. ;-)

reply
kelthuzad
13 days ago
[-]
>Even after the DMA Act in the EU, sideloading still isn’t fully open. EU users can now install apps from third-party marketplaces directly from a developer’s site, but only if that developer still enrolled in Apple’s $99/year program and agrees to Apple’s Alternative Terms. For personal/hobbyist use, this still doesn’t remove the 7-day dev build limitation.

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 )

reply
7839284023
13 days ago
[-]
For music on iOS I can't recommend foobar2000 [1] enough - and I tested ALL of the alternatives. You can import ANY folder (probably what OP is looking for) or use your "iPod Library". [2]

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
reply
jasonjayr
13 days ago
[-]
I was unaware that synctrain existed! That solved my last issue I had with my iPhone. I have been using keepass on various platforms to sync my password list, and with keepassium + synctrain I have my iPhone covered. Thank you!

I was unaware foobar2000 existed on iOS too, but the Windows version is my favorite audio player on that platform too.

reply
eviks
12 days ago
[-]
But foobar doesn't scrobble unlike other alternatives
reply
noncoml
13 days ago
[-]
JFYI in case anyone else is in same situation. Before building your own app first try Navidrome and play:Sub
reply
TiredOfLife
13 days ago
[-]
Navidrome and https://symfonium.app/ on Android
reply
jsmith99
13 days ago
[-]
I strongly recommend the apps you mentioned, but in the author's case they wanted to keep their music in iCloud.
reply
rckt
13 days ago
[-]
On iOS I'm using Evermusic player, which allows syncing with different online sources. First I used it with my Dropbox folder, then moved to my self-hosted WebDAV.
reply
amiga386
13 days ago
[-]
I won't comment on the merits of this project, but I put my entire media collection, including all audio, in Jellyfin, and I find Finamp (available for Android and iPhone) to be convenient player, especially that it has easy download of entire albums, artists, etc. and "offline mode" you can toggle on so you can random-play whatever you've downloaded, even in places with no phone reception.
reply
Mashimo
12 days ago
[-]
I had a few bugs with Finamp, now I switched to the paid https://symfonium.app/ app on android, still with jellyfin backend. Which works great for me.
reply
daoistmonk
13 days ago
[-]
Thanks! Just tried Finamp and it works great!
reply
boomer_joe
13 days ago
[-]
Isn't VLC an option for playing local files and available in the App store? You could sync the folder with iCloud.
reply
nexo-v1
13 days ago
[-]
It is available, but the last time I tried it, I was only able to select specific audio files for import. I couldn't import the whole directory at once
reply
skydhash
13 days ago
[-]
There’s a VLC folder inside Files (iOS) where I dumped the library. The nice things is that it plays opus (my lossy format of choice).
reply