fretboard.js 入门
Fretboard.js 是一个使用 js 生成 svg 形式的指板图的工具,之后可能要做一些关于吉他的笔记,所以对它进行一些学习。要在浏览器中使用,直接下载 该 js 文件,在 html 中引用即可。
该库具体的使用细节应当参照官方文档,其中提供了很多供参考的 例子,这里只是做一些最简单的示例。
该库的基本使用方式为定义一个 figure 标签并给定 id,然后创建相应的 Fretboard 对象,在配置后调用 render 方法,比如下面的代码会定义一个空白的指板。
1 |
|
效果如下:
下面列出了 Fretboard 的构造函数的全部配置,为了描述方便,下面的 instrument 仍旧称为吉他(但它也能够描述其它弦乐器),相较于官方文档,这里进行了一些重排序:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
el | string | ‘#fretboard’ | 对应的标签,使用选择器语法 |
fretCount | number | 15 | 展示的品数 |
crop | boolean | false | 是否对指板图进行剪切,如果为 true,则剪掉左边空余的品位,其实就是说不从 1 品开始,从第一个有指位的品开始进行渲染,这是非常有用的 |
fretLeftPadding | number | 0 | 似乎在 crop 为 true 时起作用,表示左边在最低把位的音前空开多少品 |
tuning | string[] | [“E2”, “A2”, “D3”, “G3”, “B3”, “E4”] | 吉他的 调音 |
stringCount | number | 6 | 吉他的弦数,必须和调音的数组的长度相等 |
dotText | {string: number, fret: number} => string | (dot) => ‘’ | 特定指位的文字,注意这里的 string 是属性名 |
stringWidth | number | [number] | 1 | 弦的宽度,可以去传入一个数组,如 [1, 1.5, 2, 3, 4, 5],设置好了挺美观的 |
fretWidth | string | 1 | 品丝的宽度 |
showFretNumbers | string | true | 是否展示品数 |
middleFretWidth | string | 3 | 12 品品丝宽度 |
scaleFrets | string | true | 如果为 true,则品格的宽度按对数增长(现实如此),否则按线性增长 |
stringColor | string | ‘#666’ | 弦的颜色 |
fretColor | string | ‘#666’ | 品丝的颜色 |
nutWidth | string | 7 | 上弦枕的宽度 |
nutColor | string | ‘#666’ | 上弦枕颜色 |
disabledOpacity | string | 0.9 | 无效(disabled)的指位的不透明度 |
middleFretColor | string | ‘#ff636c’ | 12 品品丝颜色 |
dotSize | string | 20 | 指位的直径 |
dotStrokeColor | string | ‘#555’ | 指位边框的颜色 |
dotStrokeWidth | string | 2 | 指位边框宽度 |
dotTextSize | string | 12 | 指位上的文字大小 |
dotFill | string | ‘white’ | 指位填充颜色 |
fretNumbersColor | string | ‘#00000099’ | 品数的颜色 |
topPadding | string | 20 | Top padding(相对于 SVG 容器) |
bottomPadding | string | 15 | Bottom padding |
leftPadding | string | 20 | Left padding |
rightPadding | string | 20 | Right padding |
height | string | 150 | SVG element height |
width | string | 960 | SVG element width |
fretNumbersHeight | string | 40 | Fret numbers container height |
fretNumbersMargin | string | 20 | Fret number container top margin |
font | string | ‘Arial’ | 文字的字体 |
barresColor | string | ‘#666’ | 未见效果,似乎是关于大横按的,描述错误了:Amount of empty frets to display before dots. |
我们的目的当然不仅仅是去展示空白的指板,还得在上面放指位才能起参照作用。
放置指位使用 setDots 方法,它接受一个{string: number, fret: number}
,比如下面的代码展示了一个开放 C 和弦,并在指位上显示其音高:
1 |
|
也可以使用 style 方法,style 方法需要在 render 后被调用,可以用来规定特定情况的样式,它的签名如下,满足 filter 的指位会被影响。
1 |
|
比如,我们展示一个开放 G 和弦,其中食指为黄色,中指为蓝色,无名指为红色:
1 |
|
显然,style 方法的自定义性是最高的。
关于和弦,各种调式的音阶,CAGED 和 TNPS 系统等,这里就先略过了,因为考虑到我当前没有使用其的需要,且官网示例已经足够丰富。下一步是运用这里学到的东西去描述一下蔡文展的指板系统中每个模块主音分别在 6,5,4,3 弦上的形状。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!