Numerous musical styles subdivide time in several layers, which are also sudbivided by a certain numerical value.
For example, most jazz songs loop over a single chord progression.
In this particular example, however, we usually tend to merge the 2nd and 3rd steps :
GMCycleView allows you to specifiy such subdivisions and to regularly update it so it displays the current position of the beat within each of those defined layers :
In this example, we can see 'times' advance on the bottom of the view. Once they reach their max, they'll start again while incrementing the 'bars' value, which is directly above. The 'bars' value will do the same to the 'cycles' value, and the 'cycles' value will do the same to the 'sections' value.
As an other example, we can imagine a waltz, that would consists of 8 musical phrases, with each phrase consisting of 4 bars, with each bar consisting of 6 times (please note that the method cycles
takes those arguments from the lower subdivision to the highest) :
Creates a new instance of GMCycleView.
Its graphical properties are defined by its associated GMStyle.
a GMCycleView instance.
Sets or gets the number of cycles, and theirs subdivisions (see example above). This will reset
the view.
Advances the GMCycleView by one beat. Internally defers the refresh
call.
Resets the GMCycleView backs to the very first beat. Internally defers the refresh
call.
Sets or gets the current beat position in every cycle. Can be used to advance manually. Internally defers the refresh
call.
The function associated to the View's drawFunc
. Shouldn't be modified.