Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Playlists #36

Closed
OxygenCobalt opened this issue Aug 10, 2021 · 54 comments
Closed

Playlists #36

OxygenCobalt opened this issue Aug 10, 2021 · 54 comments
Assignees
Labels
complex This is a complex addition that will take some time enhancement New feature or request music Related to music loading

Comments

@OxygenCobalt
Copy link
Owner

OxygenCobalt commented Aug 10, 2021

The current plan for playlists is a self-contained database with optional M4A exporting.

Auxio's playlist implementation will have:

  • A built-in liked songs playlist
  • Custom user-defined playlists

Last added/top tracks don't benefit my usage, so they will be omitted.

The biggest hold-up with this feature is the sheer technical difficulty of it. Playlisting is far more complicated than it seems internally, especially when you want a bug-free implementation.

@KraXen72
Copy link

KraXen72 commented Mar 5, 2022

this would be great, +1.
also please ability to import from m3u (and possibly a button to refresh the playlist if the m3u file changes)

@OxygenCobalt
Copy link
Owner Author

also please ability to import from m3u (and possibly a button to refresh the playlist if the m3u file changes)

This will be added, however the flow with importing m3u files yet is not certain.

@OxygenCobalt OxygenCobalt added the music Related to music loading label Mar 8, 2022
@ludificorpayne
Copy link

I didn't know where to post feedback but this app is fantastic, really the only reason I can't use it is because of playlists. once that's added this will be the best music app. looking forward to it!

@OxygenCobalt
Copy link
Owner Author

Glad you like the app @ludificorpayne, this feature is still a ways away though. I want to make the current music experience as good as possible before I go ahead with such a complex addition. Rushing a half-baked playlist feature just to be like Phonograph/Retro/Vanilla just isn't right.

@kendfss
Copy link

kendfss commented Apr 2, 2022

Custom user-defined playlists

Could you elaborate on this?
Would creating playlists only allow for adding tracks one by one/by the id3 groups (album, artist, genre), or would we be able to define filters?

A built-in liked songs playlist

So we would be "liking" songs in the app, would it be implemented with a bool, or a star system?

@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented Apr 2, 2022

Would creating playlists only allow for adding tracks one by one/by the id3 groups (album, artist, genre), or would we be able to define filters?

The former, not the latter. I have no idea how a filter-based addition system would work.

So we would be "liking" songs in the app, would it be implemented with a bool, or a star system?

More like a playlist of songs that you "liked" in-app.

@kendfss
Copy link

kendfss commented Apr 3, 2022

filter-based addition system

In players like iTunes, and some versions of Foobar2000 the user can specify a database query whose results are saved as a playlist and updated automatically as the library evolves over time.
So you could have a playlist for "liked" or "liked and less than 6 months old" or "unliked and less than six months old" or "jazz or rock but nothing by Pink Floyd" etc.

In iTunes they were called "Smart Playlists".

@KraXen72
Copy link

KraXen72 commented Apr 3, 2022

this would be extremly cool but i imagine also technically really complex and pain to implement. i would be 100% for it tho.

@kendfss
Copy link

kendfss commented Apr 4, 2022

The older version is somewhat less challenging to implement/optimize/maintain and often enough because you can create one playlist that is the union/intersection/disjunction of others.
old version

for comparison, the newer version:
new version

I don't remember using it too well but I think the core idea from the newer one is either that you can query query-results, create parallel queries for a single playlist, or both.
I've been sketching something out in go (I don't know Kotlin, yet). I'll translate if it's approved. I wrote it with respect to MySQL. Was there a settlement on a particular database technology since OP?

@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented Apr 4, 2022

Was there a settlement on a particular database technology since OP?

I was always going to go for SQLite, which is standard for android. While technically it's better to use Room, I've found that it increases compile times by ~3 times and has this weird issue where old database items are never removed, so I just use the more verbose method.

Thanks for the images by the way. Something like this would be an extremely far off feature however. I'd imagine that implementing the built-in Liked Songs playlist would allow me to at least have a framework for query-based playlists, however I feel like exposing it in the UI would be the largest problem, as it requires a ton of options and is probably really hard to cram intp a phone screen.

If I were to guess what my roadmap is for Auxio right now, it would be something like:

  1. Internal technical reworks and automatic re-scanning (The latter especially since I don't want to add new features with that assumption anymore)
  2. All the other backlogged features that are held up by 1 (ex. Artist Images)
  3. Normal playlists
  4. Weird end-game features like this or a new metadata engine

@OxygenCobalt OxygenCobalt mentioned this issue Jun 23, 2022
3 tasks
@OxygenCobalt OxygenCobalt added the complex This is a complex addition that will take some time label Jul 23, 2022
@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented Jul 27, 2022

I am very sorry this feature is taking very long to implement. It's easily one of the most technically challenging systems I've worked on, and I don't want to deliver a half-baked implementation for the sake of implementing playlists quickly. I don't really have an ETA on when I'll implement it.

@KraXen72
Copy link

by me, take your time. I see there are a lot more technical things that have to be tackled for auxio to have a solid playback experience. I am ok to wait for this feature, because i know once it does come out it will already be solid and usable.
Thanks for your great work on auxio so far!

@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented Aug 4, 2022

Okay, I had the realization that much of the technical complexity of playists comes from liked songs, and not from playlists themselves. This is because liked songs are sort of a hybrid between library attributes and playlists, and I need to find a way I can implement them without really bad efficiency issues. I think I'll try to deliver a MVP of playlists first and then push liked songs further into the future.

@KraXen72
Copy link

KraXen72 commented Aug 5, 2022

very nice! i'd like if playlists had in mind the m3u workflow (importing and refreshing from .m3u and .m3u8 files) from the start, rather than be an afterthought.
not saying you should add it as the first thing, but if you could just keep it in mind when making the playlist system so it is easily extended to support this functionality in the future, that would be really good!!
thanks in advance.

@OxygenCobalt
Copy link
Owner Author

Yeah, M3U import and export will be implemented, but playlists themselves won't be backed by M3U instances. This is because google has deprecated the MediaStore column for M3U, so I really don't want to use it (It's also quite buggy AFAIK).

@KraXen72
Copy link

KraXen72 commented Aug 5, 2022

good good. well i didn't quite mean "backed up" as in constatnly synced to the m3u files, but if you could just remember where the m3u file was located in storage, and give the user an option to "refresh" the playlist by internally re-importing it.
this would be useful because when i sync up my music and playlists from my pc (playlists are generated there through my tagger app), normally i'd have to delete and re-import all the playlists manually. this would make the whole process significantly easier.

again, this is not a feature that needs to come from the start with playlists, just something to keep in mind so as to not be impossible to add once the whole system is implemented.

@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented Aug 5, 2022

That requires the playlists database, which is deprecated. Besides, I really don't want to back playlists with someone as unstable and spec-dependent as a M3U file. An internal database with import and export is much easier to implement without android screeching at me.

@KraXen72
Copy link

KraXen72 commented Aug 5, 2022

how do you mean? can't you just make a button that does the filesystem call to read and parse the m3u file again, overwriting the current playlist? basically just same as the import but without the need of selecting the path (to save time & also because you already have the path from first import)

you do not have to sync up or do whatever with the playlist after, the whole point is so "refreshing" a playlists (or multiple) doesent take extremly long

@OxygenCobalt
Copy link
Owner Author

Oh, okay. That makes more sense. That was already what I was planning from my playlist system.

@OxygenCobalt OxygenCobalt self-assigned this Aug 27, 2022
@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented Aug 31, 2022

I think the last blocker for this should be #202. Playlists must use Auxio IDs, but the ID system really needs to be reworked to become more formalized, backwards-compatible, and reliable. Adding support for MusicBrainz IDs in particular will allow users to avoid a behavior where changing a song's metadata causes Auxio to "forget" it, which would be terrible for playlist functionality.

@Offerel
Copy link

Offerel commented Apr 2, 2023

I have tested the debug apk as of today and could see a playlist. Where do the content of the playlist come from? I only ask, because I have exported a m3u file from within Strawberry on Linux with 600 songs and relative paths. Most other media players can use this playlist and I have all 600 songs in the specified sorting. I think Auxio don't use this as of now, since the current implementation use some internal playlist and I see only 43 files in the implementation.

If my wish will be supported in a later version, im fine with that. Also any other format with relative paths is welcome, as long as Strawberry can create it. I will keep an eye on this feature.

@OxygenCobalt
Copy link
Owner Author

I've only implemented playlists in the UI, everything else currently is "junk" data for testing. I will be busy for the next month and a half and will likely be unable to work further on playlists until then.

@KraXen72
Copy link

KraXen72 commented Apr 2, 2023

atleast you can see how happy people are about this feature coming to the app 😁😁

@Offerel
Copy link

Offerel commented Apr 2, 2023

Yes, its the only feature i really miss. Away from that, this is by far the best player, including commercial players.

@madenerrgy
Copy link

Screenshot_20230320-170808_Auxio_Debug_1

Wow, this looks amazing! We're really wait your update with playlist creation.

I would like to take this opportunity to thank you so much for your efforts on this app! It's made with taste and without unnecessary garbage (like other apps). Strength and health to you, dude!

@projjalm
Copy link
Contributor

projjalm commented Apr 22, 2023

So happy to see progress in this. I really can't express my respect to Alex for spending time on this ever missing feature besides every other thing in his life. Wishing great success to you, brother. ❤️

@PranavBhattarai
Copy link

Came here to comment on playlist, which I saw missing. Hope in 2023 this feature comes into action.

Love the project. Thank you.

@OxygenCobalt
Copy link
Owner Author

output.mp4

@ildar
Copy link

ildar commented May 13, 2023 via email

@OxygenCobalt
Copy link
Owner Author

The latest CI build should have this functionality @ildar. It's just missing playlist editing, persistence, and has a ton of rough edges.

@ildar
Copy link

ildar commented May 14, 2023 via email

@OxygenCobalt
Copy link
Owner Author

All of that is planned before release @ildar. My hope is that I'll be able to trivially port the queue editing system to the playlist view and implement song deletion and re-ordering in parallel.

@OxygenCobalt
Copy link
Owner Author

All fundamental playlist editing is now done.

output.mp4

Remaining work is now polishing the existing implementation. Song editing in particular should look a lot better in final release.

This was referenced May 21, 2023
@OxygenCobalt
Copy link
Owner Author

OxygenCobalt commented May 21, 2023

Playlists are now done. Download Auxio_Canary.zip to access the functionality early and bugtest it. Note that it is a debug build, so it will be noticeably more sluggish than normal. This will not be present in release.

Note that the initial playlist release does not include the following:

Additionally: Please refer to the bug report process if you find an issue. Simply saying there's a crash is not enough to help me fix issues.

A 3.1.0 release is expected soon as I can do some minor fixes/changes.

@foss- @ildar @KraXen72 @Donkey-Doug @amalka-ari @jethi @illdeletethis @madenerrgy @projjalm @PranavBhattarai

@madenerrgy
Copy link

madenerrgy commented May 21, 2023

https://bin.kv2.dev/~6469b4bee599576ea02c75e3

Latest CI sometimes crashes when I'm adding track to the playlist.
Maybe this logs will help somehow.

But overall everything works great!

2_5427290571246939666.mp4

@OxygenCobalt
Copy link
Owner Author

New APK, hopefully with the fixes for @madenerrgy's bug.

Auxio_Canary.zip

@madenerrgy
Copy link

madenerrgy commented May 21, 2023

New APK, hopefully with the fixes for @madenerrgy's bug.

Auxio_Canary.zip

Oh, thank you so much pro!
This problem has indeed disappeared.

It only remains to work on the friezes when opening and animation ..

2_5427290571246940382.mp4

@OxygenCobalt
Copy link
Owner Author

It only remains to work on the friezes when opening and animation ..

The former is because of the debug build slowing down the amount of layouts. I do agree more animation for playlist editing would be good, but I'm holding on that until I can nail a good framework for that (Eye candy is frustratingly buggy on android). Expect that in a 3.2.0 release, which I'm planning to have a bunch of mild UX improvements. @madenerrgy

@madenerrgy
Copy link

madenerrgy commented May 21, 2023

Got it, thanks for your efforts :)

@KraXen72
Copy link

im missing the functionality to quickly add new songs from a newly created playlist. i understand the intended workflow is that you search for a song and add it from there, however, it's unintuitive to be left with a blank screen after creating a new playlist.

@illdeletethis
Copy link

Found a weird quirk in the debug build, changing tab order changes the order of the tab symbols, but not the tabs themselves
Screenshot_20230522-121221_Auxio Debug

@OxygenCobalt
Copy link
Owner Author

im missing the functionality to quickly add new songs from a newly created playlist. i understand the intended workflow is that you search for a song and add it from there, however, it's unintuitive to be left with a blank screen after creating a new playlist.

That's one of the features I'm leaving for another release, honestly @KraXen72. Far too easy to mess up.

Found a weird quirk in the debug build, changing tab order changes the order of the tab symbols, but not the tabs themselves

That should not be happening @illdeletethis, and I can't reproduce it in the release build. Does it persist after completely force stopping and starting the app?

@illdeletethis
Copy link

yes, force stop fixed it 🙂
anyways, thank you very much for the playlist feature.
now just looking forward to reordering and queue to playlist button

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
complex This is a complex addition that will take some time enhancement New feature or request music Related to music loading
Projects
None yet
Development

No branches or pull requests