chordbox
v1.0.14
Published
A simple SVG-based guitar chord renderer.
Downloads
8
Readme
ChordBox
A simple SVG-based guitar chord renderer.
Usage
I originally made ChordBox for a Raycast extension I made - Guitar Chords. It allows me to generate SVG images without the need for an actual browser/DOM (it's using svgdom and SVG.js under-the-hood)
You can either create an instance and configure it with options at the same time, or set/re-set various options sometime later via setter methods.
import { ChordBox } from 'chordbox'
// at the same time
const svgBase64URI = new ChordBox({
title: 'CMaj',
dots: [
{ string: 5, fret: 3 },
{ string: 4, fret: 2 },
{ string: 2, fret: 1 },
]
})
.render()
.toSVGBase64URI()
// sometime later
const chordBox = new ChordBox({
title: 'CMaj',
})
const svgBase64URI = chordBox
.setDots([
{ string: 5, fret: 3 },
{ string: 4, fret: 2 },
{ string: 2, fret: 1 },
])
.render()
.toSVGBase64URI()
// if you want just the svg (non-base64'd)
const chordBoxSVG = chordBox
.setDots([
{ string: 5, fret: 3 },
{ string: 4, fret: 2 },
{ string: 2, fret: 1 },
])
.render()
.toSVG()
Note
render()
must be called in order to generate anything.
Fonts
You will need to ensure the font, OpenSans-Regular.ttf
, is included in your project root (at ./assets/OpenSans-Regular.ttf'). There is a copy included in the dist/assets/fonts
folder for your convenience.
If, however, you wish to change the location of the font, simply call setFontsDir
on the ChordBox instance before rendering.
import { resolve } from 'path'
import { ChordBox } from 'chordbox'
const svgBase64URI = new ChordBox({
title: 'CMaj'
})
.setFontsDir(resolve(__dirname, 'somewhere/else')) // anywhere you like
.setDots([
{ string: 5, fret: 3 },
{ string: 4, fret: 2 },
{ string: 2, fret: 1 },
])
.render()
.toSVGBase64URI()
You can also, technically, change the font itself - to do so consult the documentation for svgdom.
Methods
The main methods are: |Method|Purpose| |---|---| |render()|Requirement on every use and performs the actuall rendering, under-the-hood |toSVG()|Outputs the rendered content as an SVG string |toSVGBase64URI()|Outputs the rendered content as a base64 encoded svg-image string (for use with tags, for e.g)
Setter Methods
As mentioned earlier, there are some setter
methods you can use depending on your requirements.
|Setter|Parameter Type|Purpose| |---|---|---| |setFonts()|string|Sets the default font location |setFrets()|number|Sets the number of visible frets on the ChordBox |setBaseFret()|number|Sets the first fret shown on the ChordBox |setDots()|ChordBoxDot[]|Sets the 'dots' to show on the ChordBox |setBarres()|number[]|Sets which frets should be barred. This is automatically set to stretch from lowest fretted string to highest on the designated fret.
Documentation
At some point I will include typedoc
genereated docs for developer-convenience.