Open bigboipete opened 3 years ago
Thanks a lot for sharing your experience. Currently, it's hard for me to do changes in short term, but I will definitely keep your suggestions in mind.
Let me give some quick answers to your issues:
Thanks for your quick reply.
I uploaded here a test release: v3.2.1-alpha1
It uses a modified tick visualization. Note, that the animation changes at 120bpm. Please let me know how it works out for you. I also played around with the sizes in the scenes screen ... it might not be a final setting ... but maybe you could let me know if this would work better for you
Thanks for the fast response. How am I supposed to install this alpha? Any settings to change? I downloaded the apk, started the installation process, but finally I got the message, that the app is not installed. I'm running ShiftOS which is basically an AOSP 8.0.0 (in case this might be relevant). But so far all F-Droid apps worked fine...
In theory it should just work the way you did it. It is possible though, that you have to uninstall previous versions first, since the signing keys of fdroid don't match the ones I use ... you will lose your currently saved scenes on uninstall, so make sure that you have exported them.
Got it! Unfortunately reimporting my scenes didn't work so far (without much effort...), but that's no big deal.
I think, I can explain now, why neither the recent beat visualisation (BV) nor the new "slow" BV works for me. I noticed especially with the new one, that I want to focus on one single point to pick up the beat. But there are two at both sides of the screen, which is somehow distracting, when you try to focus on just one.
And the old BV is too washy with this kind of "in-motion unsharpness" of the moving blocks to easily and precisely focus THE point where exactly the beat is (aka the blocks collide).
So, the new "fast" BV is by far the best solution for me, because I have one "point" to focus on. Of course everything is mitigated, if sound comes into play. My observations described above are a purely visual evaluation. Hope that gives you an idea...
Thanks for the testing. Can you say, why reimporting the scenes didn't work? In theory there should not be an issue ...
I will try modifying the slow visualization, such that the bar disappears just in one direction ... I understand that the "fast" animation is good for fast speeds. But in my opinion for low speeds some extra info which visualizes when the click can be expected is helpful. Maybe in the end it turns out that it isn't ... would be good to have more opinions here ...
I think, that every kind of motion makes it a bit harder to focus on an on/off thing (which to me a visual metronome is), because you are forced to follow the motion - even if it's done unconscious. But although on a low level, that still eats "brain-resources".
That's why I'm not convinced, that there's a need to add some movement as support to pick up slow speeds. My personal perspective...
I didn't try hard with the re-import. I'll check that later and let you know. So far, I selected the txt file containing the scenes and they simply didn't appear in the app. No error or something.
Regarding the scenes import: The version info 3.2.0 in the file is not an issue, importing into an alpha version 3.2.1?
no, it should not be an issue, up to now the version number is ignored. Can you reimport into the fdroid version? I really wonder, what is wrong here. If you file is not confidential, can you share it, so I can try?
It looks like the import from within the Metronome app doesn't work (via "load scenes from file"). If I select the txt file in the file explorer (Android built-in and Material Files app) import works fine.
Btw. is deleting scenes an all or nothing thing? How am I supposed to delete a single scene? I couldn't figure it out yet.
this is strange, maybe I have to try if I broke something here ... can you try exporting some test and reimporting again, and if it doesn't work, can you share the file here?
Deleting a single scene works with swiping it to the left ...
Taken my success with drag and drop and deleting, I should work on my ability to predict the basic tapping/swiping actions. Thanks for the hint, I only tried it to the right.
Maybe the current way isn't as intuitive as I thought it is :-)
Here we go: metronome_test.txt
Thanks a lot. I will investigate shortly. Will also try a little bit with the visualization and let you know what I find out ...
I just noticed that the new "fast" BV has some hickups at fast speeds. It starts at around 143bpm but becomes obvious at 160bpm and faster.
thanks for letting me know. I will have to see how/if things can be improved. At some point we are running into the limits of the android system which is not perfectly time accurate ... for sound this can be circumvented by mixing an audio stream, for visual feedback this is not as easy.
Sure there are limits. I don't want to nag, but also in terms of implementation and timing, isn't an on/off virtualisation easier to achieve beat-perfectly, instead of precisely firing an animation with that kind of real-time requirement?
I dug a bit deeper into these "hickups". They actually occur with all BPMs. It is harder to notice with sound on, but they are there. For the "slow" BV focus on how the bar slides back from the sides. As far as I perceived it, it's often every 3rd or 5th beat. I tested only on a 4/4th bar, just in case this affects the issue.
Additionally I think the sound output is correct. So, as you said the visual side might me the harder thing to implement time-perfect.
can you try if the problems is the same on the "main" window?
I am open to end up with a simple "blinking" bar if it makes most sense. I will try and experience myself a little bit more... .unfortunately there is not so much time, so all this might take a while ... first I have to find this problem with loading scenes ... it might be a problem with updated libraries I am using ...
Yes, it's the same BV issue on "main" and "scenes" view.
OK, thanks.
Regarding the scene loading issue, I have the feeling it is related to "Material Files". Actually, I can reproduce the issue with "Material Files" installed. If I deinstall it, everything works fine. Could you try deinstalling Material Files and then loading files?
To be honest, I'm not so happy when it comes to uninstalling and reinstalling apps on my device, because I use it every day "in production". I usually take care to keep it as clean as possible in terms of installations. It's not a dedicated test-device. But it's on my list and of course I'll let you know my observations, if I do decide to test the "Material Files" issue. I hope, this is fine for you.
Could you try this release: v3.2.1-alpha2
This should resolve the issue you mentioned in the other thread and uses now a blinking animation for all speeds. I tested it for me but the result does not seem to be very convincing. Maybe the bar is just too wide and I should transform it to a small dot, so that the eye just has to focus on one point? I also have the feeling that the timing is still not good.
You're right, unfortunately the timing of the bar is still not precise.
I'm not too much into app programming, but it seems that the bar is still an animation that quickly fades in. My guess would be, that a straight on/off is the simpler mechanism from an implementation perspective, which could react faster and more precise? I don't think the bar itself would be the problem, compared to a dot.
Actually there are two animations. It's the pulsating note and the fading-in bar. I would expect that the system could get even more in trouble to fire two animations, which both are supposed to be super time-accurate.
I don't want to spoil your whole visual concept, but my assumption would be, that removing all animations, would improve time accuracy. But that's completely unevaluated and a simple best guess, from what I know from programming.
My strong guess for the inaccuracy is not that the system has to do too much work due to animation, but that threads are not perfectly synchronized. The audio is played a separate thread and when a click occurs, it calls the ui-thread to draw the animation. Unfortunately, there is no guarantee, that the ui-thread wakes up in time. It is even possible, that without animation it becomes worse since the ui-thread has not enough work to do and goes to sleep :-) and such takes longer to wake up.
But still, your reasoning appears straight forward and it is worth a try to switch of all animations (especially since this can easily be done). Please see v3.2.1-alpha3 for a version without animation.
I did change the tick visualization again, to avoid the fade out. Just having a short on and off does not work out nicely since you (or at least this was my observation) will see two clicks: One when the bar switches on and one when the bar switches off. The "new" animation circumvents this problem.
Unfortunately, a very quick test from my side shows, that this version is not better. If you agree that it is still not good, I will have to think if there are ways to somehow improve the behavior, but unfortunately this is no quick and easy change ...
First of all thank you very much for all your efforts!!!
As said, I have no clue about app programming and I do not know what is technically covered by the term "animation" on code level in the Android environment. The picture I have in mind (which could be totaly different for Android) is technically a CSS-like approach, like just switching a given rectangle from colored (opaque) to transparent and back. Would that also be an animation in Android?
Having "my" approach in mind, I can't imagine how these "two clicks" could occur. But again, I live in a different universe regarding my developer skills and so, my thoughts could easily be just complete nonsense when it comes to Android. If you've got the patience, I'd be very interested in some Android insights to understand, what's happening under the hood.
I don't know if I'll find the time today, but I'll test the alpha3 version tomorrow at the latest.
... If you've got the patience ... -> no problem here for me, it just might take some time for me to answer sometimes :-)
"animation" -> sorry for using such a term without explaining. "Animation" in android means mostly gradual changes of appearance (e.g. moving rectangles, shrinking rectangles, changing color with time, changing transparency with time, ...)
So switching something on or off is normally not an animation.
The "two clicks" are not about programming, but about appearance. If the colored rectangle suddenly appears, it will make you "feel" a click. But if it disappears it also makes you feel a click. So if I switch on the green bar and after 0.1s switch it of again, it gives an undefined feeling -> is the click when it is switching on or when it is switching off? Or are there two clicks.
However, if you look at alpha3, in Android terms it doesn't use animation, but switches on and off two rectangles. I named it "animation" in my previous post, so technically this was incorrect.
Thanks for the explanation. I'm quite curious how the new visualisation looks like.
From what you are writing, it seems like now it's about optimizing on- and off-times. And in case the "off"-click keeps being somehow distracting, you could keep the block "on" for the duration of one beat and leave it "off" for the next and so on. I can't recall how this was solved on my old crappy Metronome device, but I'll check that, too.
But I guess, I have to have a look at the alpha3 first, before talking about it...
I had a look at the alpha3 and in my opinion these blocks are the best approach yet. Timing is still not accurate, as you wrote.
I did a micro-research on the keywords "android time based visual changes" and came across an article on developer.android.com, that identifies the RecyclerView
(among others) as a likely source of dropped frames. This is at least somehow used in the ScenesFragment
class. I don't know, whether this is a new and hopefully valuable information for you, but I thought I'll let you know anyway.
Thanks for the research. It's an interesting article, but very unlikely, that it describes the cause. I strongly guess on thread synchronization, but there might be ways to improve the situation. However, it might take some time, since it is not trivial and my time is a little bit limited :-).
hi, I am ready to do a bit more testing about the visualization. I created a simple test app. Maybe you can try it and give feedback if the visualization is more accurate TickVis. Not sure, if this really improves the situation, but it's the logical start ...
I merged also some changes into v.4.0.0 which is already available on fdroid an play. Let me know, if this version improves the situation.
Hello. To give a very quick (and late) feedback on this subject:
My 2 cents.
Thanks for the suggestions:
Please check v4.2.0-beta1 for some enhanced player controls. There might be some room for improvement, but it should already pretty much do the job ... I would be glad to get some feedback ...
This is a major improvement compared to the last version I installed and checked. Thanks for putting so much effort into the app!
Visualisation seems precise at first glance, but I'll check that later today with my band.
Here are my suggestions for some micro improvements:
Given the available space in the scenes screen the font for scene names could be even bigger without taking space away from other elements.
After importing my set of scenes and switching to the scenes screen no scene was selected and so still the initial settings were applied. That was a bit confusing at first (but another reason might be, that I wasn't sure what to expect as indication for a selected scene in light mode). It might be more intuitive to default to the first (or maybe last used) scene when switching to the scenes screen. Maybe...
Another formal thing are the skip-buttons. The ones you use are ususally fast-forward/fast-backward and not skip-next/-back, which would be this one.
Btw. import from within the app still doesn't work. I don't know, if it should yet...
Just came accross one more:
Maybe my thumb is a bit more awry than others, but when scrolling the scenes screen I switch quite easily to the main screen. Is this scroll/switching behavior adjustable?
Precisely it's the case, if I want to scroll a long way up to the top of the list without letting it go (using the left hand for scrolling and holding the device). I touch the screen at a rather high position and the thumb has a good part of movement in the horizontal axis at start. This decreases when moving further down. But I think the initial direction might be a bit to much to detect the intention correctly. But maybe I just need some lessons on my touch-skills...
Thanks a lot for testing:
About the import/scene thing: The current implementation might be intuitive, in case you are switching from main screen to the scenes screen while playing main screen's settings .
But as soon as the metronome is not running and you switch to scenes, I think it's quite likely, that the user wants to use a scene. So, my personal expectation would be, that e.g. the first (or last used) scene is selected and if I hit play the scene's settings will be taken into account instead of the main screen's.
Regarding font size of scene names andyour concerns about the cluttered settings for the option to display the notes or not, I wonder why the setting for min an max speed is necessary? Isn't this something that is generally determined by the system or differ the possible speeds between devices? Do you know about extreme cases (like 1.000BPM max) that would be an issue for a device? For me this setting is not at all crucial and could easily hard-coded under the hood without loosing convenience. Leaving this away provides enough space in the settings for notes on/off.
In that context, I checked the vibration feature and noticed that (at least with vibration on and sound off) visualisation and vibration is still not exact. Vibration is more obvious...
Min/max BPM: Concerning "accidently chosen small values", I wonder how accidently this could be? In the main screen the BPMs are displayed quite prominent (in scenes it's smaller but should be sufficient). So this is displayed at all times. And after trying, I also found the hard-coded upper limit of 10.000BPMs. So this setting seems a bit redundant to me... but that's as always just my personal perspective.
Vibration/Visualisation: As soon as I turned on vibration it went together with visualisation straight into these small hickups (like described on May 29th), checked at an average tempo around 130BPM. Visualisation only seems to be clearly more precise, as far as I observed it by now.
min/max BPM: yes I think it's about taste, so lets agree that you would favor a compact mode for the scenes :-).
vibration/visualisation: It's strange, that vibration seems to affect also the visualization since they run on different threads. And visualization is now only loosely coupled to the sound, so even if there is lagging on the player, the visualization continues. Unfortunately I am a bit out of ideas on how to improve the situation.
If you find time please check v4.3.0-beta1
In the settings you will find the option "compact scenes layout". Let me know if this helps.
Yes, this is definitely what I was looking for. Thanks for that adaption. That's all information I need in my universe.
I don't know if this would be as easy to achieve as it looks like, but here's a simple layout-suggestion for making full use of the freed space: .
sure, such a thing is possible :-). It comes at the cost of the shorter titles and its harder to hit the correct scene. .. but we could give it a try ...
here a new beta v4.3.0-beta2
I did not yet change the numbering style, but I like the idea of just number with point ....
After extensive usage of the current Toc2 beta during two days of rehearsal, the scenes layout is nearly perfect from my point of view.
For me the only thing to maybe adjust once more is the row-height of the scenes and the play/skip buttons. When it got bustling, I sometimes missed the button area or the right scene (given the usage described in my second entry).
Thanks for the feedback. I will look into increasing the rows heights slightly, when I find some time.
I am wondering, if I ever addressed the issue of the row heights. Maybe you could revisit the current status.
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:
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.
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.
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...
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.
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.