=head1 ChordPro Default Configuration

=encoding UTF8

    // Configuration for ChordPro
    // 
    // This is a really relaxed JSON document, see
    // https://metacpan.org/pod/JSON::Relaxed#REALLY-RELAXED-EXTENSIONS
    
    // For GUI.
    config {
    
        // Type of config: config, style, style_mod, instrument, task...
        type : config
    
        // Title for menus, choices, if applicable.
        title : ChordPro
    
        // Helpful descriptive text.
        description : "Main ChordPro config."
    
        // Exclusive control.
        // If multiple configs have the same exclude_id, only one will be used.
        exclude_id: false
    
        // True if this is the default config for a specific type.
        // Do not use unless you know what you are doing!
        default: true
    }
    
    // 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
    
        // Deprecated, Do not use.
        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
    
        // Substitute delta for maj7 in chord names.
        // Will fallback to the ChordProSymbols font if the selected chord font
        // doesn't have the glyphs.
        maj7delta : 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
            subtitle
            album
            arranger
            artist
            capo
            composer
            copyright
            duration
            key
            lyricist
            sortartist
            sorttitle
            tag
            tempo
            time
            year
        ]
    
        // 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.081"
    
    // 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 : [
        {
    
            // An identifying name for this table of contents.
            name : table_of_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
        }
        {
    
            // An identifying name for this table of contents.
            name : contents_by_title
    
            // The metadata for this toc. One or two items.
            fields : [ title 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
        }
        {
    
            // An identifying name for this table of contents.
            name : contents_by_artist
    
            // The metadata for this toc. One or two items.
            fields : [ artist title ]
    
            // The label (title) for this toc.
            label : "Contents by Artist"
    
            // A break value to group toc entries with.
            break : "%{sortartist|%{}|%{artist}}"
    
            // 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 : true
    
            // Template song for the toc.
            template : stdtoc
        }
    ]
    
    // Table of Contents (obsolete, do not use).
    toc {
        title : "Table of Contents"
        line  : "%{title}"
        order : page
    }
    
    // Grid strum overrides.
    gridstrum.symbols {}
    
    // 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"
            ]
    
            // Obsolete. Please use parser.preprocess.env-... instead.
            preprocess.abc : []
        }
    
        // Embedding Lilypond.
        ly {
            type       : image
            module     : Lilypond
            handler    : ly2svg
            program    : ""
            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 }"
            ]
    
            // Obsolete. Please use parser.preprocess.env-... instead.
            preprocess.ly : []
        }
    
        // 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
    
        // For future use.
        page_layout : false
    
        // 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 margin, 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
    
            // Style of bars, line or arc.
            barstyle : line
    
            // Thickness of bars, fraction of dot width.
            barwidth : 0.8
    
            // Show finger settings, if available.
            fingers : true
    
            // Text to show the fret base, if greater than one.
            // "%s" will be replaced by the actual fret base number.
            fretbasetext : %s
    
            // Position for the fret base, left (default) or right.
            fretbaseposition : left
        }
    
        // 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
    
    	// Stretch the bar lines vertically.
    	stretch : 0.825
    
            // 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
            }
        }
    
        // New style page control.
        songbook {
    
    	// Dual (odd/even) pages when set to true.
    	// False means all pages will be the same (odd, right).
    	// With dual pages, all the parts of the songbook (covers,
    	// tables of contents, etc.) are always aligned to a right page.
    	dual-pages : true
    
    	// With dual pages, align individual tables of content
    	// to right pages by inserting a blank filler page.
    	// Values are true, false, or "song". In the latter case the
    	// pagealign settings for songs are used for the tables of contents.
    	align-tocs : true
    
    	// With dual pages, a true value aligns songs to right pages
    	// by inserting a blank filler page if necessary.
    	// If false, no alignment takes place, all pages follow
    	// each other.
    	align-songs : true
    
    	// If true, all songs will start on left pages instead of right pages.
    	align-songs-spread : false
    
    	// If true, the fill pages will have headings and footers
    	// as if they were part of the song.
    	align-songs-extend : false
    
    	// Sort songs by "title" or "subtitle".
    	// title    : sort pages alphabetically by title.
    	// subtitle : sort pages alphabetically by subtitle. If this is
    	//            used together with title, only title is used.
    	// Put a minus sign before title and/or subtitle to obtain
    	// descending order.
    	sort-songs : false
    
    	// If true, the order of the songs is adjusted to make the
    	// songbook as compact as possible, while each of the songs
    	// require minimal page turns.
    	// Note: this option requires extra processing time since
    	// the songbook has to be processed twice.
    	compact-songs : false
    
    	// PDF file to add as cover page(s).
    	cover : false
    
    	// PDF file to add as front matter.
    	front-matter : false
    
    	// PDF file to add as back matter.
    	back-matter : false
        }
    
        // Legacy settings. These will be converted to new style page controls.
        // However, if a config contains any new style page controls they
        // will all be ignoredd.
        /*
        even-odd-pages  : true
        pagealign-songs : true
        sort-pages :      false
        front-matter :    false
        back-matter :     false
        */
    
        // 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 : [ "" "" "" ]
    
                // Three-part title format specification, left, center, right.
                subtitle : [ "" "" "" ]
    
                // Three-part title format specification, left, center, right.
                footer : [ "%{title}" "" "%{page}" ]
    
                // Background page.
                background : ""
            }
    
            // The first page of a song has:
            title {
    
                // Three-part title format specification, left, center, right.
                title : [ "" "%{title}" "" ]
    
                // Three-part title format specification, left, center, right.
                subtitle : [ "" "%{subtitle}" "" ]
    
                // Three-part title format specification, left, center, right.
                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.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
            }
            "muse, musejazztext" {
                ""         : MuseJazzText.otf
                bold       : MuseJazzText.otf
                italic     : MuseJazzText.otf
                bolditalic : MuseJazzText.otf
            }
            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 numbers in chord diagram dots.
            // Color is for the numbers.
            // Numbercolor is for the dots.
            // Size doesn't matter unless diagrams.fingers = below.
            chordfingers : "sans; numbercolor=background"
    
            // Font for typesetting comment text.
            comment : "Helvetica 12; background=foreground-light"
    
            // Font for typesetting italised comment text.
            comment_italic : "Helvetica-Oblique 12"
    
            // Font for typesetting boxed comment text.
            comment_box : "Helvetica 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"
    
            // Font for typesetting gridstrum symbols.
            // You can set size and colours, but you cannot change the font.
            gridstrum : "ChordProSymbols 13"
    
            // Font for typesetting grilles.
            grille : "Helvetica 10"
        }
    
        // PDF outlines (index) can be used in most PDF viewers
        // for quick navigation.
        outlines : [
            {
    
                // An identifying name for this outline.
                name : by_title
    
                // 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
            }
            {
    
                // An identifying name for this outline.
                name : by_artist
    
                // 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
            }
            {
    
                // An identifying name for this outline.
                name : bookmarks
    
                // Primary and (optional) secondary fields.
                fields : [ bookmark ]
    
                // Omit this outline.
                omit : true
    
                // Title, omitted if there's only one outline.
                label : Bookmarks
    
                // The format for the outline entries.
                line : "%{bookmark}"
    
                // Initial display is collapsed.
                collapse : true
    
                // Make letter level if more entries than this value.
                letter : 0
    
                // 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 markup processor.
    // Shortcodes allow user defined markup, e.g. <foo>...</foo>.
    // markup.shortcode {
    //    heavy :  "weight='bold' size='large'"
    // }
    // Each occurrence of <heavy>...</heavy> will be replaced by
    // <span weight='bold' size='large'>...</span>.
    markup.shortcodes {}
    
    // Settings for the parser.
    parser {
    
        // For the exceptional case you need brackets [] in your lyrics or annotations.
        // These characters are replaced by normal brackets **after** chord analysis.
        // E.g. parser.altbrackets: "«»"
        // Use wisely. Better still, don't use this.
        altbrackets : null
    
        // 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.
        preprocess {
            all       : []
            directive : []
            songline  : []
        }
    }
    
    // Miscellaneous debug settings.
    debug {
        runtimeinfo : 1
        a2crd       : 0
        abc         : 0
        assets      : 0
        chords      : 0
        config      : 0
        csv         : 0
        echo        : 0
        fit         : 0
        fonts       : 0
        images      : 0
        layout      : 0
        ly          : 0
        meta        : 0
        mma         : 0
        ops         : 0
        pages       : 0
        pagectrl    : 0
        paths       : 0
        pgm         : 0
        pp          : 0
        song        : 0
        songfull    : 0
        spacing     : 0
        svg         : 0
        txtblk      : 0
        x1          : 0
        x2          : 0
        x3          : 0
    }
