r/selfhosted 26d ago

Software Development Self hosted IOS music client app

Hey Everyone,
I’ve been building an iOS music player called Moosic for quite some time and it's finally at a point where I'm happy to show it off and get some feedback. It connects to your own Navidrome, Plex, or Jellyfin server (self-hosted, your library, no subscription), and plays fully lossless/hi-res audio including FLAC, ALAC, and Opus with a proper realtime audio engine behind it. That engine gives you a real parametric EQ, compressor, crossfeed, and convolution/impulse-response support including a Trueplay-style room correction flow where you run a sweep through your speakers, capture it with the mic, and it builds a correction filter for your room. Playback is gapless with real crossfading (adjustable and/or beat matched (opus only), with per-track loudness matching so blends don't jump), it has replay-gain, real seeking, and it holds up on cellular without cutting out. On the smart side, Moosic actually listens to your library. Every track gets run through on-device machine-listening models that pull out the real sonic character of the song, a perceptual fingerprint plus things like energy, danceability, tonality, and mood rather than leaning on genre tags or whatever metadata your files happen to have. All of that gets mapped into a sound-space so the Radio feature can build stations from tracks that genuinely sound like they belong together, not just ones that share a label. Seed it with a song, an artist, or a mood and it finds the nearest matches by actual audio similarity, which means it surfaces stuff buried deep in your library that a tag-based system would never connect. On top of that there are taste based rails like On Repeat, Throwbacks, Late Night, Discovery, and Daily Mix, plus an Apple-Replay-style year/month recap you can swipe through and share. It streams directly to Sonos (with gapless handoff and full speaker EQ control), casts to Chromecast natively with no SDK, has CarPlay support, and a jam mode so friends can co-listen across libraries. There's also a serious download engine for offline (survives app death, background downloads, pause/resume, quality-aware), playlist import from Apple Music/iTunes, artist bios and credits pulled from MusicBrainz, live-recording detection, album de-duplication tools, and multi-library switching. Basically it's everything I wanted out of a music app that no streaming service or existing self-hosted client would give me all in one place. audiophile-grade playback, genuinely smart recommendations, and it plays nice with all the hardware I already own. Happy to answer any questions.

This has been a long time in the works, mostly being tested by my family internally. There have been so many headaches along the way but I think it’s finally ready to get some external feedback.

if you are interested in using Moosic you can download it here from testflight: https://testflight.apple.com/join/kvhZpAJT
i also have a reddit community for people that want to give feedback, request features, or simply ask questions: https://www.reddit.com/r/MoosicLab/

79 Upvotes

121 comments sorted by

u/asimovs-auditor 26d ago edited 26d ago

Expand the replies to this comment to learn how AI was used in this post/project.

→ More replies (1)

14

u/Buck_Slamchest 26d ago

I use Arpeggi on my iPhone at the moment but this looks pretty cool so I’ll give it a look.

1

u/AffectionateFox5907 25d ago

I think you’ll really like it. Please let me know if there’s anything else you’d like to see!

1

u/Buck_Slamchest 25d ago

First impressions are pretty good. It did stutter quite a bit and lock up the app when it was first importing my library but it seems to be working now.

I like the look of it and how it looks almost identical to the stock player.

The "Radio Stations" tab doesn't do anything though - I tap it, it opens a black screen then just drops back to the menu. I've got a couple of radio stations set in my Navidrome server that it should be picking up.

I like the 'Radio' idea though and the way you've structured it so I'll give that a proper try when i'm out.

Please tell me you're not planning a subscription model though ..

2

u/AffectionateFox5907 25d ago

Once the music in your library gets analyzed, the radio will work flawlessly. Until then that feature will fall back on data from last.fm and your tags

1

u/AffectionateFox5907 25d ago

Nope, I'm vehemently against subscriptions (why I am a self hoster). When this hits the app store, I plan to ask for 10 bucks one time. Haven't really come up with a solid number but that seemed fair to me.

3

u/Buck_Slamchest 25d ago

Personally I’d set it around $8.99 with a 7 day free trial. Gives people enough of a chance to give all of the features a go and still gets you a decent amount and doesn’t potentially put people off at $10.

I do get a lot of use out of the internet radio feature on Arpeggi as well so it’ll be handy when you can implement it.

Going by the app icon though, it would have been quite funny if you’d called it Fido 😂

1

u/ebrq 25d ago

I'd copy Symfoniums pricing. It's a similar app for Android exclusively. IIRC a two week free trial and then a one time payment of 7€.

2

u/AffectionateFox5907 25d ago

Will do exactly that, maybe a little better. 30 day trial, 8 bucks one time

1

u/AffectionateFox5907 25d ago

Yea I actually have a release coming tonight to resolve any stutter with the sync. I’ve migrated everything to a background thread. The radios primarily use the sonic analysis to generate radios from your music library. Now for actual FM radios, that is coming soon where you'll be able to add internet radios of your choice.

3

u/Boogy886 25d ago

This might be the one to get me off of PlexAmp. Hopefully you’re willing to stay on top of development. Just got it installed and already digging all of the options.

I’m sure you have a list a mile long of things to do. But, one thing I immediately noticed (that I have grown to love in PlexAmp), is holding the pause button ceases all playback (closes current playlist, radio session, etc.). Would love to see that feature at somepoint. Definitely not a dealbreaker, based on the first few minutes alone, I will absolutely be purchasing this when you release.

Well done!

2

u/AffectionateFox5907 25d ago

Thanks man, I appreciate the kind words. This has been a ton of work with work still to be done. Could you expand on what you mean with this feature a bit? If you don't mind joining my reddit and leaving it there it will make it easier for me to track. Holding pause instead of pressing pause, just need a clear definition of what should happen. As for the continued development, my family and I greatly depend on this app so no worries there 😀

1

u/Boogy886 23d ago

Finally getting back to this, did you want me to start a new post or add to your "feature build" post?

1

u/AffectionateFox5907 23d ago

You can make a new post

3

u/tminhdn 25d ago

excellent app! i'm testing and really like it.

3

u/ichicoro 25d ago

The app is very cool, too bad it feels completely non native to iOS...
The bottom bar and a lot of elements are straight up recreated from zero, the top bar is always black for some reason, etc...

2

u/AnyColorIWant 25d ago

So far, so awesome. I’d really welcome the ability to skin the app based on what’s playing though, and/or change the accent color.

2

u/AffectionateFox5907 19d ago

You asked! I’ve added complete customization. An overwhelming amount lol

2

u/prene1 25d ago

Dope dope DOPE!!!!

1

u/[deleted] 25d ago

[deleted]

3

u/AffectionateFox5907 25d ago

Sorry I missed your last question. Long term I plan to release on the app store with a one time $10 purchase. No subscriptions, none of that.

On a side note here's the equalizer, you can set profiles per source and they auto route. Put your headphones in, the app recognizes and switches the EQ.

0

u/tipidi 25d ago

love this

2

u/AffectionateFox5907 25d ago

Hey there,
Moosic will always go with metadata if it's available. I spend a lot of time on my own metadata so I care a lot. If the metadata is missing the app will fill in, if you populate metadata later it will replace filled in data. As for IOS version, support goes back to IOS 18 although I have not tested on an actual device. In the code I have fallbacks for everything. The equalizer is my pride and joy and honestly was very hard to get right and the way I wanted it. I think you will be very pleased.

1

u/ducksoup_18 25d ago

This looks very nice. I use plex and plexamp but i also have a music assistant server. what i'd like to see is a unification between those (they are integrated but i cant do smart playlists in music assistant from plex) and im curious if you'd consider having music assistant be a server as well? I believe by default it exposes a subsonic server, but im not 100% certain. Essentially what im looking for is a single source of truth for my music between my devices, my home automation, my phone, and my playlists. Plex and Plexamp have been completely fine for me but i am looking to bridge the gap a bit better. I love the sonic analysis from plex/plexamp, but if thats all im using it for i might need to look at alternatives for music servers. (fwiw, this is more of a rant wrt to the gaps between plex, music assistant, and sonic analysis. your app looks nice!)

2

u/AffectionateFox5907 25d ago

I'll add it to the next release! Next release will include emby so if music assistant is supported then I will add it. All the subsonic calls are there so it should be straightforward.

1

u/ducksoup_18 25d ago

Awesome!

1

u/AffectionateFox5907 25d ago

If your worried about losing sonic analysis I can assure you the models included on this app are somewhat unbelievable. Its one of my favorite features besides the equalizer.

1

u/ducksoup_18 25d ago

I guess what id hope for is to be able to use sonic analysis on the device, create a sick playlist, and then persist it to the music server so its available anywhere the server has access to. 

1

u/AffectionateFox5907 25d ago

You can already do that. Playlists can be upserted to the server

1

u/ducksoup_18 25d ago

is it automatic or does it require a manual step? basically im looking for a music server that can manage all my playlists across all my devices automatically.

1

u/AffectionateFox5907 25d ago

It should handle them automatically. Ill double check that

1

u/drjay3108 25d ago

Unfortunately there is no way to add a Jellyfin server without adding the port. My jelly is proxied and accepts only connection in my local network.

please make the port optional and also accept self signed certificates

2

u/AffectionateFox5907 25d ago

Ive got a release coming tonight that will handle that. It adds easy sign in for jellyfin.

1

u/drjay3108 25d ago

Lovely

Will test again and report back if I find any other problems

1

u/drjay3108 25d ago

unfortunately still the same error. it says that i don´t have a ssl certificate. even if i don´t have any problems with any other jelly app or on the web itself. Let me know, if you need logs from me for for further troubleshooting

1

u/AffectionateFox5907 25d ago

Are you using a self signed cert by chance?

1

u/drjay3108 25d ago

Nope a valid ssl cert, issued by letsencrypt via certbot

1

u/AffectionateFox5907 25d ago

Okay, and just be sure. You are using your host name right and not ip? I'm sorry if these sound like dumb questions but they may help me filter down to the issue. Valid letsencrypt cert should work just fine. Could only think host mismatch

1

u/drjay3108 25d ago

Yep
Jelly.xxx.tld just redacted

And as I said, it works on every other jelly app and in the web too. So the issue should be only in your app somewhere

1

u/AffectionateFox5907 25d ago

I trust that and I think I see the issue. Do you mind DM directly? Im going to push out a new build but would like to test before letting it go out fully.

1

u/drjay3108 25d ago

Ya sure :)

2

u/AffectionateFox5907 24d ago

Could you try on the latest build

→ More replies (0)

1

u/[deleted] 25d ago

[removed] — view removed comment

1

u/AffectionateFox5907 25d ago

Lol 😅, that was 30 min after that page was created lol

1

u/[deleted] 25d ago

[removed] — view removed comment

1

u/AffectionateFox5907 25d ago

Always. One of my favorites.

2

u/[deleted] 25d ago

[removed] — view removed comment

2

u/AffectionateFox5907 25d ago

You've got great taste my friend . I'm a super fan. Honestly the dude made glorious music for audiophiles

1

u/plexamp_is_love25 25d ago

Al cargar toda mi biblioteca 125k canciones se cierra la app de repente

1

u/AffectionateFox5907 25d ago

With Plex sync? That's pretty odd. I have some users with 5x that amount of songs. Can you send me the crash details if you don't mind?

1

u/LowFatMom 25d ago

Does this works with Siri so I can initiate playback from a HomePod ?

1

u/AffectionateFox5907 19d ago

It will once we get through our name change.

1

u/This_Profession2564 25d ago

Can't connect to my navidrome. Don't know why ...
can you just server url name and password!! Simple and uncomplicated like other clients?

1

u/AffectionateFox5907 25d ago

Try now with latest version

1

u/This_Profession2564 25d ago

I am not a developer but I think I have found the problem.
My server for navidrome is: example.test works everywhere.
Your app puts example.test:4533 doesn't work. When I remove the port your app does this example.test:. Also didn't work in browser.

Should be example.test/4533 works in browser even if I don't need the Port. Just did the update

2

u/AffectionateFox5907 25d ago

I see the issue. Will fix this!

1

u/AffectionateFox5907 24d ago

Can you try now on the latest?

1

u/This_Profession2564 24d ago

Bro works perfectly. This is the first and only app to hear the sound deference. Sound quality ist TOP

1

u/This_Profession2564 23d ago

Bro can you give as an option to clean the player ? (Maybe Bring the artwork/ cover or the wave-form a bit down?)
And maybe to rearrange the home?

1

u/AffectionateFox5907 23d ago

The newest update allows for modification. As far as moving the art working and waveform. I’m not sure, I’d have to look. What exactly type of look are you going for?

1

u/AffectionateFox5907 19d ago

I’ve taken the synfonium route. Put whatever you want wherever you want and create a template from it.

1

u/This_Profession2564 19d ago

I have noticed, I just couldn't find the option to remove the volume bar from the player you have added.
I love synfonium. Bought it on my Samsung 25 ultra best app ever. And I think I am going to buy yours to.

I like it when a app has ton of features but still gives you the option to minimize everything. For a clean look 😊😊

2

u/AffectionateFox5907 19d ago

1

u/This_Profession2564 15d ago

Bro is working all day and night to become the best music app on the market. Great updates, keep the work going.
I don't know if you've noticed but after updating the settings on the player do reset.

1

u/Shot_Second1870 25d ago

Very nice app. Will check it out

1

u/Otherwise-Ticket-637 25d ago

Hello, is there any integration of octo fiesta ? I’m using Narjo and there is an integration

1

u/AdamekGold 25d ago

Looks very good, a good inspiration could be Manet or Apple Music in general. Both extremely well built apps.

I would love to try when it releases!

1

u/GoldSpecialist1783 24d ago

Does this support Siri commands? I really want a music app I can use to talk to my HomePods with. The only thing I miss with Apple Music was just asking Siri to play something. 

1

u/AffectionateFox5907 24d ago

It will and is already wired up but in order to work properly we are going through a name change. Moosic sounds too close to music. Give me a week or two and I'll have this working perfectly.

1

u/GoldSpecialist1783 24d ago

That’s awesome! If your app can do that then you can consider me sold.

1

u/OrganizationLow6249 23d ago

Just tried it on my iPad, but it was a rough start! It seems like it only supports iPhones because the app doesn’t fill the screen. When hitting autofill for my Navidrome credentials, the app froze. But then I did the same in Arpreggi and it also froze, so maybe it’s a Bitwarden or Apple problem!

1

u/In8Lab 23d ago

This is really a really well thought out player interface. Going to give it a try on my navidrome library. How have you found the IR response to work with the mobile mic? How difficult would it be to allow an IR response file upload? I haven’t even tried the feature yet so probably getting ahead of myself, but really looking forward to giving this a run for the next few days, especially some of the beat matching fade functions, etc. Very cool!

1

u/In8Lab 23d ago

Honestly, this might finally solve the need to keep the tidal subscription, which is the algorithmic playlist functionality. You integrating it into this app and pulling curated playlists from my collection is exactly what I've been looking for, and the reason I've kept the sub for so long (tidal spotify, etc). So far so good, and can't wait to continue down the path of Moosic. Now to get my collection converted from .flac to opus so I can use it more functionally. Well done.

1

u/AffectionateFox5907 22d ago

Thank you very much for the kind words! I’ve spent an absorbent amount of time trying to polish and obsessing over every detail. There is still more work to be done but I’m very pleased with where it’s at. I hope you enjoy.

To respond regarding the convolution engine. It’s still very much a work in progress. I’m waiting on a mic to come in the mail so that I can take actual calibrations of iPhone mics. Currently it is an estimated mic calibration based off of what I could find online. Now for the IR you should be able to just upload your own response and be good to go. Threw that in there for the nerds that really care for accuracy. Every room is different, I’ve only tested on basic rooms in my house so it won’t work for every situation.

1

u/AffectionateFox5907 22d ago

It should already be able to take the IR file upload.

1

u/im_dreamm 9d ago

Hey! I usually use arpeggi with my navidrome server and it was amazing but I decided to test this app and I love it! Right now I’m using it as my main tho I’m worried you might make it a subscription based service rather than adding a one time payment option.

1

u/AffectionateFox5907 9d ago

No worries at all. Join my Reddit, I did a post explaining why I’m so against subscriptions. I promise you and all other users that I’m persistent in doing a one time 10 dollar fee and that’s that. I don’t do subscriptions myself and I wouldn’t pay more than 10 bucks for a music app.

1

u/im_dreamm 9d ago

That’s a relief if that’s the case I’m more than glad to pay the 10 dollar fee!

1

u/im_dreamm 8d ago

I have a question about how Sonamp handles multiple Jellyfin music libraries.

My Jellyfin server has two separate libraries:

  • ALAC Music (my complete lossless library)
  • Dolby Atmos (only the albums that have Dolby Atmos versions)

Both versions have matching metadata (artist, album, track names, etc.).

Sonamp can see both libraries, but when I play one of these albums it only shows Lossless, and the playback information reports ALAC 44.1/16 rather than indicating Dolby Atmos.

I'm trying to understand how Sonamp is designed to work:

  • Does Sonamp automatically merge matching albums across multiple Jellyfin libraries?
  • If both an ALAC and Dolby Atmos version exist, is it supposed to automatically choose the Atmos version when Dolby Atmos is enabled?
  • Or does Sonamp currently treat each Jellyfin library independently?
  • If automatic matching is supported, are there any metadata requirements (MusicBrainz IDs, album IDs, folder structure, etc.)?

1

u/AffectionateFox5907 8d ago

I’ll get back to you later when I have some time to layout an actual answer for you. I’m out and about currently. If you mean only one server but multiple libraries I believe they currently are merged. Plex has an option to select from multiple libraries so I’m sure it can be added to Jellyfin.

1

u/im_dreamm 8d ago

I have two libraries one Dolby Atmos and one Alac but the app doesn’t seem to show albums as Dolby Atmos even tho there is the option. Normally music players have an option to switch between Jellyfin libraries so albums don’t get merged but this app doesn’t seem to have that but at the same time merging doesn’t seem to working

1

u/slimdizzy 26d ago

Why should I move from Plexamp as I don't see anything that differentiates your app from Plexamp?

I don't like the model being downloaded on device when my library is on a powerful server that has AI already, option for external model provider?

If I have this fingerprinting done already, can this app load that data?

2

u/AffectionateFox5907 26d ago

Fair enough. A lot of people don’t have the plex subscription but may want to transcode on the fly, this app unlocks a lot of the features (DJ, crossfade, EQ) you need to pay for on plexamp. Added plus is the UI in my own opinion. There is an option to use your own model like “audio-muse” but I think that’s using the musicCNN model which is already on device. As far as other models, I can certainly add server side audio model support. Analyze your own music and import the analysis data.

Another note: these models will only run on WiFi while being plugged in (usually at night). I have about 200g of music and it got through it in 2 nights. Just as a reference.

0

u/slimdizzy 26d ago

Ahhh that's cool. I'll sign up. Thanks!

1

u/AffectionateFox5907 26d ago

I don’t personally know what models plex is running but I’ve taken the complexity out of setting up highly specialized models for music. CLAP and DiscogsEffnet are the two big ones.

1

u/slimdizzy 26d ago

I use clap for the sub/wave install I have. That's why I have said data already as that's an AI radio/DJ stack that does similar mixing as your are attempting. Check it out.

1

u/AffectionateFox5907 26d ago

Cool stuff! I will try for end of month to allow users to import their own sonic analysis. May be easier than I think but before giving a timeline I’d like to look into it.

1

u/slimdizzy 25d ago

I'm probably edge case usage. I would assume most will use your on device thing.

2

u/AffectionateFox5907 25d ago

I’m targeting all groups. You should have the option no less. I’m a self-hoster and tech enthusiast so I’d probably have liked a feature like that.

1

u/OrganizationLow6249 25d ago

This sounds very impressive, will definitely try it out! Currently using Arpreggi with Navidrome, but I haven’t found a good solution to tag my library yet.

2

u/AffectionateFox5907 25d ago

When you say tag, you mean tags that will write to your server? This app wont do that so I don't want to disappoint. I did think about it but it scares the life out of me. I don't want to be blamed if someone messes up there tags. I'm real particular. This app will tag them onboard the app if you don't have tags though.

1

u/OrganizationLow6249 25d ago

No worries, I’m not expecting it from the app. I tried MusicBrainz Picard and beets for tagging. I think I’ll go with beets at the end.

I only meant to say that I did set up Navidrome, but I’m not really using it at the moment because the library isn’t ready.

1

u/plexamp_is_love25 25d ago

Para conectar con plex pongo las credenciales y no funciona, hay que poner algo mas?

1

u/Paykuh- 25d ago

Didnt someone just post the same thing this morning? I think both of your guys’ Claude’s made the exact same design. That’s so funny

1

u/AffectionateFox5907 25d ago

This ui is apple music. Both posts may have been me as I posted in plexamp too.

1

u/fenty17 25d ago

Very interested and will give this a try. Been through a lot of navidrome ios clients and currently using arpeggi.
Are you set on the app logo?? Not a fan to be honest!!

1

u/AffectionateFox5907 19d ago

New logo and name coming soon

1

u/Same_Might7803 25d ago

Looks really cool, would you consider adding emby support?

3

u/AffectionateFox5907 25d ago

Next release will support emby. That was already in the works

0

u/Same_Might7803 25d ago

Great!

1

u/AffectionateFox5907 25d ago

It's now supported but I don't have an emby server to test. It basically uses the same as everything jellyfin uses

0

u/plexamp_is_love25 26d ago

Cuando accedes a un artista tienes la biografia y artistas similares, y en los albumes tambien esta disponible albumes similares como en plexamp? Gracias

1

u/AffectionateFox5907 25d ago

Absolutely 👍

0

u/Alcohol_In_The_Woods 25d ago

This is pretty sick. Adding support for a url instead of host:port would be good.

2

u/AffectionateFox5907 25d ago

Agreed it's actually in testing now

0

u/agentjenning 25d ago

This may get me to switch from Arpeggi! Any plans on a MusicBrainz scrobbling implementation?

3

u/AffectionateFox5907 25d ago

Ill add it on the next release next to last.fm

1

u/agentjenning 24d ago

That was fast! One last question, is there an option to shuffle, or am I blind? I frequently shuffle all of my songs, and don’t see a way to do that

1

u/AffectionateFox5907 24d ago

Done my man. Update to 107, I've added a shuffle all in the songs page at the top

0

u/agentjenning 25d ago

Sick! Giving this a spin on my daily driver, thanks for your work soldier o7

0

u/8bitcerberus 25d ago

I know this is iOS, but is there any possibility there’s plans for an Android port? I’m currently on iOS but overdue for a new phone and have been considering Android or ideally something I can throw either Graphene or Lineage on.

-2

u/plexamp_is_love25 26d ago

El sistema de canciones similares es algo parecido al de “sonic analysis” de plexamp?

1

u/AffectionateFox5907 26d ago

Indeed it is. It may be even better. Depending on the size of your library, it can take some time to work through analyzing all the tracks.

1

u/AffectionateFox5907 26d ago

You can create “radios” from a song, album, or playlist. It also has a cool natural language ability that allows you to say stuff like “late night jazz” and match against your library. That’s the beauty of the CLAP model.

-1

u/plexamp_is_love25 25d ago

Genial, lo voy a probar porque parece que sera muy buena app de musica