thetwom / toc2

Metronome app
GNU General Public License v3.0
152 stars 23 forks source link

Enhancements on the Scenes screen #35

Open bigboipete opened 3 years ago

bigboipete commented 3 years ago

I'm a drummer and I was very happy to find this app with the scenes feature on F-Droid. This feature makes Metronome outstanding, because as far as my search went, I couldn't find something similar.

Lately I started heavy testing under "real life conditions". But this is of course only my personal use case playing in a band. I use it to pick up the song tempo visually in advance, but not having the beat sound constantly on a headphone during playing. The ability to save fancy rhythm patterns in a scene is not my first choice. I use Metronome to have usually a 4/4th bar with different BPMs.

Here are some improvement suggestions, I came across. They all apply to the scenes view, which I used about 99% of the time:

  1. Reduce the used space per scene on the scenes page. On my 5 inch mobile screen there can only be displayed six scenes (aka songs) at once (I think it won't be significantly more on a larger screen). In my case an average song-set for a show contains at least ten to twelve scenes/songs, ususally more. So it would be an improvement to see as much scenes as possible on the screen without limiting overall usability too much. First thing that comes to mind for space reduction is to remove the notes. Beat indictaion instead would be crucial to me.

  2. Make the scenes manually sortable, not only by a sorting scheme like A-Z, Z-A, Tempo asc, Tempo desc. A "drag and drop" approach would be great to have the scenes in any individual order you want it.

  3. Have dedicated space for the Start/Pause button. During rehearsal I often didn't hit the button exactly and thus selected another scene by accident. This was quite error prone, even though I consider myself on a good average level using touch-buttons...

  4. Implying a dedicated space for the Start/Pause button, a Forward/Backward button would be another cool thing to advance in the "playlist" of scenes one by one. This would be awesome to have for an on-stage situation and even at rehearsals too.

  5. Have a clear beat indication. The sliding blocks are looking good from a design perspective, but to my experience it's harder to visually pick up the tempo, as the grafics are a bit too "washy" to get it fast and precise. Preciving it via the given sound is not an option in a (my) band scenario, as the surrounding noise is far louder than any mobile device's speaker. Is there maybe a possibility to trigger the mobile device's LED? Or make the visual indication configurable to alternatively have just a solid colored block "flashing" on the screen (wich could also be displayed in the context of 3. and 4.).

As said this is just my personal use case and what I'd love to see as an enhancement. If you want me to split these suggestions to different issues let me know.

bigboipete commented 1 year ago

I can't tell, whether the scene's row height did change along the way or not.

But another thing I came across (on v4.6.1.), is a very fast auto-scroll acceleration, if you want to drag and drop a scene from far down to a high mid (or vice versa far top to low mid) position in the list. With my current 28 scenes, I often end up at the top position of the list, because auto-scroll speeds up to fast. This starts to be annoying if you aim for a position, that is just not on the screen with the first positions anymore (e.g. on my device this would be position 12... you get the picture?).

Also the dropping at the exact position is sometimes getting a bit shaky, when you want to jump over some more positions (even without "hi-speed auto-scroll"). In general the moving of scenes could use some balancing for exact placement - as far as my drag and drop abilities are concerned.

bigboipete commented 5 months ago

The mentioned sorting issue in my previous post is still one of my remaining pain points in this great metronome app. It's really hard to manually sort scene entries within a larger list - especially landing entries on a specific position, which is not near first and last. (If you prefer, I can file its own issue for this.)

thetwom commented 5 months ago

Hm, I somehow missed your previous comment. I understand, that the situation can be annoying. It uses the default android functionality, so it is not so easy to change. I have a mockup, which would change the whole situations by not using drag and drop at all but to move scenes via up/down buttons. Maybe it is time to invest a bit more time to get all this working. Unfortunately, it is not really close to being production ready.

bigboipete commented 5 months ago

As always I did a quick half-baked research here and here:

I learned that there is a difference between drag, swipe and fling. Are these terms things you can decide (and design) within the code, what type of movement to choose for a desired UX or is it just wording to explain different types of gestures and the corresponding movement on a screen?

The accelerated speed of the scenes list looks like fling to me, but I would expect a rather calm drag...

thetwom commented 5 months ago

"Fling" means that you drag some item with some speed and then let it go. So it will keep moving and then slow down until it stops.

What you more want to look is "RecyclerView" and Drag-and-drop behaviour. A quick search shows that in principle, it should be possible to modify the behaviour, but I wonder why the default behaves so badly (at least in your case, I must admit, that I don't really use it myself, so I still have to try if I can reproduce it here ...)

bigboipete commented 5 months ago

I found a somewhat dated StackOverflow post, but it reads promising at first glance. Maybe it helps...

thetwom commented 5 months ago

This does not really apply here, but I found some other resource ... here is a test version: v4.12.0-rc1

It tried around a bit, but to be honest, the drag behavior is not good at all for me, independent of the scrolling speed. The long way this should definitely be improved.