thetwom / toc2

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

Enhancement ideas #55

Open NiaJ3oE2LM opened 2 years ago

NiaJ3oE2LM commented 2 years ago

Hello! As a guitar player I am enjoying the app a lot and I thought I could share some ideas that I came up with along the way. To my knowledge the features that I am going to propose are usually not present in metronome apps.

Well done and keep up the good work!

Idea 1: more tracks in the measure definition

It would be great to have the possibility to add a second track on the measure definition. Since there are already many sounds available for the beat definition, this would allow a user to create a simple drum backing track.

For example one could create a blues shuffle drum backing track.

Idea 2 : sequences extraction for music practice

User requirements specification

When learning music a student needs to memorize and practice different types of sequences. Such sequences could be scales (different modes, different fret-board figures, different strings, …), chord progressions, and so on. When improvising similar needs arise.

It would be great to enhance the metronome with multiple sequences item extraction. This way, a user can set up the metronome and associate to each beat the extraction of items taken from different lists/ranges. This extraction shall be visualized on the screen.

Suppose for example that one shall practice scales in different keys and in different positions of the fret-board. The user could create 3 sets: a list of the keys, a range of the different notes of the scale (for example 1 to 7 for the ionic modes), and another list for the fret-board positions. While practicing the metronome app shall display the extraction of the items of the lists at every beat. For example: 1/4 (key:C, note:5, fret-board position: low), 2/4 (key:B, note:3, fret-board position: high), ...

Of course one could program this with, say, python and some simple terminal graphic interface (I actually did it myself some years ago). Of course one could grab a DAW and create highly customized solutions for this. However, I believe that those solutions are too sophisticated and it would be much more easy and comfortable to have those features on the usual metronome app.

The key idea here is that the number of lists/ranges need not be pre-defined nor fixed. It would be great to let each user define its own lists.

Proposed enhancement

To add:

Feature suggestions:

thetwom commented 2 years ago

Hi, thanks a lot for taking your time and giving suggestions. Unfortunately, your suggestions are quite difficult ones :-).

I will keep your suggestions in mind, in case I will really decide one day to change the UI. Unfortunately, this will not happen short term ... maybe not at all :-(.

NiaJ3oE2LM commented 2 years ago

Hi! I did have some ideas for UI as well, so I will post here some mock-ups. Please take them with a grain of salt as I have little experience in coding smartphone apps :)

In my opinion the UI items are rather big. I feel this comes very handy when playing with an instrument on your hands. However one could find a good compromise by squeezing things a little in order to get some free space for the second track. Please find attached a simple UI proposal for the second track display that implements this idea. Screenshot_multiTrack_UIproposal

I simply squeezed things a little in order to fit the second track. I don’t know in terms of coding how much time this mod requires. To me it does not appear like major UI redesign. Notice the use of a double “+” button for separating the actions in the two tracks. Moreover, this could be an optional feature to be enabled in the app settings.

thetwom commented 2 years ago

thanks for your suggestions and mockup.

Don't forget, that this has to work well for all kinds of phones, also if the screen is smaller. Also, the speed-dialer will reduce size, which is not a problem itself, but at some point, it won't look good anymore. One would need a layout, which allows to add elements (like an additional track or something else) while still looking good.

At the current state, the UI adaption would require really a lot of work. So, it's not like trying around, but it would mean to have a good and working concept first, ...

Note, that also the scenes screen would need adaption, since if you store several tracks, it should also be displayed there.

Besides, if you allow to add one track, it is a matter of time that more tracks will be requested. Meaning, everything must be dynamic. So, I don't say that it doesn't work, but it is something which must be carefully planned.

Sorry, that I cannot easily pick up the suggestions.

NiaJ3oE2LM commented 2 years ago

Hi again, I'll jot down further explanation for sequence extraction part. I hope these suggestions to be inspiring, I don't expect them to be implemented. Many thanks again for this great app!

Regarding the sequence extraction

let me give a practical example. I believe this feature is not extremely specific because it is about learning music (theory) regardless of the instrument. I can see however that it might seem complicated at first sight. Again, I had some ideas for the UI as well and I will post them here.

The idea is to create a tool that prompts the user with a message at every beat of the metronome. The message is structured according to some practice task, this means that the user reads the message and needs to recall where to perform - say- a note on the instrument. Parts of the message update at every beat of the metronome with items taken from a number of user defined lists.

Example use case 1: practice scales

Suppose I have been introduced to the Major scale and I want to learn how to play it comfortably on all the fret-board. I would like to have a tool that shows me with a short message saying something like “ play note 3 of the Major scale in the key if C on string 4”. Such a tool should update the message at every beat of the metronome so that the “practice session” goes on.

The idea behind the multiple sequence extraction is a framework for defining how the message should vary. Suppose I want to practice the Major scale inkeyList=[“C”, ”D”], the major scale takes notes in noteList=[1, 2, 3, 4, 5, 6, 7] and that I want to practice notes only on strings in stringList = [1, 3, 4]. The tool should present me (iteratively, at every metronome beat) with messages like :

One could think such a message is complicated to set up on a user interface. To solve this problem you could convert the message to a 2-column table. The first column would display the name of the list, while the second displays the value of the extracted item

Example use case 2: improvising over a chord progression

Suppose I want to experiment with improvising melodies on a custom chord progression. I would like to have a tool that prompts me with a message remembering me what chord of the progression I should be improvising on. Take for example a progression with 4 chords, each chord is played during one measure of 4/4 beats. The complete progression lasts 4 measures and is then repeated.

I would like to be able to define a progression like a sequence of chords in chordList = [“chord1”,”chord2”,”chord3”,”chord4”] and to associate this list with an update period of 4 beats. This way the tool should present me with these messages (list number associated to metronome beats):

  1. chord1
  2. chord2
  3. chord3
  4. chord4
  5. chord1
  6. chord 2
  7. an so on ...

UI proposal

As proposed in the first message, one could think on some kind of overlay window to show the message on top of the metronome, while it is running. I believe you already have such feature coded in volume button (left side) on the metronome main page.

You could simply add another button on the top right side implementing the section for the sequence definition and messages. Please find attached a UI proposal that implements this idea for the use case 1. Screenshot_sequenceExtraction_UIproposal

As you proposed the sequences associated to a particular practice session could be saved as scenes. In this mock-up I have named the (scene) of use case 1 “Major Scale”. I don’t have any particular suggestion for the scene definition UI, my guess is that your app framework already has predefined elements for managing text field, list items, etc. This section should be able to define

The lists need not be exactly key, note, and string. The user should be able to define a number of lists with its own name and items.

More thoughts

thetwom commented 2 years ago

Hi, thanks for the detailed explanation. I understand, that having such a tool would help practicing certain sequences. Indeed I once had a very simple private app, which displayed a random note after a certain time period. This way I could practice finding the correct notes on the fretboard. I think I even showed a message like: string 3, note A# ...

I understand, that such a feature could be integrated in the metronome, but I am quite hesitant about it. It would mean adding features which are not very specific to a metronome. Indeed it would change the meaning from being a metronome to being a tool for practicing instruments. Meaning it is not so important to have precise beats, but more to show different messages at certain times. And we have to be careful about additional features, since they make simple things more complex. Indeed, I already don't like in the current state of the app, that there are so many buttons "randomly" placed on the main screen.

All in all, I would say, your "sequence extraction" suggestion would be good for a separate app. Combining it with a companion app won't be easily possible. In theory apps can communicate, yes, but having good synchronization is actually a very difficult task in android.

Sorry, that I am so hesitant about picking up such features. But at some state one has to start being careful to keep things simple and ensure that everything is consistent and plays nicely together. And of course, not to forget, that all this needs a lot of time, which is always rare :-).