Music::ChordBot::Song - Generate ChordBot songs.


    use Music::ChordBot::Song;
    song "All Of Me";
    tempo 105;

    section "All Of Me 1";
    style "Chicago";

    C 4; C; E7; E7; A7; A7; Dm7; Dm7;
    E7; E7; Am7; Am7; D7; D7; Dm7; G7;

    section "All Of Me 2";
    style "Swingatron";

    C 4; C; E7; E7; A7; A7; Dm7; Dm7;
    Dm7; Ebdim7; Em7; A9; Dm7b5; G13;
    C 2; Ebdim7; Dm7; G7;


Music::ChordBot::Song exports a number of subroutines that can be used to construct a CordBot song. Upon program termination, the song is written out to standard output in JSON format, suitable for import into the ChordBot app.


song title

Starts a new song with the given title.

tempo bpm

Sets the tempo in beats per minute.

section name

Starts a song section. A section groups a number of bars with chords. Each section can have a style associated although it is common to have a single style for the whole song.

style preset

Associate the given style to the current section. For a list of presets, see .

chord key, type, duration

Append a chord with given key, type and duration. Note that duration is measured in number of beats. The three arguments may also be specified in a single string argument, space separated.

You can specify a bass note for the chord by separating the key and bass with a slash. E.g., "C/B" denotes a C chord with B bass.


For convenience, subroutines are exported for quick access to chords. So instead of

  chord "C", "Maj", 4;

you can also write:

  C 4;

If you omit the duration it will use the duration of the previous chord:

  C 4; C; F; G;         # same as C 4; C 4; F 4; G 4;

The subroutine name is the key of the chord, optionally followed by a chord modifier. So C is C major, Cm is C minor, and so on.

Chord keys are A B C D E F G Ab Bb Db Eb Gb Ais Cis Dis Fis Gis.

Modifiers are m 7 m7 maj7 9 11 13 auf 7b5 m7b5 dim dim7.


There is currently NO VALIDATION of argument values. Illegal values will result in program crashes and songs that cannot be imported, or played, by ChordBot.


See Music::ChordBot.