Nightingale Forums

Full Version: Implementing issue #99
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
The purpose of this post it to simply keep the users and fellow developers on the status of this as I try to implement it. The main post will always be up to date. I encourage you to correct me if I improperly refer to something by the wrong name, or anything else that I say that does not make sense.

Github: Issue #99 (Pause after this track)

Implementation concept(s)

Show the "pause after this track" playlist command inside of the mediaitem context menu/mediaitem menu. Also freaktechnik suggested that we add it inside of the context menu for the play button. For example, when the user triggers the "pause after this track" from the mediaitem context menu:

Code:
If a song is playing
   get the songID, when the song is done playing, call the pause command
else
   get the songID, play the song, when the song is done playing, call the pause
   command

Inside of the pause button context menu, it would just grab the songID and when the song is done playing it will pause the track.

Option 2 (Just another idea that is a lot more conceptual.)

Create an on/off flag for " pause after this track or not. " As ngale goes through the sequencer, or what ever ngale does when a song is done playing. Just insert something that checks the flag status, if true, it would just pause the song. Instead of repeating/shuffling or loading the next track.

The big question is where should this be implemented? Should it be in a script, a component, or integrated in the sequencer? (credit to freaktechnik for pointing this out to me)

Thanks for any help!

-Luis
(01-08-2014, 10:13 AM)luisgmarine Wrote: [ -> ]The big question is where should this be implemented? Should it be in a script, a component, or integrated in the sequencer?

If we decide to hold this feature in the core, I'd go for the sequencer. If you want to do it from an add-on, you should listen for the track changing and stop then.

For a central core feature like that I'd first like to hear your idea of the UI change (how to implement it on the user side), before discussing the actual implementation. Imho we risk the user experience when implementing such a central feature without first looking at the user's point of view.

I have no idea of clementine, so if they found a great way to do it which applies to us: go for an implementation suiting that UI concept (thus, if it is a state to the user, implement it as a state; if it is a parameter of the file implement it as tag; if it is a parameter of the current playback sequence update that, etc.).
My proposal is to by default expose it in the context menu of a track and of the pause button.
The context menu item for the track would be something along the lines of "Play and Stop after the track", while the pause button's item would be "Stop after the Track is done".
Yes, there might be tighter wordings for that.
(01-08-2014, 10:51 PM)freaktechnik Wrote: [ -> ]My proposal is to by default expose it in the context menu of a track and of the pause button.

For the pause button's items there should be at most two or three words, as other stuff would look terrible imho; so I agree that we should think about the exact phrase.

The other method I was thinking about is adding a new sequencer state (current ones are normal, repeat all, repeat one) for "stop after one" (kind of the repeat one without repeating logically).

I haven't thought about which option is better to be honest, both have some advantages. And maybe someone comes up with a third idea?
(01-08-2014, 11:36 AM)rsjtdrjgfuzkfg Wrote: [ -> ]I have no idea of clementine, so if they found a great way to do it which applies to us: go for an implementation suiting that UI concept (thus, if it is a state to the user, implement it as a state; if it is a parameter of the file implement it as tag; if it is a parameter of the current playback sequence update that, etc.).

I have to sit down and go through Clementines code and figure out how they are implementing it on their side as far as if it is something tied to their playback sequence, file tag, or a state to the user. Then again, what exactly constitutes a user state? Is it something like when the user hits play/pause, or pretty much interacts (clicking/dragging'typing) with nightingale?

(01-08-2014, 10:51 PM)freaktechnik Wrote: [ -> ]My proposal is to by default expose it in the context menu of a track and of the pause button.

(01-09-2014, 03:46 AM)rsjtdrjgfuzkfg Wrote: [ -> ]For the pause button's items there should be at most two or three words, as other stuff would look terrible imho; so I agree that we should think about the exact phrase.

I agree 100% : I can suggest, "Pause after play", "Pause after track", "Pause after song" ... for two words it gets tad bit harder. How about "Pause after?" That would assume the user knows that the "Pause after" is reffering to "Pause after current track is done playing."

(01-08-2014, 10:51 PM)freaktechnik Wrote: [ -> ]The context menu item for the track would be something along the lines of "Play and Stop after the track" ...

Clementine currently has "Stop after this track." I would personally change it to "Pause after this track." Nothing fancy, just short and sweet to the point.

(01-09-2014, 03:46 AM)rsjtdrjgfuzkfg Wrote: [ -> ]The other method I was thinking about is adding a new sequencer state (current ones are normal, repeat all, repeat one) for "stop after one" (kind of the repeat one without repeating logically).

I like this method. Idea.
(01-09-2014, 07:17 AM)luisgmarine Wrote: [ -> ]I have to sit down and go through Clementines code and figure out how they are implementing it on their side as far as if it is something tied to their playback sequence, file tag, or a state to the user. Then again, what exactly constitutes a user state? Is it something like when the user hits play/pause, or pretty much interacts (clicking/dragging'typing) with nightingale?
My concern here is that clementine's architecture might be differnt to ours, so their implementation might not show us a path.

I personally think this is a property of the playback sequence.

Quote:Clementine currently has "Stop after this track." I would personally change it to "Pause after this track." Nothing fancy, just short and sweet to the point.
Stop means the playback queue is emptied an the faceplate gets cleared, but I agree, pausing is the better option (and is also what the issue says).

Quote:
(01-09-2014, 03:46 AM)rsjtdrjgfuzkfg Wrote: [ -> ]The other method I was thinking about is adding a new sequencer state (current ones are normal, repeat all, repeat one) for "stop after one" (kind of the repeat one without repeating logically).

I like this method. Idea.

So a third toggle or a new thing to toggle through in the repeat button? Also what icon would you give it?
(01-09-2014, 08:46 AM)freaktechnik Wrote: [ -> ]So a third toggle or a new thing to toggle through in the repeat button? Also what icon would you give it?

A new thing to toggle through, something like an arrow towards the stop square or something.
(01-09-2014, 11:06 AM)rsjtdrjgfuzkfg Wrote: [ -> ]
(01-09-2014, 08:46 AM)freaktechnik Wrote: [ -> ]So a third toggle or a new thing to toggle through in the repeat button? Also what icon would you give it?

A new thing to toggle through, something like an arrow towards the stop square or something.

That sounds fine. I'd add a little 1 badge to the arrow, like the "repeat this track until I am sick of it" mode has.

The main issue I see with this apporach is, what happens after playback has been paused? The sequencer state should change back to what it was before. But due to it being a toggle thrrough the last detected sequencer state will always be the same.
(01-14-2014, 12:25 AM)freaktechnik Wrote: [ -> ]The main issue I see with this apporach is, what happens after playback has been paused? The sequencer state should change back to what it was before. But due to it being a toggle thrrough the last detected sequencer state will always be the same.

This depends on what you think the users want. I could think of people wanting to just hear a song until it is over by default (without playlists). That's why I think both approaches have advantages and disadvantages, and I can't quite decide on a "better" way.
(01-14-2014, 08:57 AM)rsjtdrjgfuzkfg Wrote: [ -> ]
(01-14-2014, 12:25 AM)freaktechnik Wrote: [ -> ]The main issue I see with this apporach is, what happens after playback has been paused? The sequencer state should change back to what it was before. But due to it being a toggle thrrough the last detected sequencer state will always be the same.

This depends on what you think the users want. I could think of people wanting to just hear a song until it is over by default (without playlists). That's why I think both approaches have advantages and disadvantages, and I can't quite decide on a "better" way.

When I opened the issue I had the use-case of "I'll listen to this song and then do xyz" in mind, as that's something I whish I could do.
I'm not too sure if there are people listening track after track, always selecting again, that's waht the now playing list is for.
Pages: 1 2