forked from len0rd/rockbox
		
	- Reduce need to press multiple buttons at the same time to quit a plugin - Have "Menu" be default way to quit plugins or to access plugin menu - Fall back to (Long) "Select" or Long "Menu" in cases where Menu button isn't available (e.g. in ImageViewer and many games) out of scope: boomshine, lua_scripts, Rockpaint, Doom, Duke3D, Pacbox, Quake, Sgt-Puzzles, Wolf3D, XWorld, Minesweeper, Pixel Painter, Spacerocks Change-Id: I6d4dc7174695fe4b8ee9cbaccb21bdbfe6af5c48
		
			
				
	
	
		
			210 lines
		
	
	
	
		
			7.3 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
	
		
			7.3 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \subsection{Metronome}
 | |
| 
 | |
| This plugin can be used as a metronome to keep time during music
 | |
| practice. It supports two modes of operation, depending on it being
 | |
| started from the plugin menu or as viewer for tempomap (\verb:.tempo:)
 | |
| files.
 | |
| 
 | |
| The sound is a piercing square wave that can be heard well also
 | |
| through loud music from a band.
 | |
| In addition, the display also indicates the beats while playing
 | |
| so that you can discreetly place the device
 | |
| in your sight for checking the tempo instead of wearing
 | |
| headphones at a concert.
 | |
| 
 | |
| \subsubsection{Simple Interactive Mode}
 | |
| 
 | |
| This is the mode of operation that is active when starting the
 | |
| plugin directly from the menu. It offers a uniform metronome sound at
 | |
| a constant tempo.
 | |
| You can adjust the tempo through the interface or by tapping it out
 | |
| on the appropriate button.
 | |
| 
 | |
| \begin{btnmap}
 | |
|     \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu}
 | |
|     \nopt{IPOD_4G_PAD,IPOD_3G_PAD}{\PluginExit}
 | |
|        \opt{HAVEREMOTEKEYMAP}{& }
 | |
|         & Exit plugin \\
 | |
| 
 | |
|     \PluginCancel
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCCancel}
 | |
|         & Stop \\
 | |
|         
 | |
|     \PluginSelectRepeat
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCCancel}
 | |
|        & Start \\
 | |
| 
 | |
|     \PluginSelect
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCSelect}
 | |
|         & Tap tempo \\
 | |
| 
 | |
|     \PluginLeft{} / \PluginRight
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCLeft{} / \PluginRCRight}
 | |
|         & Adjust tempo \\
 | |
| 
 | |
|     \opt{scrollwheel}{\PluginScrollFwd{} / \PluginScrollBack}
 | |
|     \nopt{scrollwheel}{\PluginUp{} / \PluginDown}
 | |
|         \opt{HAVEREMOTEKEYMAP}{& \PluginRCUp{} / \PluginRCDown}
 | |
|         & Adjust volume \\
 | |
| 
 | |
|     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD,SAMSUNG_YH820_PAD}{
 | |
|       \ButtonRec
 | |
|         \opt{HAVEREMOTEKEYMAP}{& }
 | |
|         & Sync tap \\}
 | |
| \end{btnmap}
 | |
| 
 | |
| 
 | |
| \subsubsection{Programmed Track Mode}
 | |
| 
 | |
| When starting the plugin as a viewer for tempomap files
 | |
| (ending in \verb:.tempo:), it starts in the track mode that offers
 | |
| playback of a preprogrammed metronome track consisting out of
 | |
| multiple parts, each with possibly different properties.
 | |
| 
 | |
| In contrast to the simple mode, there exists the notion of
 | |
| meter and bars, along with emphasis on certain beats.
 | |
| Parts can have these properties:
 | |
| 
 | |
| \begin{itemize}
 | |
|     \item finite or infinite duration in bars (navigation only jumps
 | |
|         to the beginning of infinite parts),
 | |
|     \item differing meters (4/4, 3/4, 6/8, etc., default 4/4),
 | |
|     \item differing tempo (always in quarter beats per minute,
 | |
|         default 120) with
 | |
|     \begin{itemize}
 | |
|         \item one tempo per bar or even one tempo per beat, or
 | |
|         \item smooth tempo changes with configurable acceleration, and
 | |
|     \end{itemize}
 | |
|     \item custom beat patterns (tick/tock/silence on each beat),
 | |
|         default being emphasis (tick) on first beat, normal sound
 | |
|         (tock) on others.
 | |
| \end{itemize}
 | |
| 
 | |
| \paragraph{The button mapping}
 | |
| is different to enable navigation in the programmed track.
 | |
| \begin{btnmap}
 | |
|     \PluginExit
 | |
|        \opt{HAVEREMOTEKEYMAP}{& }
 | |
|         & Exit plugin \\
 | |
| 
 | |
|     \PluginCancel
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCCancel}
 | |
|         & Stop (stay at position) \\
 | |
|         
 | |
|     \PluginSelect
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCSelect}
 | |
|         & Start from / Stop at current position \\
 | |
| 
 | |
|     \PluginLeft{} / \PluginRight
 | |
|        \opt{HAVEREMOTEKEYMAP}{& \PluginRCLeft{} / \PluginRCRight}
 | |
|         & Seek in track \\
 | |
| 
 | |
|     \opt{scrollwheel}{\PluginScrollFwd{} / \PluginScrollBack}
 | |
|     \nopt{scrollwheel}{\PluginUp{} / \PluginDown}
 | |
|         \opt{HAVEREMOTEKEYMAP}{& \PluginRCUp{} / \PluginRCDown}
 | |
|         & Adjust volume \\
 | |
| 
 | |
|     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD,SAMSUNG_YH820_PAD}{
 | |
|       \ButtonRec
 | |
|         \opt{HAVEREMOTEKEYMAP}{& }
 | |
|         & Sync tap \\}
 | |
| \end{btnmap}
 | |
| 
 | |
| \paragraph{Navigation}
 | |
| The display indicates the part properties and position in track as such:
 | |
| \begin{verbatim}
 | |
|     Metronome Track
 | |
|     ---------------
 | |
|        "Interlude"
 | |
|     3/4@120 V-25
 | |
|     P2/13: B1/5+2
 | |
| \end{verbatim}
 | |
| In this example, the part label is ``Interlude'', the meter is 3/4 and
 | |
| the tempo 120 quarter beats per minute (bpm). The volume setting is at -25
 | |
| and this is the second part of a track with 13 total. In that part,
 | |
| the position is at the second beat of the first bar of five.
 | |
| 
 | |
| \paragraph{The syntax of programmed tracks}
 | |
| in tempomap files follows the format defined by
 | |
| \url{http://das.nasophon.de/klick/}.
 | |
| Actually, the goal is to keep compatibility between klick and this
 | |
| Rockbox metronome.
 | |
| The parts of a track are specified one line each in this scheme
 | |
| (pieces in [] optional):
 | |
| \begin{verbatim}
 | |
| [name:] bars [meter ]tempo[-tempo2[*accel|/accel] [pattern] [volume]
 | |
| \end{verbatim}
 | |
| The bar count and tempo always have to be specified, the rest is optional.
 | |
| 
 | |
| One example is
 | |
| \begin{verbatim}
 | |
| part I: 12 3/4 133
 | |
| \end{verbatim}
 | |
| for a part named ``part I'' , 12 bars long, in 3/4 meter with
 | |
| a tempo of 133 quarter beats per minute.
 | |
| Tempo changes are indicated by specifying a tempo range and the
 | |
| acceleration in one of these ways:
 | |
| \begin{verbatim}
 | |
| 0 4/4 90-150*0.25
 | |
| 0 4/4 150-90/4
 | |
| 16 4/4 100-200
 | |
| \end{verbatim}
 | |
| The first one goes from 90 to 150 bpm in an endless part with 0.25 bpm
 | |
| increase per bar. The second one goes down from 150 to 90 with
 | |
| 4 bars per bpm change, which is the same acceleration as in the first line.
 | |
| The last one is a part of 16 bars length that changes tempo from 100 to 200
 | |
| smoothly during its whole lifetime (6.25 bpm/bar). For details on how the
 | |
| acceleration works, see
 | |
| \url{http://thomas.orgis.org/science/metronome-tempomath/tempomath.html}.
 | |
| 
 | |
| It is also possible to provide a tempo for each individual beat in a part
 | |
| by separating values with a comma (no spaces),
 | |
| \begin{verbatim}
 | |
| varibeat: 3 4/4 135,90,78,100,120,120,99,100,43,94,120,133
 | |
| \end{verbatim}
 | |
| where the beat duration is first according to 135 bpm, then 90 bpm,
 | |
| and so forth. You are required to provide a value for each beat
 | |
| in all bars of the part.
 | |
| 
 | |
| You can provide a pattern that controls how the beats are played:
 | |
| \begin{center}
 | |
| \begin{tabular}{c|l}
 | |
|     Symbol & Meaning \\
 | |
|     \hline
 | |
|     X & emphasized beat (Tick) \\
 | |
|     x & normal beat (Tock) \\
 | |
|     . & silent beat
 | |
| \end{tabular}
 | |
| \end{center}
 | |
| 
 | |
| Some examples:
 | |
| \begin{verbatim}
 | |
| default: 0 4/4 120 Xxxx
 | |
| rockon2: 0 4/4 120 xXxX
 | |
|   solea: 0 12/4 180 xxXxxXxXxXxX
 | |
| shuffle: 0 12/12 120 x.xX.xx.xX..
 | |
|   funky: 0 16/16 120 x.x.X..X.Xx.X..X
 | |
| \end{verbatim}
 | |
| The 12/12 for the shuffle create 1/4 triplets. Just do a bit of math;-)
 | |
| This is still a metronome, not a drum machine, but it can act like a basic
 | |
| one, helping you to figure out a certain rhythm within the meter.
 | |
| 
 | |
| The UI is developed so that it fits into the display of a Sansa Clip+ and
 | |
| that is the hardware device it is tested on. It seems to work reasonably
 | |
| on some other models in the simulator.
 | |
| 
 | |
| At last, a more complete tempomap file:
 | |
| \begin{verbatim}
 | |
| # An example track exercising the programmable Rockbox metronome
 | |
| # or also http://das.nasophon.de/klick/.
 | |
|      lead-in: 1 4/4 120 XXXX 0.5 # 4 emphasized but less loud ticks
 | |
|        intro: 4 4/4 120          # standard beat
 | |
| tearing down: 4     120-90       # changing tempo from 120 to 90
 | |
|        break: 2 1/4 90           # 2 1/4 bars at 90
 | |
|      rolling: 2 6/8 90           # 2 6/8 at same tempo (quarters!)
 | |
|     rumbling: 4 3/4 90 X.x       # 3/4, first (tick) and last (tock)
 | |
|      ramp-up: 8 2/4 90-150       # speeding up to 150 bpm again
 | |
|         flow: 4     150          # steady 4/4 at 150 bpm
 | |
|        death: 8     150-60       # going down to 60
 | |
|        final: 1 1/1 60           # one last hit
 | |
| \end{verbatim}
 |