The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Music::GuitarChordDiagram - Draw Guitar Chord Diagrams

VERSION

version 0.0301

SYNOPSIS

  use Music::GuitarChordDiagram;

  my $dia = Music::GuitarChordDiagram->new(
    chord      => 'x02220',
    position   => 1,
    string_num => 6,
    fret_num   => 5,
    size       => 30,
    outfile    => 'chord-diagram',
    font       => '/path/to/TTF/font.ttf',
    tuning     => [qw/E B G D A E/],
    verbose    => 1,
  );

  $dia->draw();

DESCRIPTION

A Music::GuitarChordDiagram object draws guitar chord diagrams including neck position and chord name annotations.



ATTRIBUTES

chord

  $dia->chord('xx0232');
  $chord = $dia->chord;

A guitar chord given in string format, where non-zero digits represent frets, x (or X) indicates a muted string and 0 (or o or O) indicates an open string. The order of the strings is 654321 from lowest to highest.

Examples:

  c: x32010
  d: xxO232
  e: 022100
  f: xx3211
  g: 210002
  a: x02220
  b: x24442
 
  cm: xx5543
  dm: xx0231
  em: 022000
  fm: xx3111
  gm: xx5333
  am: x02210
  bm: x24432
 
  c7: x32310
  d7: xx0212
  e7: 020100
  f7: xx1211
  g7: 320001
  a7: x02020
  b7: x21202

position

  $position = $dia->position;

The neck position of a chord to be diagrammed. This number is rendered to the left of the first fret.

Default: 1

string_num

  $string_num = $dia->string_num;

The number of strings.

Default: 6

fret_num

  $fret_num = $dia->fret_num;

The number of frets.

Default: 5

size

  $size = $dia->size;

The relative size of the diagram.

Default: 30

outfile

  $outfile = $dia->outfile;

The image file name minus the (PNG) extension.

Default: chord-diagram

font

  $font = $dia->font;

The TTF font to use when rendering the diagram.

Default: /opt/X11/share/fonts/TTF/VeraMono.ttf

tuning

  $tuning = $dia->tuning;

An arrayref of the string tuning. The order of the notes is from highest string (1st) to lowest (6th).

Default: [ E B G D A E ]

fretboard

  $fretboard = $dia->fretboard;

A hashref of the string notes. This is a computed attribute.

verbose

  $verbose = $dia->verbose;

Monitor the progress of the diagram construction.

Default: 0

METHODS

new()

  $dia = Music::GuitarChordDiagram->new(%arguments);

Create a new Music::GuitarChordDiagram object.

BUILD

Construct the fretboard attribute from the tuning.

draw()

  $dia->draw;

Render the requested chord diagram as a PNG image.

SEE ALSO

Imager

List::MoreUtils

Moo

Music::Chord::Namer

Similar modules:

Music::Image::Chord

GD::Tab::Guitar

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Gene Boggs.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.