文档章节

为程序员准备的音乐编辑器-VexTab

叶大侠
 叶大侠
发布于 2017/12/15 00:57
字数 2570
阅读 753
收藏 26
点赞 0
评论 5

原文:英文原文

翻译:叶大侠

vextab编辑器:这里

这是一篇介绍和推广 VexTab 音乐语言的文章,一般网站并不支持查看和编辑谱,可以点击这里抵达可以获得更好的阅读。

什么是 VexTab ?

VexTab 是一种用于书写音乐的语言,你只需要花非常少的时间学习一下,就可以用它来创建,编辑和分享非常好看的五线谱和六线谱了。和 ASCII 谱的设计目标为易于阅读不一样,VexTab 是为了可方便书写而诞生的。

迫不及待了,让我们开始吧。

第一步:谱表

关键字tabstave用于创建一行谱表,下面的编辑框都是可以进行编辑的,赶紧试一下在新的一行添加tabstave看看效果吧。

tabstave 后面可以跟一些参数,比如tabstave notation=true的意思是显示一张标准的谱表(上面是五线谱,下面是六线谱)。别只看啊!动手试一下。

第二步:添加一些音符

关键字notes可以用于添加音符。你可以通过在钢琴上的位置(note/octave)或者吉他指板的位置(fret/string)来表示。如果需要在同一根弦或者同个音区添加多个音符,可以通过这种表达式:fret-fret-fret/string (或者 note-note-note/octave)。根据你个人的喜爱来选择即可。

试着编辑一下下面的音符,留意它们在谱上的位置变化,结合下面的音区图去理解语法的作用。音符后可以跟随###@@@, 和 n 这几种记号,它们分别表示升半音,升全音,降半音,降全音和还原音

盗一张图,结合这个图就明白note/octave方式了。

 

 

下面是吉他谱:

第三步:谱表关键字

tabstave 可以跟随下面的参数:

关键字值/例子notationtrue/falsetablaturetrue/falsecleftreble, alto, tenor, bass, percussionkeyC, Am, F, Dm, Bb, Gm, Eb, Cm, Ab, Fm, Db, Bbm, Gb, Ebm, Cb, Abm, G, Em, D, Bm, A, F#m, E, C#m, B, G#m, F#, D#m, C#, A#mtimeC, C|, #/#tuningstandard, dropd, eb, E/5,B/4,G/4,D/4,A/3,E/3

一些例子:

  • tabstave notation=true 代表显示标准五线谱和六线谱。
  • tabstave notation=true tablature=false 代表只显示五线谱。
  • tabstave notation=true clef=alto 表示女低音谱号。
  • tabstave notation=true clef=bass key=C# time=C| 表示 4/4 拍的低音,同时包含五线谱和六线谱。

来试一下吧:

第四步:休止符和添加小节

## 表示休止符,默认会自动排好位置,你也可以通过在中间加个数字来改变所在的谱线,格式是#4#,值的范围是 0 到 9 。

小节的分隔符是|, 你可以在谱表中任意添加。

另外,还有一些特殊的小节线。

  • =|| 复纵线,表示乐曲告一段落,两条小节线是同样大小的
  • =|: 重复开始
  • =:| 重复结束
  • =:: 重复开始和结束
  • =|= 终止线

第五步:推弦音

吉他演奏中常用的技巧,通过在指板数后添加b,就可以表示推弦音了。比如10b12表示一个全音推弦,10b11表示半音推弦,不难猜到b后面跟的是音的步值。那如何表示推高之后返回原来的音呢?答案就是 10b12b10,是不是很好理解。

第六步:哑音、上下拨弦和颤音

X 表示哑音,在音名后加小v表示颤音,大V则表示强颤音,同时你也可以推弦音后面加颤音,看下面的例子如何表示。

u 和 d 分别表示上拨弦和下拨弦。

第七步:添加和弦

上面讲的都是单个音的表示,终于轮到和弦了。在谱上和弦是通过括号().来连接表示的,比如 C 和弦:(C/4.E/4.G/4),当然也可以用指版数字的方法:(1/2.2/4.3/5)

第八步:击弦、勾弦、點弦 和 滑弦

这四种技巧分别用hpt 或者 s,这个和一般吉他谱的表示是一样的。比如你要从6击弦到8然后再勾弦回6,就可以用6h8p6,你也可以在和弦上使用这些符号。

第九步:加入音长(拍子)和连音

默认都是 4 分音符( 1/4 拍),你可以通过冒号:去改变它。

比如,:w 表示一个全音符。目前支持的音长有:全音符,二分音符,四分音符,八分音符,十六分音符和三十二分音符,它们分别对于的符号是w h q 8 16 32。如果要表示附点音符,则可以在相应的符号后面加d,例如::qd

连音的符号是^,比如八分音符的三连音表示为::8 4-5-6/4 ^3^

下面是更复杂的例子,它演示了如何在滑音,推弦音等其他技巧音上使用音长。请你认真体会。

第十步:歌词,注释或者其他文本

你可以通过美元符号 $ 中间附上逗号,分隔符文本来添加注释。你可以用于歌词,和弦提示,或者一些弹奏提示中。

$.top.$ 表示在注释在谱线上面,$.bottom.$ 表示在下面。

有两种方式去改变注释样式,一种是用预设的样式,一种是自定义的样式。对于预设的方式,你只需要在美元符号中添加.style. + 预设的样式就可以了,比如 $.big.C Major$ 表示大码的C Major显示。

目前预设的样式有big、 medium 和 italic

对于自定义的方式,语法是这样的:.face.size.style ,face表示字体,size表示字体大小,style 是字体样式(斜体:italic,加粗:bold)。例如 $.Times-14-italic.Blah$ 表示 14pt 大小、斜体、Italic Times Roman 字体的文本注释文本 Blah。

第十一步:断音(Staccatos),延音(Fermatas)等更多衔接音。

你可以通过 $.articulation/position.$ 这种语法来添加衔接音。不同的衔接音有不同的符号表示。 a. 代表 staccato,a@a 代表 up-fermata,它们可以放置在谱线的上面或者下面。

常见的衔接音:

下面的列表展示了所有支持的衔接音:

第十二步:更多的文本

VexTab 还提供了一种非常灵活添加文本的方式,利用text关键字可以创建和音符垂直对齐的文本,这种方式非常合适于放置和弦的名称。

在下面的示例中,我创建了两个文本块, "G Minor" 和 "A Major",每个都是二分音符。注意这里文本块的音长间隔之间使用逗号隔开的,除了这一点,音长规则表示也是和音符一样的。

可以通过.数字这种方式来调整文块在垂直方向上的位置,默认是0,表示在谱的上面,这个值越大,表示越往下,如果值是负数,则越小越往上面。

像音符一样,你也可以通过|来分隔文本小节,这样可以更好的对齐,另外,你还可以通过++语法来在同一行谱线上创建新的一行文本。简直太强大有木有~

还没完,你还能在文本上添加很多音乐符号,比如结尾和重复。只需要在关键字前面加上#就可以了,e.g., text #coda

第十三步:旋律斜线记法

在音长符号前面加上大写S就可以变成斜线的记法了。在下面的示例中,你可以尝试改一下音名看看效果。你也可以通过 u 或 d 来表示动作的上下。

第十四步:定义外观

定义外观主要是通过options的参数来完成的,你可以根据喜好更改字体,谱的大小和美化谱线距离等。比如 options width=400 表示谱的宽度是 400 像素。

下面是相关的参数列表。

参数描述width谱的宽度,单位是像素scale缩放系数,默认是1space和下一行谱线的距离,单位是像素stave-distance五线谱和六线谱之间的距离,单位是像素font-face/font-style/font-size注释字体的默认参数

可以看起来很大:

加多一些空间给在谱线比较高位置的音:

让五线谱和六线谱距离更远:

第十五步:六线谱也可以带拍号

添加 tab-stems 参数就可以在六线谱上显示拍号了。对于单独的人声旋律谱,你可以通过 tab-stem-direction 参数来指定拍号的方向。

注意你需要改变一下 space 和 stave-distance 参数值来避免出现重叠。

第十六步:播放你的音符

添加 player 参数等于 true,还要指定拍子的速度tempo,就可以立即播放你写的音符了。

第N+1步:

马上体验一下,进入编辑器,手机,ipad,pc可用。

避免走丢指南:喜欢玩音乐的程序员可以关注下面公众号:

词汇表:

  1. stave: 谱表
  2. note: 音符
  3. octave: 八度音阶
  4. fret: 指板
  5. natural: 还原音
  6. time:节拍
  7. tuning: 起音
  8. clef: 谱号
  9. tablature: 谱式,记谱法
  10. treble: 最高声部,高音部
  11. alto: 女低音,中音部
  12. tenor: 男高音
  13. bass: 男低音,低音部
  14. percussion: 打击乐器
  15. common time: 4/4 拍。
  16. rest: 休止符
  17. double bar: 复纵线
  18. mute note: 哑音
  19. vibrato: 颤音
  20. chord: 和弦
  21. hammer-on: 击弦
  22. pull-off: 勾弦
  23. tap: 點弦,轻敲吉他
  24. slide: 滑弦
  25. lyrics: 歌词
  26. articulation: 衔接,是音乐上的方向或技术。它影响到乐曲里音符之间的过渡或连续性。
  27. staccato: (意大利语) 断音,断奏,指音符的实际时值比谱上所示的短,而减短的部分则可不作声,并于音符上加上一小点表示。
  28. fermata: 延音
  29. staccatissimo: 特断音
  30. accent: 重音
  31. codas: 尾奏
  32. segno: 连续记号

© 著作权归作者所有

共有 人打赏支持
叶大侠

叶大侠

粉丝 56
博文 44
码字总数 67312
作品 5
广州
程序员
加载中

评论(5)

朱哲
朱哲
https://abcjs.net/abcjs-editor.html
李嘉图
李嘉图
奇技淫巧
李嘉图
李嘉图
奇技淫巧
叶大侠
叶大侠

引用来自“steveyang”的评论

能生成midi文件吗
目前还没不支持~ 敬请期待!
s
steveyang
能生成midi文件吗
Vexflow 解析器--VexTab

VexTab 是 Vexflow 的解析器,可以快速创建,编辑和渲染标准乐谱。 快速开始: <div class="vex-tabdiv" width=680 scale=1.0 editor="true" editorwidth=680 editorheight=330>options spa......

叶秀兰 ⋅ 2015/07/15 ⋅ 0

程序员自学编程的5种方法,哪些基本工具必须掌握?

编程是报酬相当丰厚的行业,有不少的小伙伴对于编程是相当的感兴趣。 如果你有仔细观察程序员身边的女朋友,一般都很漂亮,她们比较欣赏程序员的才华和有钱任性。 程序员自学编程的5种方法,...

W3Cschool ⋅ 2017/12/08 ⋅ 0

在线乐谱渲染 API--VexFlow

VexFlow 是开源在线乐谱渲染 API,完全是用 JavaScript 编写,在浏览器中运行。VexFlow 支持 HTML5 Canvas 和 SVG。 主要特性: 创建和发布可播放的乐谱文章 使用 VexTab Chrome Extension ...

叶秀兰 ⋅ 2015/07/15 ⋅ 0

2017年最受欢迎的11个编程挑战网站

译者注:如果你想不断地提高自己的编程技能,那么不断尝试去解决那些编程中的难题,这是一个非常不错的途径。作者在本篇文章中列举出了10个编程挑战网站,你想尝试一下吗?以下为译文。 如果...

chen_h ⋅ 2017/11/08 ⋅ 0

程序编辑器--Redcar

Redcar 项目的设计目标是要做 Linux 下能够兼容 TextMate bundles 的程序员编辑器的,其中包括语法高亮、snippets、命令、以及宏。 现在,Redcar 还没有发布任何版本。不过,如果你有兴趣,可...

匿名 ⋅ 2009/03/29 ⋅ 0

2017 年最受欢迎的 10 个编程挑战网站

如果你正在在学习编程,那么我可以告诉你一个提高技能的好方法,那就是是敢于去解决编码过程中遇到的难题。解决不同类型的难题,可以帮助你成为一名优秀的问题解决者;不管编程语言多复杂,你...

作者: Daniel Borowski ⋅ 2017/10/31 ⋅ 0

为什么部分程序员下班后只关显示器不关电脑?

事情是酱婶的,知乎上有个提问: 为什么部分程序员下班后只关显示器不关电脑? 公司新入几名程序员,下班时发现他们只关显示器而不关电脑,说担心有什么问题可以第一时间远程登录来解决,请问...

慕课网官方_运营中心 ⋅ 05/23 ⋅ 0

从初级进阶到高级程序员,如何利用w3cschool app编程刷题?

昨日,w3cschool这里给程序员小伙伴们分享了最适合程序员编程刷题的6个网站。 从编程刷题可以大幅度提高我们的编程能力,能让我们从小白进阶到高手。 不过,发现了一个问题:有一部分的程序员...

W3Cschool ⋅ 2017/11/09 ⋅ 0

如何成为“10倍效率”开发者

Brad Feld的一篇文章The Rise of Developeronomics中提到了“10倍效率的开发者(10x developer)”的概念(伟大的开发者的效率往往比一般的开发者高很多,而不只是一点点),Adam Loving在读...

banny30 ⋅ 2012/02/26 ⋅ 0

网易音乐前端实习程序员面试的10个问题,你会几个?

近日,w3cschool app开发者头条上分享了网易音乐前端实习程序员面经,引来了不少程序员粉丝们的围观。 在分享网易音乐前端实习面试问题之前,w3cschool先跟小伙伴们分享前端学习干货: 0、h...

W3Cschool ⋅ 04/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部