View Issue Details

IDProjectCategoryView StatusLast Update
0017885MMW 5Playbackpublic2024-07-31 17:47
Reporterlowlander Assigned To 
PriorityurgentSeverityfeatureReproducibilityalways
Status resolvedResolutionfixed 
Product Version5.0 
Target Version5.1Fixed in Version5.1 
Summary0017885: Allow users to change playback speed
DescriptionEspecially users that listen to Podcasts and Audiobooks find this feature useful.
Additional InformationTicket 1593
https://www.mediamonkey.com/forum/viewtopic.php?f=33&t=100842
TagsNo tags attached.
Fixed in build2834

Relationships

duplicate of 0015051 closedjiri Native (DSP) plug-in support (e.g. Pitch/Tempo Control) 

Activities

jiri

2024-02-02 11:25

administrator   ~0074182

Some thoughts re. UI:

1. Probably a button on the main Player makes most sense. It'd be where currently Shuffle and other buttons are and would be configurable the same way. The button would have a badge overlay showing the current speed (1x, 1.25x, ...)

2. Other places where to make this functionality accessible? Pop-up menu down on the Player seems to be a good idea? Main menu too? This would be particularly useful when the user wants to have the Player button disabled.

3. Persistence. It would possibly make sense to persist different values across collections, e.g. 1x for Music, 1.25x for ABs and 1.5x for Podcasts. I suppose that users might even want to keep the values different per Podcast or Audiobook, but that'd be too complex and could be left for an Addon in the future?

4. Continuity. Technically, we can offer a slider and let the user select any speed value. However, such a granularity might be too much and predefined values would possibly be better. Or to have predefined buttons for common values (1x, 1.25x, ...) and a slider below that'd let the user select the exact value? Note that this would be in a pop-up window, not directly on the Player, there'd be only a button to open such a pop-up window.

5. Pitch. Michal's implementation also allows to adjust pitch. Seems to be useful, e.g. if you don't like the voice in an audiobook. I suppose that we'd have this below the audio speed UI, like a slider for +/-8 or 10 semitones?

peke

2024-02-02 13:04

developer   ~0074184

Last edited: 2024-02-02 20:45

1. Button on player would be nice, as for UI, I am not sure if toast Overlay can support two slides. One for tempo (Ratio Range 0.1 -> 10.0 I asked my daughter and she thinks Ratio is the best as that we use for hers instrumentals/accompaniment when she practice violin where we start) and one for Pitch like Jiri pointed (Sample video supplied)

2. Not a priority main issue should be 3. in playback rules so that user can set it for Type as persistent change and 1. in player for currently playing track (till track change). All others TBD after we make changes/settings stable.

3. Fastest Implementation would be in Playback Rules.

4. Precision can be seen in Sample video.

5. Semitones are ok and it is widely used, Usually it should be locked and preserved during Tempo change.

Ludek

2024-02-02 16:19

developer   ~0074185

3. I also think that
Options > Player > Playback rules
is the right place for the settings

lowlander

2024-02-02 16:37

developer   ~0074186

Last edited: 2024-02-02 17:24

I disagree

A. It should be a button on the Player (like Shuffle) which pops up/expands into a slider or menu with fixed options (with option to show/hide under Tools > Options > Player. I'd prefer a slider here for precise control for user. Maybe with arrow key step control, and step indicators.
- Hover would slow slider.
- Click would enable/disable Speed adjustment (so that user can leave setting in place).
- An extra option could be that the user could enable a button, or a slider for both speed and pitch in the Player (a slider on the player would accommodate those that to wish to control this per file).

B. Entry in Play in Main Menu with fixed options (an additional custom option could use slider (use one in Player?) too).

C. Hotkeys with increase/decrease speed by fixed step.

D. Playback Rules could have an override option (like Ignore shuffle) with value setting so users can set to have Podcasts/Audiobooks to override speed, while not affecting Music Playback speed.

E. Pitch should be tied to Speed, while also allowing independent use. Maybe single button in Player opens both controls. Clicking Player button turns both on/off. The idea here is that a user would likely have some predetermined pitch/speed preference for playing audiobooks/podcasts, but we should still give users the flexibility to control them independently.

peke

2024-02-02 20:51

developer   ~0074190

@lowlander
I agree with your observation at 0017885:0074186 but as @Jiri pointed offline it mostly works and first integration should be focused on functionality. I for example Always want Pitch locked (Matched 100%) while i change Tempo as that preserves Intonation, especially on music and Audio books where it preserves tone and voice color but increase tempo an dreading speed.

API implementation would be crucial in that case as there is many algorithms to archive most things like in sample video.

peke

2024-02-02 21:16

developer   ~0074192

Last edited: 2024-02-06 02:01

NOTE: For Speed I find range 0.800 and 1.25 most useful. also note that slowdown scale differences.

rusty

2024-02-02 21:39

administrator   ~0074193

I've tried to incorporate all the feedback/my thoughts below:

1. Agreed. The button should:
a) Be configurable
. i) It could be enabled globally like other such buttons (Layout > Player > Controls : Adjust speed)
. ii) But ideally, it would ideally be enabled only for specific Types since since most users will not want this for anything but Podcasts, Audiobooks and other Spoken-word audio Collections (Player > Playback rules: Show 'Adjust speed' button), If we implement this, then:
- there chould be a shortcut from Layout > Player > Controls e.g. a hyperlink for _Show 'Adjust speed' button_
- we'd have to be wary of the player buttons moving around when playback switches between e.g. Audiobooks and Music. If jumpiness in the Player UI is unavoidable with this approach, then we may have to avoid it.

b) Display the current speed
. i) Within the icon/indicator if it's enabled
. ii) Overlaid on the Playback button if it's not enabled
. iii) In the menus in which it appears (see item 2)

c) If tapped, it can work like YouTube and show a dropdown OR like some other audio players, show a dialog. A dropdown may not be the best option for a couple of reasons:
- a simple dropdown e.g. allow to select between [ .8, 1, 1.25, 1.5, 1.75, 2] doesn't facilitate the fine-grained control that's often needed when using this function
- although a simple dropdown allows the user to quickly choose from among common settings, it doesn't allow setting speeds to persist once the speed is set to 1 (e.g. if I'm listening to a Podcast X in a quiet environment, 1.5x would be a good setting, but the user may want to disable it temporarily when going to a noisy environment e.g. shower). A more complex dropdown (that has both a checkbox to enable/disable + common settings) could address this, but would also require a dialog. e.g.
[ ] Adjust speed (Podcasts) [Configure icon]
 . .8
 . 1.25
 ✓ 1.5
 . 1.75
BUT the above is a rather complex UI (because multiple clicks would be required if MM is to maintain a separation between state and speed)

And so I think that the simplest/best option as Martin suggested: to open a popup or dialog along the following lines:

[x] Adjust speed (Type: currently playing Type)
[1.2] [1.5] [2.0] (optional: buttons of the most recently used playback speeds to quickly choose a speed)
<----------|------------>
. . . . . . .1.3 . .. . . . . . .
(note: range .5 to 3)

This allows for fine-grained control. And because the On/off state is separate from the speed setting, speed settings can persist. Note also that in the above UI, the speed setting is only configured and persisted for the currently playing Type. This eliminates the need for Playback Rule settings and overrides suggested by Martin at D.) It also provides a UI that could work for Per Podcast or Per Audiobook settings should it become a requirement in the future.

2)A) Agreed (that there should be menu entries in the Player context menu and Play menu), but I disagree with using the dropdown for the same reasons described in 1c). Suggested approach would be an entry adjacent to 'Equalizer...' for 'Adjust speed...'. OR better yet, a small improvement would be:
[ ] Equalizer [config icon]
[x] Adjust speed... (Podcasts: 1.5) [config icon]

(note: the same UI approach should be used for both the Equalizer and the Speed adjuster).

C) (Martin's comment) Good idea about including hotkeys for this.

3) My experience is that playback speed often requires adjustment depending on _which_ audiobook / podcast / comedy routine is being listened to so I don't think it makes sense to configure defaults by Type in Playback rules. Rather, MM should just persist the _last used_ playback speed by Type. To illustrate:
- if a music track plays with speed adjustment off --> the next music track plays with speed adjustment off
- if a Podcast track then plays and the user sets the speed to 1.2x --> the next time a podcast plays the speed will be 1.2x
- if a music track then plays --> the speed adjustment will be off
- If a podcast then plays --> the speed adjustment will be 1.2
- if another podcast plays and the user turns off Speed adjustment --> the next time a podcast plays, the speed will be 1.0, but the last-used speed of 1.2 will remain configured so that if the user enables it for podcasts that is the speed that will be used.

4) Continuity: already discussed at 1c

5) Pitch: I don't think that this is needed at all. i.e. whatever speed the user selects, the algorithm should maintain the original pitch.

jiri

2024-02-05 17:23

administrator   ~0074202

Generally speaking sounds good, I just think that 5) might be useful. Discussed with Michal, will implement as suggested and let's review then whether there are any changes needed.

michal

2024-02-05 18:02

developer   ~0074203

5) changing pitch is needed anyway (change tempo = change speed and compensate pitch to original level), so why not to offer the user a pitch adjustment too (relative to original level, independent of tempo)

michal

2024-02-09 09:55

developer   ~0074225

Nearly fixed in build 2834. Please look at it, test and check strings.
Hotkeys are not implemented yet, as I am not sure about correct behavior, as we have speed/pitch settings bound to "Enable" checkbox, i.e. what to do if user plays Music, has speed/pitch change disabled for Music, and presses e.g. "Speed up". I can force change to "enabled" for type Music in such case, so speed change can be heard, but I am not sure. Consider situation - type Music has Speed set to 2, but is disabled. User plays Music, it plays with speed 1 (speed change is disabled). Now user presses "Speed up", in case we enable speed change now and increase speed by 0.1, it will play suddenly with speed 2.1x, not 1.1x, as maybe expected, because type Music had original speed 2 saved.

jiri

2024-02-09 12:17

administrator   ~0074226

10) For me the most important issue to not display the configuration as a dialog, but only as a pop-up right above the clicked button. This way it'll be much faster and easier to show/hide/configure.
11) Minor issue re. icon, which doesn't seem to be the best fit. I haven't found much better, but I think that a text shown in icon style looks fairly good there (see the attached screenshot).

Apart from this, works very well!

jiri

2024-02-09 12:18

administrator   ~0074227

Last edited: 2024-02-09 12:19

css used:
    text-align: center;
    font-size: 23px;
    letter-spacing: -3px;
    white-space: nowrap;
    margin-bottom: -3px;
    margin-right: 6px;

michal

2024-02-09 12:24

developer   ~0074228

Last edited: 2024-02-09 14:28

Not sure about the text - there is quite significant change in width of text "1x" and "2.85x", it could be quite challenging to make it to look good in all skins. Also wider text may not fit there already in some more condensed skins. And for me personally having only text between icons is somehow strange.

jiri

2024-02-09 14:26

administrator   ~0074230

Note that I was inspired by the original Material UI icons (1x), so a simple text as an icon isn't that weird. See attached icons, maybe the second version (without 'X' character) would be even a better fit. Possibly '1x' when off and '1.2' and similar numbers rounded to 1 decimal digit when it's on.

michal

2024-02-09 14:30

developer   ~0074231

We have currently step 0.05 for speed (to allow e.g. typical speed 1.25). It would show the same value for 1.85x and 1.9x then, it would look like error.

rusty

2024-02-16 08:03

administrator   ~0074280

fyi, there's a focus problem with the dialog:
0 Open an app on top of MM
1 Tap MM on the taskbar to bring it to front
2 Play an audiobook track
3 Right-click on the player and Enable the speed adjustment and move the speed bar'
4 tap 'Close'
--> MM moves to the background!

michal

2024-02-16 08:10

developer   ~0074281

Strings adjusted.
Assigning to Petr to look at the focus problem (common to all modal dialogs with any closequery event handler)

lowlander

2024-07-31 17:41

developer   ~0076501

Quick note, Adjust speed is currently the only configurable option from the Main Menu that opens it's own window, instead of Options. It would be consistent to have this setting accessible through Options.
The above mentioned per Type settings in Playback Rules is likely the best option. This would allow users to set this per Type as they likely have different needs per Type.