ChordPro Default Configuration

// Configuration for ChordPro
// 
// This is a really relaxed JSON document, see
// https://metacpan.org/pod/JSON::Relaxed#REALLY-RELAXED-EXTENSIONS

// Includes are processed first, before the rest of
// the config file.
// 
// "include" takes a list of either filenames or preset names.
include : [ guitar ]

// General settings, often changed by configs and command line.
settings {

  // Chords parsing strategy.
  // Strict (only known chords) or relaxed (anything that looks sane)
  strict : true

  // Obsolete.
  lineinfo : true

  // Titles flush: default center.
  titles : center

  // Number of columns, default: 1.
  columns : 1

  // Suppress empty chord lines.
  // Command line: -a (--single-space).
  suppress-empty-chords : true

  // Suppress blank lyrics lines.
  suppress-empty-lyrics : true

  // Suppress chords.
  // Command line: -l (--lyrics-only)
  lyrics-only : false

  // Memorize the chords from sections.
  memorize : false

  // Chords inline instead of above.
  // May be a string containing pretext %s posttext.
  // Defaults to "[%s]" if set to a value that doesn't contain "%s".
  inline-chords : false

  // Same, for annotations. Ignored unless inline-chords is set.
  // Must be a string containing pretext %s posttext.
  // Default is "%s".
  inline-annotations : %s

  // Chords under the lyrics.
  chords-under : false

  // Transpose chords.
  transpose : 0

  // Force enharmonic when transposing (experimental).
  enharmonic-transpose: true

  // Transcode chords.
  transcode : ""

  // Eliminate capo by transposing chords.
  decapo : false

  // Strictness of parsing chord names.
  chordnames : strict

  // Allow parsing of note names in [].
  notenames : false

  // Always replace chords by their canonical form.
  chords-canonical : false

  // If false, chorus labels are used as tags.
  choruslabels : true

  // Substitute Unicode sharp/flats in chord names.
  // Will fallback to the ChordProSymbols font if the selected chord font
  // doesn't have the glyphs.
  truesf : false

  // Indent for wrapped lines. Actual indent is the stringwidth.
  wrapindent : x

  // Consider text flowed.
  flowtext : false
}

// Metadata.
// For these keys you can use {meta key ...} as well as {key ...}.
// Important: "title" and "subtitle" must always be in this list.
metadata {

  // Known metadata items.
  keys : [
    title  sorttitle subtitle
    artist composer  lyricist arranger
    album  copyright year
    key    time      tempo    capo     duration
  ]

  // If strict, only the keys named here are allowed.
  // Otherwise, {meta ...} will accept any key.
  strict : true

  // The separator is used to concatenate multiple values.
  // If autosplit is true, the separator is also used to split
  // values upon input.
  separator : "; "

  // Split data on separator.
  autosplit : true
}

// Globally defined (added) meta data,
// This is explicitly NOT intended for the metadata items above.
// Do NOT remove or change "_configversion"!
meta._configversion : [ 6.031 ]

// Assets (placeholder).
assets {}

// Date formats. Format is a strftime template.
dates.today.format : "%A, %B %e, %Y"

// User settings. Actual values are usually set by a separate config file.
user {

  // Short user name.
  name : ""

  // Full user name
  fullname : ""
}

// Description of the instrument.
// Actual values are set from an included instrument config.
instrument {

  // Instrument type.
  type : ""

  // Descriptive instrument name.
  description : ""
}

// Definition of the strings for this instrument.
// This is usually set from an included instrument config.
// Note that string 1 is the highest string.
tuning : [ E2 A2 D3 G3 B3 E4 ]

// Note (chord root) names.
// In case of alternatives, the first one is used for output.
// Note that it is tempting to use real sharps and flats for output,
// but most fonts don't have the glyphs.
notes {

  // The note system used.
  system : common

  // Note names, using sharps. \u266f is MUSICAL SYMBOL SHARP.
  sharp : [
    C   [ C# Cis "C\u266f" ]
    D   [ D# Dis "D\u266f" ]
    E
    F   [ F# Fis "F\u266f" ]
    G   [ G# Gis "G\u266f" ]
    A   [ A# Ais "A\u266f" ]
    B
  ]

  // Note names, using flats. \u266f is MUSICAL SYMBOL FLAT.
  flat : [
    C
    [ Db    Des "D\u266d" ]   D
    [ Eb Es Ees "E\u266d" ]   E
    F
    [ Gb    Ges "G\u266d" ]   G
    [ Ab As Aes "A\u266d" ]   A
    [ Bb    Bes "B\u266d" ]   B
  ]

  // Movable means position independent (e.g. nashville).
  movable : false
}

// User defined chords (placeholder).
// This is an array of hashes, one for each chord.
// Each hash should contain the following fields:
//   "name":    name of the chord
//   "base":    base fret (optional, defaults to 1)
//   "frets":   the frets (optional, use 0 for an empty string,
//              and -1 or "x" for a muted string)
//   "fingers": finger positions (optional)
//   "display": (optional) can be used to change the way the chord is displayed
chords : []

// Format to show chord names. May contain markup
chord-formats {

  // Format string for rendering common chord names.
  common : "%{root|%{}%{qual|%{}}%{ext|%{}}%{bass|/%{}}|%{name}}"

  // Format string for rendering roman chord names.
  roman : "%{root|%{}%{qual|<sup>%{}</sup>}%{ext|<sup>%{}</sup>}%{bass|/<sub>%{}</sub>}|%{name}}"

  // Format string for rendering nashville chord names.
  nashville : "%{root|%{}%{qual|<sup>%{}</sup>}%{ext|<sup>%{}</sup>}%{bass|/<sub>%{}</sub>}|%{name}}"
}

// Selects which chords to print at the end of the song.
// Note that the type of diagram (strings, keyboard) is determined
// by the value of "instrument.type".
diagrams {

  // Shows selected or all chord diagrams at end.
  // "all": shows all chords
  // "user": shows user defined chords only
  // "none": suppresses chords from being printed
  show : all

  // Sorts the diagrams by key. Default is order of appearance.
  sorted : false

  // Chords (names) that will not generate diagrams, e.g. if they
  // are considered trivial.
  suppress : []
}

// Format for error messages.
diagnostics.format : '"%f", line %n, %m\n\t%l'

// Tables of contents.
// An array of hashes each describing one table of contents.
contents : [
  {
  
    // The metadata for this toc. One or two items.
    fields : [ songindex ]
  
    // The label (title) for this toc.
    label : "Table of Contents"
  
    // The format for the toc lines.
    line : "%{title}"
  
    // The format for the page numbers in the toc.
    pageno : "%{page}"
  
    // For future use.
    fold : false
  
    // Omit this toc.
    omit : false
  
    // Template song for the toc.
    template : stdtoc
  }
  {
  
    // The metadata for this toc. One or two items.
    fields : [ sorttitle artist ]
  
    // The label (title) for this toc.
    label : "Contents by Title"
  
    // The format for the toc lines.
    line : "%{title}%{artist| - %{}}"
  
    // The format for the page numbers in the toc.
    pageno : "%{page}"
  
    // For future use.
    fold : false
  
    // Omit this toc.
    omit : false
  
    // Template song for the toc.
    template : stdtoc
  }
  {
  
    // The metadata for this toc. One or two items.
    fields : [ artist sorttitle ]
  
    // The label (title) for this toc.
    label : "Contents by Artist"
  
    // The format for the toc lines.
    line : "%{artist|%{} - }%{title}"
  
    // The format for the page numbers in the toc.
    pageno : "%{page}"
  
    // For future use.
    fold : false
  
    // Omit this toc.
    omit : true
  
    // Template song for the toc.
    template : stdtoc
  }
]

// Table of Contents (obsolete, do not use).
toc {
  title : "Table of Contents"
  line  : "%{title}"
  order : page
}

// Delegates.
// Basically a delegate is a section {start_of_XXX} which content is
// collected and handled later by the delegate module.
// Each delegate has at least the following fields:
// "type": "image", "none" or "omit".
//   type = "none" treats the section as a generic section,
//   type = "omit" ignores the section
// "module": the name of the module that implements the delegate
// "handler": the entry point in the module.
delegates {

  // Embedding ABC.
  abc {
    type       : image
    module     : ABC

    // Default handler "abc2svg" uses program (if set),
    // otherwise embedded QuickJS or external QuickJS.
    // Handler "quickjs_xs" uses embedded QuickJS only.
    // Handler "quickjs_qjs" uses external QuickJS only.
    // Handler "quickjs" uses internal or external QuickJS.
    handler : abc2svg
    program    : ""

    // No longer used -- ./default.abc will be used if program tool.
    config : default
    preamble   : [
      "%%textfont pdf.fonts.text"
      "%%vocalfont pdf.fonts.text"
      "%%gchordfont pdf.fonts.chord"
    ]
    preprocess.abc : []
  }

  // Embedding Lilypond.
  ly {
    type     : image
    module   : Lilypond
    handler  : ly2svg
    config   : default

    // The preamble is a list of lines inserted before the lilipond data,
    // This is a good place to set the version and global customizations.
    preamble : [
      '\\version "2.21.0"'
      "\\header { tagline = ##f }"
    ]
  }

  // Embedding SVG.
  svg {
    type    : image
    module  : SVG
    handler : svg2svg
  }

  // Embedding textblock.
  textblock {
    type    : image
    module  : TextBlock
    handler : txt2xform
  }
}

// Settings for PDF output.
pdf {

  // Choose a PDF::API2 compatible library, or leave empty to
  // have ChordPro choose one for you.
  library : ""

  // PDF Properties. Arbitrary key/values may be added.
  // Note that the context for substitutions is the first song.
  info {

    // Document title.
    title : "%{title}"

    // Name of the author.
    author : ""

    // Document subject.
    subject : ""

    // Document keywords.
    keywords : ""
  }

  // Output paper size, e.g. "a4" or [595,842].
  papersize : a4

  // Theme
  theme {

    // Foreground colour. Usually black.
    foreground : black

    // Light foreground colour
    foreground-medium : grey70

    // Very light foreground colour
    foreground-light : grey90

    // Background colour. Usually white.
    background : none
  }

  // Distance between columns in multi-column mode.
  columnspace : 20

  // Page top marging, excluding headspace.
  margintop : 80

  // Page bottom margin, excluding footspace.
  marginbottom : 40

  // Page left margin.
  marginleft : 40

  // Page right margin.
  marginright : 40

  // Space for page titles.
  headspace : 60

  // Space for page footers.
  footspace : 20

  // Heading on first page only, add the headspace to
  // the other pages so they become larger.
  head-first-only : false

  // Baseline distances as a factor of the font size.
  spacing {

    // Spacing for page titles.
    title : 1.2

    // Spacing for lyrics.
    lyrics : 1.2

    // Spacing for chord names.
    chords : 1.2

    // Spacing for diagram chords.
    diagramchords : 1.2

    // Spacing for grid lines.
    grid : 1.2

    // Spacing for tab lines.
    tab : 1

    // Spacing for table of contents lines.
    toc : 1.4

    // Spacing for empty (blank) lines.
    // By setting this to a small value you get fine-grained control over
    // the distance between song elements by adding empty lines.
    empty : 1
  }

  // Appearance of chorus.
  chorus {

    // Indent of the chorus, not including bar.
    indent : 0

    // Appearance of side bar.
    bar {

      // Bar offset to the left of the text. Suppress when zero.
      offset : 8

      // Bar width. Suppress when zero.
      width : 1

      // Bar colour.
      color : foreground
    }

    // Label for Chorus.
    tag : Chorus

    // Appearance of chorus recall.
    recall {

      // Quote the chorus like a chorus.
      choruslike : false

      // Label for recalled chorus.
      tag : Chorus

      // Font for tag text.
      type : comment

      // Quote the chorus.
      quote : false
    }
  }

  // This opens a margin for margin labels.
  labels {

    // Margin width. Default is 0 (no margin labels).
    // "auto" will automatically reserve a margin if labels are used.
    width : auto

    // Alignment for the labels. Default is left.
    align : left

    // Alternatively, render labels as comments.
    // Values are "comment", "comment_italic" and "comment_box".
    comment : ""
  }

  // Alternative songlines with chords in a side column.
  // Value is the column position.
  chordscolumn : 0

  // Value for Capo heading when using chordscolumn.
  capoheading : "%{capo|Capo: %{}}"

  // A {titles: left} directive may conflict with customized formats.
  // Set to true to ignore the directive.
  titles-directive-ignore : false

  // Appearance of chord diagrams for string instruments.
  // A chord diagram consists of a number of cells.
  // Cell dimensions are specified by "width" and "height".
  // The horizontal number of cells depends on the number of strings.
  // The vertical number of cells is "vcells", which should
  // be 4 or larger to accommodate most chords.
  // The horizontal distance between diagrams is "hspace" cells.
  // The vertical distance is "vspace" cells.
  diagrams {

    // Diagrams for all chords of the song can be shown at the
    // "top", "bottom" or "right" side of the first page,
    // or "below" the last song line.
    show : bottom

    // Alignment for "top", "bottom" and "below".
    // Possible values are "left" (default), "right", "center" and "spread".
    align : left

    // Width of each diagram cell.
    width : 6

    // Height of each diagram cell.
    height : 6

    // The number of frets shown.
    vcells : 4

    // Thickness of the diagram lines as a fraction of 'width'.
    linewidth : 0.1

    // Thickness of the top nut, in 'linewidth'.
    nutwidth : 5

    // Horizontal space between diagrams.
    hspace : 3.95

    // Vertical space between diagrams.
    vspace : 3

    // Size of the fret dot, fraction of cell width.
    dotsize : 0.8

    // Thickness of bars, fraction of dot width.
    barwidth : 0.8

    // Show finger settings, if available.
    fingers : true
  }

  // Appearance of chord diagrams for keyboards.
  // A keyboard diagram consists of a number of keys.
  // Dimensions are specified by "width" and "height".
  // The horizontal distance between diagrams is "hspace" * "keys" * "width".
  kbdiagrams {

    // Diagrams for all chords of the song can be shown at the
    // "top", "bottom" or "right" side of the first page,
    // or "below" the last song line.
    show : bottom

    // Alignment for "top", "bottom" and "below".
    // Possible values are "left" (default), "right", "center" and "spread".
    align : left

    // Width of a single (white) key.
    width : 4

    // Height of the diagram.
    height : 20

    // The number of white keys shown.
    keys : 14

    // The leftmost white key. Must be "C" or "F".
    base : C

    // Thickness of the diagram lines as a fraction of "width".
    linewidth : 0.1

    // Color of the 'pressed' keys.
    pressed : foreground-medium

    // Horizontal space between diagrams.
    hspace : 3.95

    // Vertical space between diagrams.
    vspace : 0.3
  }

  // Grid section lines.
  // Suppress when "show" is false, e.g. for singers.
  // The width and colour of the cell bar lines can be specified.
  // Enable by setting the width to the desired width.
  grids {
    cellbar {

      // Width of the cell bar.
      width : 0

      // Colour of the cell bar.
      color : foreground-medium
    }

    // Show grid context in output.
    show : true

    // Colour of special symbols.
    symbols.color : blue

    // Properties of the volta.
    volta {

      // Volta span (fraction of measure).
      span : 0.7

      // Colour of the volta.
      color : blue
    }
  }

  // Even/odd pages (1), odd/even (-1) or odd (0).
  even-odd-pages : 1

  // Align songs to even/odd pages. When greater than 1, force alignment.
  pagealign-songs : 1

  // How to reorder pages.
  // Sort pages by "title", "subtitle", "2page", "compact", "desc".
  // "sort-pages" is a comma separated list of the options above.
  // title  : sort pages alphabetically by title.
  // subtitle : sort pages alphabetically by subtitle. If this is
  //          used together with title, only title is used.
  // 2page :  make sure songs with even pages are placed on even
  //          pages, so most. if not all, of the song is visible
  //          in a normal book without needing to turn a page.
  //          A blank page is added to align.
  // compact: implies 2page - instead of adding a blank page,
  //          an odd-paged song is moved in front of this song to achieve
  //          even page alignment.
  //          Note: this option requires extra processing time since
  //          the songbook has to be processed twice.
  // desc :   modifier to sort descending.
  sort-pages : ""

  // PDF file to add as front matter.
  front-matter : ""

  // PDF file to add as back matter.
  back-matter : ""

  // Formats.
  // Pages have two title elements and one footer element. They also
  // can have a page of an existing PDF file as underlay (background).
  // Topmost is "title". It uses the "title" font as defined further below.
  // Second is "subtitle". It uses the "subtitle" font.
  // The "footer" uses the "footer" font.
  // All elements can have three fields, that are placed to the left side,
  // centered, and right side of the page.
  // The contents of all fields is defined below. You can use metadata
  // items in the fields as shown. By default, the "title" element shows the
  // value of metadata item "title", centered on the page. Likewise
  // "subtitle".
  // NOTE: The "title" and "subtitle" page elements have the same names
  // as the default metadata values which may be confusing. To show
  // metadata item, e.g. "artist", add its value to one of the
  // title/subtitle fields. Don't try to add an artist page element.
  // 
  // The left, center and right parts are for odd pages.
  // On even pages, the left and right parts are swapped.
  // It is possible to define distinct even page formats with "default-even",
  // "title-even" and "first-even".
  //    
  // When a background document is specified, with odd/even printing,
  // the 1st background page is used for left pages and
  // the next page (if it exists) for right pages.
  // For even/odd printing, the order is reversed.
  formats {

    // By default, a page has:
    default {

      // Three-part title format specification, left, center, right.
      title : [ "" "" "" ]
      subtitle : [ "" "" "" ]
      footer : [ "%{title}" "" "%{page}" ]

      // Background page.
      background : ""
    }

    // The first page of a song has:
    title {

      // Three-part title format specification, left, center, right.
      title : [ "" "%{title}" "" ]
      subtitle : [ "" "%{subtitle}" "" ]
      footer : [ "" "" "%{page}" ]

      // Background page.
      background : ""
    }

    // The very first output page is slightly different:
    first {

      // Three-part title format specification, left, center, right.
      footer : [ "" "" "" ]

      // Background page.
      background : ""
    }

      // Filler pages (for alignment) are empty by default.
    filler {

      title : [ "" "" "" ]
      subtitle : [ "" "" "" ]
      footer : [ "" "" "" ]

      // Background page.
      background : ""
    }
  }

  // Split marker for syllables that are smaller than chord width.
  // split-marker is a 3-part array: "start", "repeat", and "final".
  // "final" is always printed, last.
  // "start" is printed if there is enough room.
  // "repeat" is printed repeatedly to fill the rest.
  // If split-marker is a single string, this is "start".
  // All elements may be left empty strings.
  split-marker : [ "" "" "" ]

  // Font families and properties.
  // "fontconfig" maps members of font families to physical fonts.
  // Optionally, additional properties of the fonts can be specified.
  // Physical fonts can be the names of TrueType/OpenType fonts,
  // or names of built-in fonts (corefonts).
  // Relative filenames are looked up in the fontdir.
  // For example:
  // "fontdir" : [ "/usr/share/fonts/liberation", "/home/me/fonts" ]
  fontdir : []

  // Experimental: Remap corefonts to real truetype fonts.
  // This requires a set of truetype fonts to be available in the
  // fontdir under a well-defined name. See the docs.
  // Fontsets currenly supported are "free" for the GNU Free Fonts,
  // and "tex" for the Tex Gyre fonts.
  // Value "false" inhibits remapping.
  // Value "null" will have ChordPro look for the fonts itself.
  corefonts.remap : null
    
  // The font families.
  fontconfig {
    serif {
      ""         : Times-Roman
      bold       : Times-Bold
      italic     : Times-Italic
      bolditalic : Times-BoldItalic
    }
    times {
      ""         : Times-Roman
      bold       : Times-Bold
      italic     : Times-Italic
      bolditalic : Times-BoldItalic
    }
    helvetica {
      ""          : Helvetica
      bold        : Helvetica-Bold
      oblique     : Helvetica-Oblique
      boldoblique : Helvetica-BoldOblique
    }
    "sans, sans-serif" {
      ""         : Helvetica
      bold       : Helvetica-Bold
      italic     : Helvetica-Oblique
      bolditalic : Helvetica-BoldOblique
    }
    courier {
      ""         : Courier
      bold       : Courier-Bold
      italic     : Courier-Oblique
      bolditalic : Courier-BoldOblique
    }
    "mono, monospace" {
      ""         : Courier
      bold       : Courier-Bold
      italic     : Courier-Oblique
      bolditalic : Courier-BoldOblique
    }
    dingbats.        : ZapfDingbats
  }

  // "fonts" maps output elements to fonts as defined in "fontconfig".
  // The elements can have a background colour associated.
  // Colours are "#RRGGBB" or predefined names like "black", "white",
  // and lots of others.
  // NOTE: In the built-in config we use only "name" since that can
  // be overruled with user settings.
  // 
  // Some element mappings can be specified, but need not since
  // they default to other elements.
  // subtitle       --> text
  // chorus         --> text
  // comment        --> text
  // comment_italic --> chord
  // comment_box    --> chord
  // annotation     --> chord
  // toc            --> text
  // grid           --> chord
  // grid_margin    --> comment
  // footer         --> subtitle @ 60%
  // empty          --> text
  // diagram        --> comment
  // diagram_base   --> text (but at a small size)
  fonts {

    // Font for typesetting titles.
    title : "Times-Bold 14"

    // Font for typesetting lyrics.
    text : "Times-Roman 12"

    // Font for typesetting chord names.
    chord : "Helvetica-Oblique 10"

    // Font for numbered chord dots.
    chordfingers {
      file        : ChordProSymbols.ttf

      // Colour specification.
      numbercolor : background
    }

    // Font for typesetting comment text.
    comment {
      name       : Helvetica
      size       : 12

      // Colour specification.
      background : foreground-light
    }

    // Font for typesetting italised comment text.
    comment_italic : "Helvetica-Oblique 12"

    // Font for typesetting boxed comment text.
    comment_box {
      name  : Helvetica
      size  : 12
      frame : 1
    }

    // Font for typesetting tabs.
    tab : "Courier 10"

    // Font for typesetting the table of contents.
    toc : "Times-Roman 11"

    // Font for typesetting grids.
    grid : "Helvetica 10"
  }

  // PDF outlines (index) can be used in most PDF viewers
  // for quick navigation.
  outlines : [
    {
    
      // Primary and (optional) secondary fields.
      fields : [ sorttitle artist ]
    
      // Title, omitted if there's only one outline.
      label : "By Title"
    
      // The format for the outline entries.
      line : "%{title}%{artist| - %{}}"
    
      // Initial display is collapsed.
      collapse : false
    
      // Make letter level if more entries than this value.
      letter : 5
    
      // For future use.
      fold : false
    }
    {
    
      // Primary and (optional) secondary fields.
      fields : [ artist sorttitle ]
    
      // Title, omitted if there's only one outline.
      label : "By Artist"
    
      // The format for the outline entries.
      line : "%{artist|%{} - }%{title}"
    
      // Initial display is collapsed.
      collapse : false
    
      // Make letter level if more entries than this value.
      letter : 5
    
      // For future use.
      fold : false
    }
  ]

  // Show the page layout structure.
  // This is mainly for design and debugging.
  showlayout : false

  // CSV generation for MobileSheetsPro. May need adaptation for other tools.
  // Note that the resultant file will conform to RFC 4180.
  // 
  // Add "omit" : true to omit a field; to add fields with fixed
  // values, use "value". See the entry with name "my_field".
  csv {

    // The fields for the CSV.
    fields : [
      { name : title         meta : title      }
      { name : pages         meta : pagerange  }
      { name : "sort title"  meta : sorttitle  }
      { name : artists       meta : artist     }
      { name : composers     meta : composer   }
      { name : collections   meta : collection }
      { name : keys          meta : key_actual }
      { name : years         meta : year       }
      { name : my_field     value : text       omit  : true}
    ]

    // Separator to join field values.
    separator : ;

    // Separator to join meta values.
    vseparator : |

    // Restrict CSV to song pages only (do not include matter pages)
    songsonly : true
  }
}

// Settings for ChordPro (output) backend.
chordpro {

  // Appearance of chorus recall.
  // Default: print the tag using the type.
  // Alternatively quote the lines of the preceding chorus.
  // If no tag+type or quote: use {chorus}.
  // Note: Variant 'msp' always uses {chorus}.
  chorus.recall {
    tag   : ""
    type  : ""
    quote : false
  }

  // Retain comments in the output.
  comments : retain
}

// Settings for HTML output.
// Styles for display and printing.
html.styles {
  display : chordpro.css
  print   : chordpro_print.css
}

// Settings for LaTeX backend.
latex {

  // Include paths for templates.
  template_include_path : []

  // Templates for LaTeX generation.
  templates {

    // Master template to render the songbook.
    songbook : songbook.tt

    // Helper template to render comments.
    comment : comment.tt

    // Helper template to render images.
    image : image.tt
  }
}

// Settings for Text (output) backend.
// See the ChordPro backend for details.
text.chorus.recall {
  tag   : ""
  type  : ""
  quote : false
}

// Settings for A2Crd (input) frontend.
a2crd {

  // Treat leading lyrics lines as title/subtitle lines.
  infer-titles : true

  // Analysis strategy.
  classifier : pct_chords

  // Tab stop width for tab expansion. Set to zero to disable.
  tabstop : 8
}

// Settings for the parser/preprocessor.
// For selected lines, you can specify a series of 
// { "target" : "xxx", "replace" : "yyy" }
// Every occurrence of "xxx" will be replaced by "yyy".
// Use "pattern" instead of "target" for regular expression replacement.
// Use wisely.
parser.preprocess {
  all       : []
  directive : []
  songline  : []
}

// Miscellaneous debug settings.
debug {
  runtimeinfo : 1
  a2crd       : 0
  assets      : 0
  chords      : 0
  config      : 0
  echo        : 0
  fonts       : 0
  images      : 0
  layout      : 0
  meta        : 0
  mma         : 0
  paths       : 0
  pp          : 0
  spacing     : 0
  song        : 0
  songfull    : 0
  ops         : 0
  csv         : 0
  abc         : 0
  ly          : 0
  svg         : 0
  txtblk      : 0
  x1          : 0
  x2          : 0
  x3          : 0
}