Records what bar the metronome is currently on.
This should just return barTracker.value
.
Records how many beats have passed within the current bar.
This should just return barBeatTracker.value
.
Records the difference in bar beat values, enabling inspection of the beat within the current bar from one update cycle to the next.
Records how many quarter notes have passed within the current bar
This should just return barQuarterNoteTracker.value
.
Records the difference in bar quarter note values, enabling inspection of the quarter note within the current bar from one update cycle to the next.
Records the bar number in the previous update vs the current one.
Event that fires when the metronome is allowed to resume running (enabled = true)
Gets whether the metronome is currently enabled to run.
Sets whether the metronome is currently enabled to run.
Event that fires whenever the metronome is directed to move to a new position.
Event that fires when the metronome is first started
Event that fires when the metronome is instructed to stop running (enabled = false)
Get the current metronome tempo.
Set the current metronome tempo.
Get the tempo multiplier. This allows defining the tempo in terms of other duration values than just quarter notes. For example, if tempo == 120
:
tempoMultiplier == 1
means ♩ = 120
tempoMultiplier == 0.5
means ♪ = 120
tempoMultiplier == 1.5
means ♩. = 120
Set the tempo multiplier. This allows defining the tempo in terms of other duration values than just quarter notes. For example, if tempo == 120
:
tempoMultiplier == 1
means ♩ = 120
tempoMultiplier == 0.5
means ♪ = 120
tempoMultiplier == 1.5
means ♩. = 120
Get the current metronome time signature.
Set the metronome time signature.
Note: It's expected that implementations of this shouldn't actually change the time signature straight away, but instead store it so that the time signature changes on the start of the next bar.
How many beats have passed in total since the metronome started.
This should just return totalBeatTracker.value
.
Records the difference in total beats passed, enabling inspection of the total beat change from one update cycle to the next.
How many quarter notes have passed in total since the metronome started.
This should just return totalQuarterNoteTracker.value
.
Records the difference in total quarter notes passed, enabling inspection of the total quarter note change from one update cycle to the next.
This takes in a beat division and checks if the metronome is currently at some multiple of that division within the current bar, returning what multiple of the division we're currently at. For example: atBarBeatMultiple(0.5) returns 0 if we're at beat 0, 1 if we're at beat 0.5, 2 if we're at beat 1, etc. If not at a multiple of the division, then -1 is returned.
The beat division to check if the metronome is at a multiple of.
This takes in a quarter note division and checks if the metronome is currently at some multiple of that division within the current bar, returning what multiple of the division we're currently at. For example: atBarQuarterNoteMultiple(0.5) returns 0 if we're at QN 0, 1 if we're at QN 0.5, 2 if we're at QN 1, etc. If not at a multiple of the division, then -1 is returned.
The beat division to check if the metronome is at a multiple of.
This method allows for setting the metronome to a specific position.
Note though, that the bar-related values are calculated under the assumption that the metronome's current time signature is the one that it always has.
The new position, as measured in quarter notes.
This method is exposed primarily for the TickReceiver, so it can get a metronome to update, using its own calculation of how many quarter notes to update by.
This method should not be called by consumers of the library.
The number of quarter notes to update the metronome by.
Generated using TypeDoc
As you might expect, IMetronome defines an interface for metronomes, though the interface may have many more properties than you'd initially expect to be required for a simple metronome.
In much music, especially that written in 4/4 or 3/4, the concepts of quarter note and beat can often be treated as pretty much synonymous to each other. However, these are in fact quite different. A quarter note is exactly one quarter of a whole note, yet beats are far more free-flowing. For example, the Mission Impossible intro is at this point an over-used example of a piece of music written in 5/4, yet if you tap along, you'll almost certainly find yourself tapping 4 uneven beats per bar.
For this reason, shimi expects that most musical objects which use the metronome will use its beat properties, though quarter notes can still also be incredibly useful, so are provided as well.
To better understand how shimi supports irregular beat patterns, take a look at the TimeSig class.
Note: Shimi's counts of beats and quarter notes are both zero-based, whereas musicians typically count from one. This break from convention has been done because it makes many things significantly simpler from a programming perspective. For example, if we have 4 beats per bar, then the beat value will range from 0 to 3.99999...., then back to 0 at the start of the next bar. If the traditional method of counting was adopted, then the beat would range from 1 to 4.99999...., then back to 1 at the start of the next bar.