吉他初学者学习网站搭建系列(4)——如何查询和弦图

文章目录

背景

作为吉他初学者,如何根据和弦名快速查到和弦图是一个必不可少的功能。以往也许你会去翻和弦的书籍查询,像查新华字典那样,但是有了互联网后我们不必那样,只需要在网页上输入和弦名,就能查到和弦图了。

实现

ChordDb

ChordDb是一个js版的和弦数据库,虽然还有一些缺失,但是对于rookie已经足够了。有些人看这个库可能不知道怎么用,其实我们只需要拷贝lib/guitar.json到自己的工程目录即可。这个json文件收录了全部的和弦,把这个json打印出来,如下图:

可以看到,这个文件收录了2069个和弦,标准调,和弦根音12个,和弦后缀63个。

我们看一下大C和弦:

key: 根音

suffix: 后缀

positions: 指法

capo: 品柱

baseFret: 基本品

fingers: 一弦到六弦对应的手指0: 不按 1: 食指 2: 中指 3: 无名指 4: 小拇指

frets: 一弦到六弦按几品,-1: 不按

midi: MIDI音符代码

有了这些和弦的基本信息,我们还需要一个库来绘制和弦

vexchords

vexchords提供渲染和弦的能力。按以下代码渲染:

javascript 复制代码
   drawChord() {
      const realKey = this.key.replace('#', 'sharp'); // Tip: 升调符号在keys中表达为#,但是在chords中表达为sharp,这里需要统一替换为sharp
      const target = ChordDb.chords[realKey].find(item => item.suffix === this.suffix); // 找到选择的和弦
      this.target = target || {};
      const realSuffix = this.suffix.replaceAll(/(#|\/)/g,'');
      const domId = `#${realKey}_${realSuffix}_` // dom id,需要确保唯一
      this.$nextTick(() => {
        this.target.positions?.forEach((item, index) => {
          const chord = item.frets.map((it, ind) => {
            return [6 - ind, it === -1 ? 'x' : it, item.fingers[ind] || '']
          }) // frets中的索引从一弦到六弦,但是vexchords中的chord则是从六弦到一弦,-1替换成'x'
          const name = domId + String(index); // 多个指法都渲染出来
          this.curNodes.push(name);
          draw(name, { // 渲染方法
            chord,
            position: item.capo ? item.baseFret : 0
          })
        })
      })
    },

效果如下:

网址如下,欢迎试用:https://hougiser.gitee.io/music-score/ 😉

相关推荐
敬往事一杯酒哈11 分钟前
海康 AGV 导航读码器学习
学习
xcs1940514 分钟前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
美狐美颜sdk1 小时前
直播APP源码可以直接接入视频美颜sdk吗?技术方案详解
android·人工智能·音视频·美颜sdk·直播美颜sdk
明月_清风1 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
揽秀亭长2 小时前
从音频到五线谱|扒谱过程中的关键技术环节
人工智能·音视频
qq_284274052 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
Csvn2 小时前
框架性能优化
前端
qq_284274053 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
回眸&啤酒鸭4 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户69371750013844 小时前
2026,程序员的时代拐点到了
android·前端·后端