README
author Dan Fuhry <dan@enanocms.org>
Sat, 15 Sep 2012 13:18:13 -0400
changeset 6 07ceb3e35e25
parent 5 c36fbf04faac
permissions -rw-r--r--
Added support for the render_getpage_norender hook, allowing transposition to take place via the "key" parameter when including Halftone pages as templates.

chords2halftone.php is a completely standalone (non-Enano dependent) quick php
script which turns ascii monospace chord sheets into halftone markup. You may
or may not find it useful.

Halftone markup example:

<halftone title="Don't Stop Believing">
= Intro =
(E) (B) (C#m) (A) (E) (B) (G#m) (A)

= Verse 1 =
(E)Just a (B)small town girl
(C#m)Living in a (A)lonely world,
(E)She took the (B)midnight train going
(G#m)any - (A)where
</halftone>

You get the picture.

Halftone will position the chords exactly in the right position above the text.
You also (and this was the main reason I wrote this plugin) get automatic
transposition with ajaxy-smooth sexiness.

Note that the positioning-chords-above-text trick sometimes makes for overlaps
if you put chords so close to each other. An example would be using
"(G#m)any(A)where" in the sample verse above - depending on your theme/font
G#m would be directly adjacent to A (confusing) or A would even overlap. So
be sure to space out your lyrics accordingly. You can use HTML entities (like
"&nbsp;" or so) to space things out.

You may also find it beneficial, if the key detection algorithm goofs up, to
prepend a "!" to the beginning of a chord expression which does not fit into
the consonant chords for a given key. Consider the following passage, taken
from a song in the key of A (this is the pre-chorus):

	(E)And together we (B)sing (D)
	Everyone (B)sing (D)

The key detection actually caused Halftone to think this song was in D. You can
rewrite this as,

	(E)And together we (!B)sing (D)
	Everyone (!B)sing (D)
	
...which causes the key detection algorithm to ignore that random B, which is
considered to be dissonant to the key of A.