A JavaScript library for parsing and formatting chord sheets
Contents
ChordSheetJS
is on npm, to install run:
npm install chordsheetjs
Load with import
:
import ChordSheetJS from 'chordsheetjs';
or require()
:
var ChordSheetJS = require('chordsheetjs').default;
If you're not using a build tool, you can download and use the bundle.js
from the
latest release:
<script src="https://github.com/martijnversluis/ChordSheetJS/raw/master/bundle.js"></script>
<script>
// ChordSheetJS is available in global namespace now
const parser = new ChordSheetJS.ChordProParser();
</script>
const chordSheet = `
Am C/G F C
Let it be, let it be, let it be, let it be
C G F C/E Dm C
Whisper words of wisdom, let it be`.substring(1);
const parser = new ChordSheetJS.ChordsOverWordsParser();
const song = parser.parse(chordSheet);
const chordSheet = `
[Chorus]
Am C/G F C
Let it be, let it be, let it be, let it be
C G F C/E Dm C
Whisper words of wisdom, let it be`.substring(1);
const parser = new ChordSheetJS.UltimateGuitarParser();
const song = parser.parse(chordSheet);
const chordSheet = `
{title: Let it be}
{subtitle: ChordSheetJS example version}
{start_of_chorus: Chorus}
Let it [Am]be, let it [C/G]be, let it [F]be, let it [C]be
[C]Whisper words of [G]wisdom, let it [F]be [C/E] [Dm] [C]
{end_of_chorus}`.substring(1);
const parser = new ChordSheetJS.ChordProParser();
const song = parser.parse(chordSheet);
const formatter = new ChordSheetJS.TextFormatter();
const disp = formatter.format(song);
const formatter = new ChordSheetJS.HtmlTableFormatter();
const disp = formatter.format(song);
const formatter = new ChordSheetJS.HtmlDivFormatter();
const disp = formatter.format(song);
const formatter = new ChordSheetJS.ChordProFormatter();
const disp = formatter.format(song);
Chord sheets (Song
s) can be serialized to plain JavaScript objects, which can be converted to JSON, XML etc by
third-party libraries. The serialized object can also be deserialized back into a Song
.
const serializedSong = new ChordSheetSerializer().serialize(song);
const deserialized = new ChordSheetSerializer().deserialize(serializedSong);
The HTML formatters (HtmlTableFormatter and HtmlDivFormatter) can provide basic CSS to help with styling the output:
HtmlTableFormatter.cssString();
// .paragraph {
// margin-bottom: 1em;
// }
HtmlTableFormatter.cssString('.chordSheetViewer');
// .chordSheetViewer .paragraph {
// margin-bottom: 1em;
// }
HtmlTableFormatter.cssObject();
// '.paragraph': {
// marginBottom: '1em'
// }
import { Chord } from 'chordsheetjs';
const chord = Chord.parse('Ebsus4/Bb');
Parse numeric chords (Nashville system):
const chord = Chord.parse('b1sus4/#3');
Use #toString() to convert the chord to a chord string (eg Dsus/F#)
const chord = Chord.parse('Ebsus4/Bb');
chord.toString(); // --> "Ebsus4/Bb"
var chord2 = chord.clone();
Normalizes keys B#, E#, Cb and Fb to C, F, B and E
const chord = Chord.parse('E#/B#');
normalizedChord = chord.normalize();
normalizedChord.toString(); // --> "F/C"
Deprecated
Convert # to b and vice versa
const chord = parseChord('Eb/Bb');
const chord2 = chord.switchModifier();
chord2.toString(); // --> "D#/A#"
Set the chord to a specific modifier (# or b)
const chord = Chord.parse('Eb/Bb');
const chord2 = chord.useModifier('#');
chord2.toString(); // --> "D#/A#"
const chord = Chord.parse('Eb/Bb');
const chord2 = chord.useModifier('b');
chord2.toString(); // --> "Eb/Bb"
const chord = Chord.parse('Eb/Bb');
const chord2 = chord.transposeUp();
chord2.toString(); // -> "E/B"
const chord = Chord.parse('Eb/Bb');
const chord2 = chord.transposeDown();
chord2.toString(); // -> "D/A"
const chord = Chord.parse('C/E');
const chord2 = chord.transpose(4);
chord2.toString(); // -> "E/G#"
const chord = Chord.parse('C/E');
const chord2 = chord.transpose(-4);
chord2.toString(); // -> "Ab/C"
const numericChord = Chord.parse('2/4');
const chordSymbol = numericChord.toChordSymbol('E');
chordSymbol.toString(); // -> "F#/A"
All directives are parsed and are added to Song.metadata
. The list below indicates whether formatters actually
use those to change the generated output.
:heavy_check_mark: = supported
:clock2: = will be supported in a future version
:heavy_multiplication_x: = currently no plans to support it in the near future
Directive | Support |
---|---|
title (short: t) | :heavy_check_mark: |
subtitle | :heavy_check_mark: |
artist | :heavy_check_mark: |
composer | :heavy_check_mark: |
lyricist | :heavy_check_mark: |
copyright | :heavy_check_mark: |
album | :heavy_check_mark: |
year | :heavy_check_mark: |
key | :heavy_check_mark: |
time | :heavy_check_mark: |
tempo | :heavy_check_mark: |
duration | :heavy_check_mark: |
capo | :heavy_check_mark: |
meta | :heavy_check_mark: |
Directive | Support |
---|---|
comment (short: c) | :heavy_check_mark: |
comment_italic (short: ci) | :heavy_multiplication_x: |
comment_box (short: cb) | :heavy_multiplication_x: |
chorus | :heavy_multiplication_x: |
image | :heavy_multiplication_x: |
Directive | Support |
---|---|
start_of_chorus (short: soc) | :heavy_check_mark: |
end_of_chorus (short: eoc) | :heavy_check_mark: |
start_of_verse | :heavy_check_mark: |
end_of_verse | :heavy_check_mark: |
start_of_tab (short: sot) | :heavy_check_mark: |
end_of_tab (short: eot) | :heavy_check_mark: |
start_of_grid | :heavy_check_mark: |
end_of_grid | :heavy_check_mark: |
Directive | Support |
---|---|
define | :heavy_check_mark: |
chord | :heavy_check_mark: |
Directive | Support |
---|---|
textfont | :heavy_check_mark: |
textsize | :heavy_check_mark: |
textcolour | :heavy_check_mark: |
chordfont | :heavy_check_mark: |
chordsize | :heavy_check_mark: |
chordcolour | :heavy_check_mark: |
tabfont | :heavy_multiplication_x: |
tabsize | :heavy_multiplication_x: |
tabcolour | :heavy_multiplication_x: |
Directive | Support |
---|---|
new_page (short: np) | :heavy_multiplication_x: |
new_physical_page (short: npp) | :heavy_multiplication_x: |
column_break (short: cb) | :heavy_multiplication_x: |
grid (short: g) | :heavy_multiplication_x: |
no_grid (short: ng) | :heavy_multiplication_x: |
titles | :heavy_multiplication_x: |
columns (short: col) | :heavy_multiplication_x: |
Directive | Support |
---|---|
x_ | :heavy_check_mark: |
Note: all classes, methods and constants that are documented here can be considered public API and will only be subject to breaking changes between major versions.
Serializes a song into een plain object, and deserializes the serialized object back into a [Song](#Song)
Represents a chord with the corresponding (partial) lyrics
Represents a comment. See https://www.chordpro.org/chordpro/chordpro-file-format-specification/#overview
Represents a line in a chord sheet, consisting of items of type ChordLyricsPair or Tag
Stores song metadata. Properties can be accessed using the get() method:
const metadata = new Metadata({ author: 'John' }); metadata.get('author') // => 'John'
See [get](#Metadata+get)
Represents a paragraph of lines in a chord sheet
Represents a song in a chord sheet. Currently a chord sheet can only have one song.
Represents a tag/directive. See https://www.chordpro.org/chordpro/chordpro-directives/
Represents a Chord, consisting of a root, suffix (quality) and bass
Formats a song into a ChordPro chord sheet
Formats a song into a plain text chord sheet
Base class for all formatters, taking care of receiving a configuration wrapping that inside a Configuration object
Formats a song into HTML. It uses DIVs to align lyrics with chords, which makes it useful for responsive web pages.
Acts as a base class for HTML formatters
Formats a song into HTML. It uses TABLEs to align lyrics with chords, which makes the HTML for things like PDF conversion.
Formats a song into a plain text chord sheet
Represents a key, such as Eb (symbol), #3 (numeric) or VII (numeral).
The only function considered public API is Key.distance
Parses a ChordPro chord sheet
Parses a normal chord sheet
ChordSheetParser is deprecated, please use ChordsOverWordsParser.
ChordsOverWordsParser aims to support any kind of chord, whereas ChordSheetParser lacks support for many variations. Besides that, some chordpro feature have been ported back to ChordsOverWordsParser, which adds some interesting functionality.
Parses a chords over words sheet into a song
It support "regular" chord sheets:
Am C/G F C
Let it be, let it be, let it be, let it be
C G F C/E Dm C
Whisper words of wisdom, let it be
Additionally, some chordpro features have been "ported back". For example, you can use chordpro directives:
{title: Let it be}
{key: C}
Chorus 1:
Am
Let it be
For convenience, you can leave out the brackets:
title: Let it be
Chorus 1:
Am
Let it be
You can even use a markdown style frontmatter separator to separate the header from the song:
title: Let it be
key: C
---
Chorus 1:
Am C/G F C
Let it be, let it be, let it be, let it be
C G F C/E Dm C
Whisper words of wisdom, let it be
ChordsOverWordsParser
is the better version of ChordSheetParser
, which is deprecated.
Represents a parser warning, currently only used by ChordProParser.
Parses an Ultimate Guitar chord sheet with metadata Inherits from [ChordSheetParser](#ChordSheetParser)
string
Album meta directive. See https://www.chordpro.org/chordpro/directives-album/
string
Arranger meta directive. See https://chordpro.org/chordpro/directives-arranger/
string
Artist meta directive. See https://www.chordpro.org/chordpro/directives-artist/
string
Capo meta directive. See https://www.chordpro.org/chordpro/directives-capo/
string
Comment directive. See https://www.chordpro.org/chordpro/directives-comment/
string
Composer meta directive. See https://www.chordpro.org/chordpro/directives-composer/
string
Copyright meta directive. See https://www.chordpro.org/chordpro/directives-copyright/
string
Duration meta directive. See https://www.chordpro.org/chordpro/directives-duration/
string
End of ABC music notation section See https://chordpro.org/chordpro/directives-env_abc/
string
End of bridge directive. See https://chordpro.org/chordpro/directives-env_bridge/
string
End of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/
string
End of grid directive. See https://www.chordpro.org/chordpro/directives-env_grid/
string
End of Lilypond music notation section See https://chordpro.org/chordpro/directives-env_ly/
string
End of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/
string
End of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/
string
Key meta directive. See https://www.chordpro.org/chordpro/directives-key/
string
_Key meta directive. Reflects the key as transposed by the capo value See https://www.chordpro.org/chordpro/directives-key/
string
Lyricist meta directive. See https://www.chordpro.org/chordpro/directives-lyricist/
string
Sorttitle meta directive. See https://chordpro.org/chordpro/directives-sorttitle/
string
Start of ABC music notation section See https://chordpro.org/chordpro/directives-env_abc/
string
Start of bridge directive. See https://chordpro.org/chordpro/directives-env_bridge/
string
Start of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/
string
Start of grid directive. See https://www.chordpro.org/chordpro/directives-env_grid/
string
Start of Lilypond music notation section See https://chordpro.org/chordpro/directives-env_ly/
string
Start of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/
string
Start of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/
string
Subtitle meta directive. See https://www.chordpro.org/chordpro/directives-subtitle/
string
Tempo meta directive. See https://www.chordpro.org/chordpro/directives-tempo/
string
Time meta directive. See https://www.chordpro.org/chordpro/directives-time/
string
Title meta directive. See https://www.chordpro.org/chordpro/directives-title/
string
Transpose meta directive. See: https://www.chordpro.org/chordpro/directives-transpose/
string
New Key meta directive. See: https://github.com/PraiseCharts/ChordChartJS/issues/53
string
Year meta directive. See https://www.chordpro.org/chordpro/directives-year/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/
string
Chorus directive. Support repeating an earlier defined section. See https://www.chordpro.org/chordpro/directives-env_chorus/
string
Chord type directive. Determines the type of chords used in the rendered chord sheet. Possible values are 'solfege', 'symbol', 'numeral' and 'number'
string
Used to mark a paragraph as bridge
string
Used to mark a paragraph as chorus
string
Used to mark a paragraph as grid
string
Used to mark a paragraph as containing lines with both verse and chorus type
string
Used to mark a paragraph as not containing a line marked with a type
string
Used to mark a paragraph as tab
string
Used to mark a paragraph as verse
string
Used to mark a section as Lilypond notation
string
Used to mark a section as ABC music notation
string
Generates basic CSS, scoped within the provided selector, to use with output generated by [HtmlTableFormatter](#HtmlTableFormatter)
string
Generates basic CSS, scoped within the provided selector, to use with output generated by [HtmlTableFormatter](#HtmlTableFormatter)
Object.<string, string>
Returns applicable capos for the provided key
Array.<string>
Returns applicable keys to transpose to from the provided key
Serializes a song into een plain object, and deserializes the serialized object back into a [Song](#Song)
Kind: global class
Serializes the chord sheet to a plain object, which can be converted to any format like JSON, XML etc Can be deserialized using [deserialize](deserialize)
Kind: instance method of ChordSheetSerializer
Returns:
object A plain JS object containing all chord sheet data
Song
Deserializes a song that has been serialized using [serialize](serialize)
Kind: instance method of ChordSheetSerializer
Returns: Song
-
The deserialized song
Param | Type | Description |
---|---|---|
serializedSong | object |
The serialized song |
Represents a chord with the corresponding (partial) lyrics
Kind: global class
string
string
string
boolean
ChordLyricsPair
Initialises a ChordLyricsPair
Param | Type | Default | Description |
---|---|---|---|
chords | string |
The chords |
|
lyrics | string | null |
null |
The lyrics |
annotation | string | null |
null |
The annotation |
string
The chords
Kind: instance property of ChordLyricsPair
string
The lyrics
Kind: instance property of ChordLyricsPair
string
The annotation
Kind: instance property of ChordLyricsPair
boolean
Indicates whether a ChordLyricsPair should be visible in a formatted chord sheet (except for ChordPro sheets)
Kind: instance method of ChordLyricsPair
ChordLyricsPair
Returns a deep copy of the ChordLyricsPair, useful when programmatically transforming a song
Kind: instance method of ChordLyricsPair
Represents a comment. See https://www.chordpro.org/chordpro/chordpro-file-format-specification/#overview
Kind: global class
boolean
Comment
boolean
Indicates whether a Comment should be visible in a formatted chord sheet (except for ChordPro sheets)
Kind: instance method of Comment
Comment
Returns a deep copy of the Comment, useful when programmatically transforming a song
Kind: instance method of Comment
Represents a line in a chord sheet, consisting of items of type ChordLyricsPair or Tag
Kind: global class
boolean
boolean
Line
boolean
boolean
boolean
boolean
boolean
boolean
boolean
Indicates whether the line contains any items
Kind: instance method of Line
Adds an item ([ChordLyricsPair](#ChordLyricsPair) or [Tag](#Tag)) to the line
Kind: instance method of Line
Param | Type | Description |
---|---|---|
item | ChordLyricsPair | Tag |
The item to be added |
boolean
Indicates whether the line contains items that are renderable
Kind: instance method of Line
Line
Returns a deep copy of the line and all of its items
Kind: instance method of Line
boolean
Indicates whether the line type is [BRIDGE](#BRIDGE)
Kind: instance method of Line
boolean
Indicates whether the line type is [CHORUS](#CHORUS)
Kind: instance method of Line
boolean
Indicates whether the line type is [GRID](#GRID)
Kind: instance method of Line
boolean
Indicates whether the line type is [TAB](#TAB)
Kind: instance method of Line
boolean
Indicates whether the line type is [VERSE](#VERSE)
Kind: instance method of Line
boolean
Deprecated
Indicates whether the line contains items that are renderable. Please use [hasRenderableItems](hasRenderableItems)
Kind: instance method of Line
Stores song metadata. Properties can be accessed using the get() method:
const metadata = new Metadata({ author: 'John' }); metadata.get('author') // => 'John'
See [get](#Metadata+get)
Kind: global class
Array.<String>
| String
Metadata
Array.<String>
| String
Reads a metadata value by key. This method supports simple value lookup, as well as fetching single array values.
This method deprecates direct property access, eg: metadata['author']
Examples:
const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] }); metadata.get('lyricist') // => 'Pete' metadata.get('author') // => ['John', 'Mary'] metadata.get('author.1') // => 'John' metadata.get('author.2') // => 'Mary'
Using a negative index will start counting at the end of the list:
const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] }); metadata.get('author.-1') // => 'Mary' metadata.get('author.-2') // => 'John'
Kind: instance method of Metadata
Returns: Array.<String>
| String
-
the metadata value(s). If there is only one value, it will return a String, else it returns an array of strings.
Param | Description |
---|---|
prop | the property name |
Metadata
Returns a deep clone of this Metadata object
Kind: instance method of Metadata
Returns: Metadata
-
the cloned Metadata object
Represents a paragraph of lines in a chord sheet
Kind: global class
string
string
| null
string
boolean
boolean
string
Returns the paragraph contents as one string where lines are separated by newlines
Kind: instance property of Paragraph
string
| null
Returns the label of the paragraph. The label is the value of the first section delimiter tag in the first line.
Kind: instance property of Paragraph
string
Tries to determine the common type for all lines. If the types for all lines are equal, it returns that type. If not, it returns [INDETERMINATE](#INDETERMINATE)
Kind: instance property of Paragraph
boolean
Indicates whether the paragraph only contains literals. If true, [contents](contents) can be used to retrieve the paragraph contents as one string where lines are separated by newlines.
Kind: instance method of Paragraph
See: contents
boolean
Indicates whether the paragraph contains lines with renderable items.
Kind: instance method of Paragraph
See: Line.hasRenderableItems
Represents a song in a chord sheet. Currently a chord sheet can only have one song.
Kind: global class
Array.<Line>
Array.<Paragraph>
Array.<Paragraph>
Array.<Paragraph>
Song
Song
Song
Song
Song
Song
Song
Song
Song
Array.<string>
Record.<string, ChordDefinition>
Song
Creates a new {Song} instance
Param | Type | Description |
---|---|---|
metadata | Object | Metadata |
predefined metadata |
Array.<Line>
Returns the song lines, skipping the leading empty lines (empty as in not rendering any content). This is useful if you want to skip the "header lines": the lines that only contain meta data.
Kind: instance property of Song
Returns: Array.<Line>
-
The song body lines
Array.<Paragraph>
Returns the song paragraphs, skipping the paragraphs that only contain empty lines (empty as in not rendering any content)
Kind: instance property of Song
See: bodyLines
Array.<Paragraph>
The [Paragraph](#Paragraph) items of which the song consists
Kind: instance property of Song
Array.<Paragraph>
The body paragraphs of the song, with any {chorus}
tag expanded into the targeted chorus
Kind: instance property of Song
Song
Returns a deep clone of the song
Kind: instance method of Song
Returns: Song
-
The cloned song
Song
Returns a copy of the song with the key value set to the specified key. It changes:
key
in the [metadata](metadata) setkey
directiveKind: instance method of Song
Returns: Song
-
The changed song
Param | Type | Description |
---|---|---|
key | number | null |
the key. Passing
|
Song
Returns a copy of the song with the key value set to the specified capo. It changes:
capo
in the [metadata](metadata) setcapo
directiveKind: instance method of Song
Returns: Song
-
The changed song
Param | Type | Description |
---|---|---|
capo | number | null |
the capo. Passing
|
Song
Transposes the song by the specified delta. It will:
key
directiveKind: instance method of Song
Returns: Song
-
The transposed song
Param | Type | Default | Description |
---|---|---|---|
delta | number |
The number of semitones (positive or negative) to transpose with |
|
[options] | Object |
{} |
options |
[options.normalizeChordSuffix] | boolean |
false |
whether to normalize the chord suffixes after transposing |
Song
Transposes the song up by one semitone. It will:
key
directiveKind: instance method of Song
Returns: Song
-
The transposed song
Param | Type | Default | Description |
---|---|---|---|
[options] | Object |
{} |
options |
[options.normalizeChordSuffix] | boolean |
false |
whether to normalize the chord suffixes after transposing |
Song
Transposes the song down by one semitone. It will:
key
directiveKind: instance method of Song
Returns: Song
-
The transposed song
Param | Type | Default | Description |
---|---|---|---|
[options] | Object |
{} |
options |
[options.normalizeChordSuffix] | boolean |
false |
whether to normalize the chord suffixes after transposing |
Song
Returns a copy of the song with the key set to the specified key. It changes:
key
in the [metadata](metadata) setkey
directiveKind: instance method of Song
Returns: Song
-
The changed song
Param | Type | Description |
---|---|---|
newKey | string |
The new key. |
Song
Returns a copy of the song with all chords changed to the specified modifier.
Kind: instance method of Song
Returns: Song
-
the changed song
Param | Type | Description |
---|---|---|
modifier | Modifier |
the new modifier |
Returns a copy of the song with the directive value set to the specified value.
value
is null
it will act as a delete, any directive matching name
will be removed.Kind: instance method of Song
Param | Type | Description |
---|---|---|
name | string |
The directive name |
value | string | null |
The value to set, or |
Song
Change the song contents inline. Return a new [Item](Item) to replace it. Return null
to remove it.
Kind: instance method of Song
Returns: Song
-
the changed song
Param | Type | Description |
---|---|---|
func | MapItemsCallback |
the callback function |
Example
// transpose all chords:
song.mapItems((item) => {
if (item instanceof ChordLyricsPair) {
return item.transpose(2, 'D');
}
return item;
});
Array.<string>
Returns all unique chords used in the song
Kind: instance method of Song
Returns: Array.<string>
-
the chords
Record.<string, ChordDefinition>
Returns all chord definitions from the song.
Definitions are made using the {chord}
or {define}
directive.
A chord definitions overrides a previous chord definition for the exact same chord.
Kind: instance method of Song
Returns: Record.<string, ChordDefinition>
-
the chord definitions
Song
Change the song contents inline. Return a new [Line](#Line) to replace it. Return null
to remove it.
Kind: instance method of Song
Returns: Song
-
the changed song
Param | Type | Description |
---|---|---|
func | MapLinesCallback |
the callback function |
Example
// remove lines with only Tags:
song.mapLines((line) => {
if (line.items.every(item => item instanceof Tag)) {
return null;
}
return line;
});
Represents a tag/directive. See https://www.chordpro.org/chordpro/chordpro-directives/
Kind: global class
string
string
string
boolean
boolean
boolean
Tag
string
The tag full name. When the original tag used the short name, name
will return the full name.
Kind: instance property of Tag
string
The original tag name that was used to construct the tag.
Kind: instance property of Tag
string
The tag value
Kind: instance property of Tag
boolean
Checks whether the tag value is a non-empty string.
Kind: instance method of Tag
boolean
Checks whether the tag is usually rendered inline. It currently only applies to comment tags.
Kind: instance method of Tag
Check whether this tag's label (if any) should be rendered, as applicable to tags like
start_of_verse
and start_of_chorus
.
See https://chordpro.org/chordpro/directives-env_chorus/, https://chordpro.org/chordpro/directives-env_verse/,
https://chordpro.org/chordpro/directives-env_bridge/, https://chordpro.org/chordpro/directives-env_tab/
Kind: instance method of Tag
boolean
Checks whether the tag is either a standard meta tag or a custom meta directive ({x_some_name}
)
Kind: instance method of Tag
Tag
Returns a clone of the tag.
Kind: instance method of Tag
Returns: Tag
-
The cloned tag
Represents a Chord, consisting of a root, suffix (quality) and bass
Kind: global class
Chord
Chord
string
boolean
Chord
string
boolean
Chord
Chord
string
boolean
string
boolean
string
Chord
Chord
Chord
Chord
Chord
Chord
| null
Chord
Returns a deep copy of the chord
Kind: instance method of Chord
Chord
Converts the chord to a chord symbol, using the supplied key as a reference.
For example, a numeric chord #4
with reference key E
will return the chord symbol A#
.
When the chord is already a chord symbol, it will return a clone of the object.
Kind: instance method of Chord
Returns: Chord
-
the chord symbol
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a numeric or numeral. |
string
Converts the chord to a chord symbol string, using the supplied key as a reference.
For example, a numeric chord #4
with reference key E
will return the chord symbol A#
.
When the chord is already a chord symbol, it will return a string version of the chord.
Kind: instance method of Chord
Returns: string
-
the chord symbol string
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a numeric or numeral. |
boolean
Determines whether the chord is a chord symbol
Kind: instance method of Chord
Chord
Converts the chord to a chord solfege, using the supplied key as a reference.
For example, a numeric chord #4
with reference key Mi
will return the chord symbol La#
.
When the chord is already a chord solfege, it will return a clone of the object.
Kind: instance method of Chord
Returns: Chord
-
the chord solfege
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a numeric or numeral. |
string
Converts the chord to a chord solfege string, using the supplied key as a reference.
For example, a numeric chord #4
with reference key E
will return the chord solfege A#
.
When the chord is already a chord solfege, it will return a string version of the chord.
Kind: instance method of Chord
Returns: string
-
the chord solfege string
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a numeric or numeral. |
boolean
Determines whether the chord is a chord solfege
Kind: instance method of Chord
Chord
Converts the chord to a numeric chord, using the supplied key as a reference. For example, a chord symbol A# with reference key E will return the numeric chord #4.
Kind: instance method of Chord
Returns: Chord
-
the numeric chord
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a chord symbol |
Chord
Converts the chord to a numeral chord, using the supplied key as a reference. For example, a chord symbol A# with reference key E will return the numeral chord #IV.
Kind: instance method of Chord
Returns: Chord
-
the numeral chord
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a chord symbol |
string
Converts the chord to a numeral chord string, using the supplied kye as a reference. For example, a chord symbol A# with reference key E will return the numeral chord #4.
Kind: instance method of Chord
Returns: string
-
the numeral chord string
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a chord symbol |
boolean
Determines whether the chord is numeric
Kind: instance method of Chord
string
Converts the chord to a numeric chord string, using the supplied kye as a reference. For example, a chord symbol A# with reference key E will return the numeric chord #4.
Kind: instance method of Chord
Returns: string
-
the numeric chord string
Param | Type | Default | Description |
---|---|---|---|
[referenceKey] | Key | string | null |
|
the reference key. The key is required when converting a chord symbol |
boolean
Determines whether the chord is a numeral
Kind: instance method of Chord
string
Converts the chord to a string, eg Esus4/G#
or 1sus4/#3
Kind: instance method of Chord
Returns: string
-
the chord string
Param | Type | Default | Description |
---|---|---|---|
[configuration] | Object |
{} |
options |
[configuration.useUnicodeModifier] | boolean |
false |
Whether or not to use unicode modifiers. This will make |
Chord
Normalizes the chord root and bass notes:
Besides that it normalizes the suffix if normalizeSuffix
is true
.
For example, sus2
becomes 2
, sus4
becomes sus
.
All suffix normalizations can be found in src/normalize_mappings/suffix-mapping.txt
.
When the chord is minor, bass notes are normalized off of the relative major
of the root note. For example, Em/A#
becomes Em/Bb
.
Kind: instance method of Chord
Returns: Chord
-
the normalized chord
Param | Type | Default | Description |
---|---|---|---|
[key] | Key | string |
|
the key to normalize to |
[options] | Object |
{} |
options |
[options.normalizeSuffix] | boolean |
true |
whether to normalize the chord suffix after transposing |
Chord
Switches to the specified modifier
Kind: instance method of Chord
Returns: Chord
-
the new, changed chord
Param | Description |
---|---|
newModifier | the modifier to use: |
Chord
Transposes the chord up by 1 semitone. Eg. A becomes A#, Eb becomes E
Kind: instance method of Chord
Returns: Chord
-
the new, transposed chord
Chord
Transposes the chord down by 1 semitone. Eg. A# becomes A, E becomes Eb
Kind: instance method of Chord
Returns: Chord
-
the new, transposed chord
Chord
Transposes the chord by the specified number of semitones
Kind: instance method of Chord
Returns: Chord
-
the new, transposed chord
Param | Description |
---|---|
delta | de number of semitones |
Chord
| null
Tries to parse a chord string into a chord
Any leading or trailing whitespace is removed first, so a chord like \n E/G# \r
is valid.
Kind: static method of Chord
Param | Description |
---|---|
chordString | the chord string, eg |
Formats a song into a ChordPro chord sheet
string
Formats a song into a ChordPro chord sheet.
Kind: instance method of ChordProFormatter
Returns: string
-
The ChordPro string
Param | Type | Description |
---|---|---|
song | Song |
The song to be formatted |
Formats a song into a plain text chord sheet
string
Formats a song into a plain text chord sheet
Kind: instance method of ChordsOverWordsFormatter
Returns: string
-
the chord sheet
Param | Type | Description |
---|---|---|
song | Song |
The song to be formatted |
Base class for all formatters, taking care of receiving a configuration wrapping that inside a Configuration object
Instantiate
Param | Type | Default | Description |
---|---|---|---|
[configuration] | Object |
{} |
options |
[configuration.evaluate] | boolean |
false |
Whether or not to evaluate meta expressions. For more info about meta expressions, see: https://bit.ly/2SC9c2u |
[configuration.metadata] | object |
{} |
|
[configuration.metadata.separator] | string |
"\", \"" |
The separator to be used when rendering a metadata value that has multiple values. See: https://bit.ly/2SC9c2u |
[configuration.key] | Key | string |
|
The key to use for rendering. The chord sheet will be transposed from the song's original key (as indicated by the |
[configuration.expandChorusDirective] | boolean |
false |
Whether or not to expand |
[configuration.useUnicodeModifiers] | boolean |
false |
Whether or not to use unicode flat and sharp symbols. |
[configuration.normalizeChords] | boolean |
true |
Whether or not to automatically normalize chords |
Formats a song into HTML. It uses DIVs to align lyrics with chords, which makes it useful for responsive web pages.
Acts as a base class for HTML formatters
Kind: global class
Object.<string, Object.<string, string>>
string
string
Object.<string, Object.<string, string>>
Basic CSS, in object style à la useStyles, to use with the HTML output For a CSS string see [cssString](cssString)
Example:
'.paragraph': {
marginBottom: '1em'
}
Kind: instance property of HtmlFormatter
Returns: Object.<string, Object.<string, string>>
-
the CSS object
string
Formats a song into HTML.
Kind: instance method of HtmlFormatter
Returns: string
-
The HTML string
Param | Type | Description |
---|---|---|
song | Song |
The song to be formatted |
string
Generates basic CSS, optionally scoped within the provided selector, to use with the HTML output
For example, execute cssString('.chordSheetViewer') will result in CSS like:
.chordSheetViewer .paragraph {
margin-bottom: 1em;
}
Kind: instance method of HtmlFormatter
Returns: string
-
the CSS string
Param | Description |
---|---|
scope | the CSS scope to use, for example |
Formats a song into HTML. It uses TABLEs to align lyrics with chords, which makes the HTML for things like PDF conversion.
Formats a song into a plain text chord sheet
string
Formats a song into a plain text chord sheet
Kind: instance method of TextFormatter
Returns: string
-
the chord sheet
Param | Type | Description |
---|---|---|
song | Song |
The song to be formatted |
Represents a key, such as Eb (symbol), #3 (numeric) or VII (numeral).
The only function considered public API is Key.distance
number
Calculates the distance in semitones between one key and another.
Kind: static method of Key
Returns: number
-
the distance in semitones
Param | Type | Description |
---|---|---|
oneKey | Key | string |
the key |
otherKey | Key | string |
the other key |
Parses a ChordPro chord sheet
Kind: global class
Array.<ParserWarning>
All warnings raised during parsing the chord sheet
Kind: instance property of ChordProParser
Song
Parses a ChordPro chord sheet into a song
Kind: instance method of ChordProParser
Returns: Song
-
The parsed song
Param | Type | Default | Description |
---|---|---|---|
chordSheet | string |
the ChordPro chord sheet |
|
options | ChordProParserOptions |
Parser options. |
|
options.softLineBreaks | ChordProParserOptions.softLineBreaks |
false |
If true, a backslash followed by * a space is treated as a soft line break |
Deprecated
Parses a normal chord sheet
ChordSheetParser is deprecated, please use ChordsOverWordsParser.
ChordsOverWordsParser aims to support any kind of chord, whereas ChordSheetParser lacks support for many variations. Besides that, some chordpro feature have been ported back to ChordsOverWordsParser, which adds some interesting functionality.
Kind: global class
Instantiate a chord sheet parser ChordSheetParser is deprecated, please use ChordsOverWordsParser.
Param | Type | Default | Description |
---|---|---|---|
[options] | Object |
{} |
options |
[options.preserveWhitespace] | boolean |
true |
whether to preserve trailing whitespace for chords |
Song
Parses a chord sheet into a song
Kind: instance method of ChordSheetParser
Returns: Song
-
The parsed song
Param | Type | Default | Description |
---|---|---|---|
chordSheet | string |
The ChordPro chord sheet |
|
[options] | Object |
{} |
Optional parser options |
[options.song] | Song |
|
The Song to store the song data in |
Parses a chords over words sheet into a song
It support "regular" chord sheets:
Am C/G F C
Let it be, let it be, let it be, let it be
C G F C/E Dm C
Whisper words of wisdom, let it be
Additionally, some chordpro features have been "ported back". For example, you can use chordpro directives:
{title: Let it be}
{key: C}
Chorus 1:
Am
Let it be
For convenience, you can leave out the brackets:
title: Let it be
Chorus 1:
Am
Let it be
You can even use a markdown style frontmatter separator to separate the header from the song:
title: Let it be
key: C
---
Chorus 1:
Am C/G F C
Let it be, let it be, let it be, let it be
C G F C/E Dm C
Whisper words of wisdom, let it be
ChordsOverWordsParser
is the better version of ChordSheetParser
, which is deprecated.
Kind: global class
Array.<ParserWarning>
All warnings raised during parsing the chord sheet
Kind: instance property of ChordsOverWordsParser
Song
Parses a chords over words sheet into a song
Kind: instance method of ChordsOverWordsParser
Returns: Song
-
The parsed song
Param | Type | Default | Description |
---|---|---|---|
chordSheet | string |
the chords over words sheet |
|
options | ChordsOverWordsParserOptions |
Parser options. |
|
options.softLineBreaks | ChordsOverWordsParserOptions.softLineBreaks |
false |
If true, a backslash followed by a space is treated as a soft line break |
Represents a parser warning, currently only used by ChordProParser.
string
Returns a stringified version of the warning
Kind: instance method of ParserWarning
Returns: string
-
The string warning
Parses an Ultimate Guitar chord sheet with metadata Inherits from [ChordSheetParser](#ChordSheetParser)
Instantiate a chord sheet parser
Param | Type | Default | Description |
---|---|---|---|
[options] | Object |
{} |
options |
[options.preserveWhitespace] | boolean |
true |
whether to preserve trailing whitespace for chords |
string
Album meta directive. See https://www.chordpro.org/chordpro/directives-album/
string
Arranger meta directive. See https://chordpro.org/chordpro/directives-arranger/
string
Artist meta directive. See https://www.chordpro.org/chordpro/directives-artist/
string
Capo meta directive. See https://www.chordpro.org/chordpro/directives-capo/
string
Comment directive. See https://www.chordpro.org/chordpro/directives-comment/
string
Composer meta directive. See https://www.chordpro.org/chordpro/directives-composer/
string
Copyright meta directive. See https://www.chordpro.org/chordpro/directives-copyright/
string
Duration meta directive. See https://www.chordpro.org/chordpro/directives-duration/
string
End of ABC music notation section See https://chordpro.org/chordpro/directives-env_abc/
string
End of bridge directive. See https://chordpro.org/chordpro/directives-env_bridge/
string
End of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/
string
End of grid directive. See https://www.chordpro.org/chordpro/directives-env_grid/
string
End of Lilypond music notation section See https://chordpro.org/chordpro/directives-env_ly/
string
End of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/
string
End of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/
string
Key meta directive. See https://www.chordpro.org/chordpro/directives-key/
string
_Key meta directive. Reflects the key as transposed by the capo value See https://www.chordpro.org/chordpro/directives-key/
string
Lyricist meta directive. See https://www.chordpro.org/chordpro/directives-lyricist/
string
Sorttitle meta directive. See https://chordpro.org/chordpro/directives-sorttitle/
string
Start of ABC music notation section See https://chordpro.org/chordpro/directives-env_abc/
string
Start of bridge directive. See https://chordpro.org/chordpro/directives-env_bridge/
string
Start of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/
string
Start of grid directive. See https://www.chordpro.org/chordpro/directives-env_grid/
string
Start of Lilypond music notation section See https://chordpro.org/chordpro/directives-env_ly/
string
Start of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/
string
Start of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/
string
Subtitle meta directive. See https://www.chordpro.org/chordpro/directives-subtitle/
string
Tempo meta directive. See https://www.chordpro.org/chordpro/directives-tempo/
string
Time meta directive. See https://www.chordpro.org/chordpro/directives-time/
string
Title meta directive. See https://www.chordpro.org/chordpro/directives-title/
string
Transpose meta directive. See: https://www.chordpro.org/chordpro/directives-transpose/
string
New Key meta directive. See: https://github.com/PraiseCharts/ChordChartJS/issues/53
string
Year meta directive. See https://www.chordpro.org/chordpro/directives-year/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/
string
Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/
string
Chorus directive. Support repeating an earlier defined section. See https://www.chordpro.org/chordpro/directives-env_chorus/
string
Chord type directive. Determines the type of chords used in the rendered chord sheet. Possible values are 'solfege', 'symbol', 'numeral' and 'number'
Kind: global constant
See: https://github.com/bettermusic/ChordSheetJS/issues/352
string
Used to mark a paragraph as bridge
string
Used to mark a paragraph as chorus
string
Used to mark a paragraph as grid
string
Used to mark a paragraph as containing lines with both verse and chorus type
string
Used to mark a paragraph as not containing a line marked with a type
string
Used to mark a paragraph as tab
string
Used to mark a paragraph as verse
string
Used to mark a section as Lilypond notation
string
Used to mark a section as ABC music notation
string
Generates basic CSS, scoped within the provided selector, to use with output generated by [HtmlTableFormatter](#HtmlTableFormatter)
Kind: global function
Returns: string
-
the CSS string
Param | Description |
---|---|
scope | the CSS scope to use, for example |
string
Generates basic CSS, scoped within the provided selector, to use with output generated by [HtmlTableFormatter](#HtmlTableFormatter)
Kind: global function
Returns: string
-
the CSS string
Param | Description |
---|---|
scope | the CSS scope to use, for example |
Object.<string, string>
Returns applicable capos for the provided key
Kind: global function
Returns: Object.<string, string>
-
The available capos, where the keys are capo numbers and the values are the effective key for that capo.
Param | Type | Description |
---|---|---|
key | Key | string |
The key to get capos for |
Array.<string>
Returns applicable keys to transpose to from the provided key
Kind: global function
Returns: Array.<string>
-
The available keys
Param | Type | Description |
---|---|---|
key | Key | string |
The key to get keys for |