OxygenCobalt / Auxio

A simple, rational music player for android
GNU General Public License v3.0
1.78k stars 117 forks source link

Cuesheet support #762

Open serrq opened 3 weeks ago

serrq commented 3 weeks ago

Recently I downloaded full concert (approximately 2 h 30 min) in one only tracks.

I noticed that moving the playing cursor isn't precise and very difficult to skip between songs in a same tracks.

So I ask enabling bookmarks (creation and their use) during the track's playing.

OxygenCobalt commented 3 weeks ago

This sounds like cuesheets is basically what you want. They are files that outline a way of splitting up a huge audio file into several song entries.

I've rejected this earlier since it was basically impossible in Auxio's architecture, but ever since I added gapless playback support and assuming #322, this actually could become feasible.

serrq commented 3 weeks ago

My audio file is .opus. Is also possible with it?

OxygenCobalt commented 3 weeks ago

Yes, cuesheets are a file that points towards one huge audio file (of any type) followed a bunch of timestamp ranges that act as the "Songs".

Auxio would read the cuesheet, find the corresponding audio file, then create "Songs" based on those entries that would in practice open up the huge audio file and just seek to the specific region specified in the cuesheet file. You could then play that huge audio file as if it was just an album.

serrq commented 3 weeks ago

How I say to the app where the songs are? Timestamps I mean.

Sorry I am not native English and not a developer.

OxygenCobalt commented 3 weeks ago

You specify it in the cuesheet file. Auxio does not support them yet though, so you will have to wait.

Here's a wikipedia article with more info on what they are: https://en.wikipedia.org/wiki/Cue_sheet_(computing)

An example file from the article:

REM GENRE [Electronica](https://en.wikipedia.org/wiki/Electronica)
REM DATE 1998
PERFORMER "Faithless"
TITLE "Live in Berlin"
FILE "Faithless - Live in Berlin.mp3" MP3
  TRACK 01 AUDIO
    TITLE "Reverence"
    PERFORMER "Faithless"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "She's My Baby"
    PERFORMER "Faithless"
    INDEX 01 06:42:

This would specify a track called "Reverence" that starts at 0:00 and ends at 6:42, and then another track called "She's My Baby" that starts at 6:42 and continues until the end of the audio file. This is how you would tell the app where the songs are.

serrq commented 3 weeks ago

Mmm too much complicated. My idea was just tap a button to make a bookmark and edit it.

OxygenCobalt commented 3 weeks ago

A button like that would:

  1. Not be useful to most users. Most people who listen to long concerts either split their files manually in an audio editor or use cuesheets. I believe there are programs that generate cuesheet files easily as well.
  2. Would clutter the UI to an extreme extent. The playback UI has basically no semantic space to add any more elements. This is also a huge reason why I don't add things like lyrics, there's just nowhere to put it.

In general, I would rather work on a more general feature that accomplishes this use-case among many others rather than a very narrow feature that only accomplishes what you specifically want at the cost of a bunch clunkier and confusing experience.

Why are these features missing? outlines my logic behind this in more detail.