[Android] [Feature requests, many] Playback speed additional ideas / features / UI and UX ideas, not a programmer

Tim Catfish catfish-Tim at hotmail.com
Thu Apr 25 23:05:15 UTC 2024


Hello

This is my first time posting in this mailing list and I thought it would be the quickest way to contact the developers for more than a half dozen ideas to improve the playback speed feature.  I do not know any computer programming at all, but, I have downloaded the source from github, extracted, and renamed several .kt files and added .txt to look through them.  After pouring over the files for a few hours, I have concluded that I am only able to currently understand how to implement two of my many, many ideas.  This is more of a "nice to have" feature set request, but would greatly expand the usability and customization of the playback speed graphical interface, and add many new features.  If this is too non-technical, please explain where to submit this elsewhere.  When I tried to join your forums, the cloudflare security check was unable to load, due to my misconfigured Android Fennec javascript memory allocations (slightly too low) and after upping the settings just enough so pages don't freeze my device, the pass has been cleared more than once, but I am still banned at the public IP level, last I checked, so I'm posting here.  I hope this is appropriate placement for such a discussion.

For first run welcome screen, make A HUGE deal about playback speed, and multiple steps.  I think it is already explained how to access the menu for the equalizer and all that, so let's add another HUGE feature highlight for playback speed, and make it difficult to quickly skip.

I would even more like to also see an even more noticable note about timestretch and here is why:

Faster speeds work great, but anything below normal gives a very robotic sound.  I would greatly appreciate a major, major note about this feature, right after showing the playback speed.  Explain that if slower speeds are used, by default, this will result in robotic sound effect.  The alternative is allowing a lower pitch so that the sound or music is played smoothly, similar to a record played slow.  I want this to be displayed because I remember using Windows media player when playback speed was added, tried low settings, and even 75-80% and heard the robor sound, and not even once considered using it ever again, although I did like the idea, but not if it is going to sound awful.  This way users are already aware of how this feature works, and the available options for it.  If this is completely over the top, then alternatively, have a very visible (orange ? Icon or something) hint to access a message to understanding what timestretch is when accessing the playback speed option.

Regardless, I desparately want playback speed to be shown directly on the main welcome screen, and maybe even have a wait-time of at least 10 seconds, in case it is accidentally or intentionaly quickly skipped over.  This way, it is GUARENTEED that all vlc users know it exists and the thought will be there.  You don't know the wonderful musical experience you are missing if you don't give this a try.

Changes to how the playback speed slider operates:

* Currently there is drag delay, so that, combined with the very wide default range, makes it impossible to smoothly change to a very nearby speed.
Whatever code is involved in modifying how this bar operates, that is different from the playback position, please consider just getting rid of it entirely, it just makes the slider annoying to use, causing pauses and skips in the audio.

* Allow custom range for slider GUI.
if range <0.25 || >4
doesn't seem to be for the GUI but for the actual function so I couldn't find the code for that

* It is quite simple to change the code for the up down speed arrows from 0.05f to a different value, I'd like to use this to allow an option for a custom decimal percent, and turn off "round.toInteger" at least as yet another custom option.

* Option to remove "Round.toInt" code, so that the rate precision can be customized.  This might be two-part option, one for precision value of slider values or alternatively using the arrows only for fine-grained changes.  I saw precision code inside Equalizer dialog box, but don't quite understand it.  20 * 100 makes 0.1 level precision, but I don't know how to use that infornation.

* allow the slider to move by 1% at all ranges, I couldn't find this code either, certain percents are missing, and many cannot be selected with the slider but .05 is always selectable with arrows, 1.05x for example, and 0.98, 0.94, 0.89 and 0.83 are missing, all lower percents are available, why, and how can this be fixed?

* UI, copy checkbox code from settings (or positioning of the checkbox from equalizer) and copy the following settings onto the speed selection bar, somewhere:

timestretch
save speed

I have discussed this with others, trying to explain how to disable timestretch, by going to advanced, but their reply was that it sounded the same, so I know for a fact that having the option directly visible will increase this option's visibility for the 250+ million vlc android users, and the ease of toggling the feature.

* Add a new feature, utilizing the existing "add bookmark" code, but modify it to function the same as the current "save speed" / or get current rate code.  This would allow saving a custom speed preset, instead of current playback time, and save that listing indefinitely.  I know this is quite a wild idea, but think about it:  If someone wants to change the speed anyway, they may want to save the speed specifically for that song, instead of overall, as a song sounds better at a particular speed vs just whatever the overall setting is.

* Delay and smooth the speed changes when sliding the bar, even if it takes a few seconds longer, it would be better than the sound skipping during adjustment.  This was also explained above, and I don't have the code understanding to add or modify the delay / transtion.  I have no idea how it might work, nor how often the speed should update itself, nor how many speed steps inbetween current and new speed level to change without audio interruption.

* Add a song to a playlist, and using some form of the bookmarks, to be used as a holder for multiple saved speeds, allow choosing a speed for each song (in the preset, or even modifying that preset or adding yet another one!) specifically for that playlist.  This idea is quite far out, I'm probably the only person ever that has had this idea, but I guess it takes all kinds to make the world go round.  The idea would be to create a playlist of songs within a tempo/speed range, so each song is somewhat in-line with a desired tempo similar to all other songs.  Yeah, it's a far-out idea, but think of how incredibly unique the idea is.  Instead of a global speed control, you could possibly even set a base level speed for all songs (83.72% for example) and adding each song, also set a speed bookmark preset for each listing.  Then, you could manually play the entire list (short duration to hear tempo) and match each song with double digit precision to match up all the songs to the same speed.  I know how it reads... but I don't care, I think it is the needed evolution of this setting.  Why even have a playback speed if it needs to be constantly changed to keep a similar tempo, like during a shuffle?  The presets would allow to fine-tune this during shuffle, and additional presets would allow playlists for multiple speed groupings.

There could be a playlist speed set for songs approxinately 7% slower, with all songs individually tuned to be nearly identical tempo, and another speed-set playlist for 18% slower songs etc. I might be the only one who uses the feature, but I think in time it would eventually catch on.

* Adjust timestretch code (couldn't find this at all, I really looked around, where is it, as I'd like to see what it is doing) to be less robotic, strobed.  Is this even a possibility, because I think I have a vague understanding of what's happening, but I'd definitely like to learn more about it.  My two cents is in order to play slower but match pitch, nearly ALL notes / (each two sound frequency plots in the file) must be re-adjusted on-the-fly, into a higher frequency.  I don't understand anything else going on with it.

* A similar note:  There is a feature request to help make faster speeds not echo or drop sound.  I don't use faster speeds with videos or podcast so I haven't noticed, but playing a song at 3x or 4x causes some notes or beats to be completely skipped over, and so it may be useful to help improve this code.  The posr explaining this says that Windows media player is smooth at 4x so surely there is improvements to be made.

Design for the slider

Orange lines for every 5% would look very nice, and give extra detail to an otherwise somewhat boring slider so it appears more interesting, and it is obvious where different speed are.  This would allow quickly dragging to a desired speed, instead of guessing where any particular speed is.  It would also be helpful to have orange lines for every other percent although that gets tricky, so might be easier to have very short (and bold), then longer, and bolder lines for each mark.  Then 5% have even bolder and long lines, with 10% being the longest and thickest.  This would increase ease-of-use instead of a blind guess as to how much of a change sliding will make, with only the number and previous experience of using the slider.

* Code: Please!  Simply the code for the math that generates the speed, just looking at it makes my head spin.  Why are there both division and multiplication, as well as additon or subtraction operations all going on?  That took some work to code that in I'm certain!  Thanks, but can it be simplified to just divide by 100 or whatever need by, so that the rate is just the rate, without all these extra cpu cycles to compute the new speed.  I bet this would increase performance, decrease battery drain, and help avoid all the stuttering, skips, pauses and delays when changing the speed as well as making it significantly easier to modify the rate code.  As is I can't understand it at all, and it seems unnecesaarily complex.  This work may allow easier additons for transitions between speeds to avaoid such skips, improving the experience imnensely.

* Keep overall playback speed, and when a "speed preset" playlist is all set up, even if those songs are all at different speeds, allow a delta from set speed for any / all songs, to further customize overall speed.

I might be able to eventually figure out how to code in some of ths changes, but would require extensive and down to the space, indention, and every pipe and curled bracket necessary to get it right.  To prove I have looked through the code, here's as far as I got with modifying the bookmark code, I'm sure there are more things to add so that it actually works, but I did try at least.

Code modified by me:

it would be something like:

override fun onBindViewHolder(holder:
ViewHolder, position: Int) {
val bookmark = getItem(KEY_PLAYBACK_RATE, 1.0f)

Maybe it also needs:

playbackService!!.setRate(rate, true)

Clearly I am guessing and don't have any idea of what I'm doing, but given enough assistance, I am willing to code all this as I realize it is 100% niche, and even if it's just for my own vlc build, I could at least share it with others to try, but then I would need to become a maintainer of a fork, and keep it updated, and I have no idea what is involved in such efforts and would not yet have the knowledge to do so, and I'd like the show off how features can be added to open-source software, which a closed-source program doesn't provide from just user discussion and developer assistance.  Wouldn't it be cool for all other music player developers to be surprised by the level of detail this, hoepfully once-rarely used feature, to see an absolutely unbelievable level of feature updates and very-fine precision customization?  I think everyone that updated vlc to a version with these features would be picking up their jaw from the floor in a pool of saliva!  No other program in existance has these features, let's help make my idea a reality!

If anyone is interested in offering assistance in implementing these features, I will gladly donate monetarily and snippets of code to the project, and I'll sponge up as much code language as I can understand to not take away time from "more important" bugs and features.  I've always heard on Linux / open-source project that eventually you'll find that one project that makes you itch, and this is that project.  I've found my calling, and I'll be glued to this feature addition until it is finally implemented.  Thank you for releasing this code openly, so that we can all benefit and offer improvement and insight.

If this post needs to be moved I understand, but hopefully this at least gets a few eyes or ears on it, and I can get started with at least the minimal of changes, such as removing the integer rounding, modifying the arrow incriment, adding "speed for current song, as if it were a bookmark" and if I spend enough time studying the code, I can copy the checkbox position code for the equalizer, and using that, copy the checkbox code inside audio and advanced settings to duplicate these options to the playback speed bar.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/android/attachments/20240425/b6309d6b/attachment-0001.htm>


More information about the Android mailing list