VexTab 是一种用于书写音乐的语言,你只需要花非常少的时间学习一下,就可以用它来创建,编辑和分享非常好看的五线谱和六线谱了。和 ASCII 谱的设计目标为易于阅读不一样,VexTab 是为了可方便书写而诞生的。
英文原文:vextab tutorial
在线体验:vextab 编辑器
什么是 VexTab ?
VexTab 是一种用于书写音乐的语言,你只需要花非常少的时间学习一下,就可以用它来创建,编辑和分享非常好看的五线谱和六线谱了。和 ASCII 谱的设计目标为易于阅读不一样,VexTab 是为了可方便书写而诞生的。
下面就让我们开始学习书写这漂亮而美好的音符吧。
第一步:谱表
关键字tabstave
用于创建一行谱表,下面的编辑框都是可以进行编辑的,赶紧试一下在新的一行添加tabstave
看看效果吧。
tabstave
后面可以跟一些参数,比如tabstave notation=true
的意思是显示一张标准的谱表(上面是五线谱,下面是六线谱)。别只看啊!动手试一下。
tabstave
第二步:添加一些音符
关键字notes
可以用于添加音符。你可以通过在钢琴上的位置(note/octave
)或者吉他指板的位置(fret/string
)来表示。如果需要在同一根弦或者同个音区添加多个音符,可以通过这种表达式:fret-fret-fret/string
(或者 note-note-note/octave
)。根据你个人的喜爱来选择即可。
试着编辑一下下面的音符,留意它们在谱上的位置变化,结合下面的音区图去理解语法的作用。音符后可以跟随#
, ##
, @
, @@
, 和 n
这几种记号,它们分别表示升半音,升全音,降半音,降全音和还原音。
tabstave notation=true tablature=false notes Cn-D-E/4 F#/5
盗一张图,结合这个图就明白note/octave
方式了。
下面是吉他谱:
tabstave notation=true notes 4-5-6/3 10/4
第三步:谱表关键字
tabstave
可以跟随下面的参数:
关键字 | 值/例子 |
---|---|
notation | true/false |
tablature | true/false |
clef | treble, alto, tenor, bass, percussion |
key | C, 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#m |
time | C, C│, #/# |
tuning | standard, 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 拍的低音谱,同时包含五线谱和六线谱。
来试一下吧:
tabstave notation=true clef=bass key=Ab time=C| notes 4-5/6
第四步:休止符和添加小节
##
表示休止符,默认会自动排好位置,你也可以通过在中间加个数字来改变所在的谱线,格式是#4#
,值的范围是 0 到 9 。
小节的分隔符是|
, 你可以在谱表中任意添加。
tabstave notation=true notes 4-5-6/3 ## | 5-4-2/3 2/2 tabstave notation=true tablature=false notes C-D-E/4 #0# | C-D-E-F/4
另外,还有一些特殊的小节线。
=||
复纵线,表示乐曲告一段落,两条小节线是同样大小的=|:
重复开始=:|
重复结束=::
重复开始和结束=|=
终止线
tabstave notation=true tablature=false notes 4-5-6/3 ## =|: 5-4-2/3 2/2 =:| tabstave notation=true tablature=false notes C-D-E/4 #0# =:: C-D-E-F/4 =|=
第五步:推弦音
吉他演奏中常用的技巧,通过在指板数后添加b
,就可以表示推弦音了。比如10b12
表示一个全音推弦,10b11
表示半音推弦,不难猜到b
后面跟的是音的步值。那如何表示推高之后返回原来的音呢?答案就是 10b12b10
,是不是很好理解。
tabstave notes 4-5-6b7/3 10/4 | 5-4-2/3 2/2 tabstave notes 6-7b9b7/3 7/4 | 9-8-7-6/2
第六步:哑音、上下拨弦和颤音
X
表示哑音,在音名后加小v
表示颤音,大V
则表示强颤音,同时你也可以推弦音后面加颤音,看下面的例子如何表示。
u
和 d
分别表示上拨弦和下拨弦。
tabstave notation=true notes 4-5-6b7v/3 10/1 | 5d-4u-Xd/3 2v/2
第七步:添加和弦
上面讲的都是单个音的表示,终于轮到和弦了。在谱上和弦是通过括号()
和.
来连接表示的,比如 C 和弦:(C/4.E/4.G/4)
,当然也可以用指版数字的方法:(1/2.2/4.3/5)
。
tabstave notation=true tablature=false notes (C/4.E/4.G/4) C-E-G/4 tabstave notation=true notes (8/2.7b9b7/3) (5b6/2.5b6/3) 7/4 | notes (5/2.6/3.7/4)
第八步:击弦、勾弦、點弦 和 滑弦
这四种技巧分别用h
, p
, t
or s
,这个和一般吉他谱的表示是一样的。比如你要从6击弦到8然后再勾弦回6,就可以用6h8p6
,你也可以在和弦上使用这些符号。
tabstave notes (5/2.5/3.7/4) 5h6/3 7/4 | notes t12p7p5h7/4 7/5 5s3/5 tabstave notes (8/2.7b9b7/3) (5b6/2.5b6/3)v 7s0/4 | notes (5/2.6/3.7/4)v tabstave notes (5/4.5/5)s(7/4.7/5)s(5/4.5/5) (5/4.5/5)h(7/5) | notes t(12/5.12/4)s(5/5.5/4) 3b4/5 5V/6
第九步:加入音长(拍子)和连音
默认都是4分音符(1/4拍),你可以通过冒号:
去改变它。
比如,:w
表示一个全音符。目前支持的音长有:全音符,二分音符,四分音符,8分音符,16分音符和32分音符,它们分别对于的符号是w
h
q
8
16
32
。如果要表示附点音符,则可以在相应的符号后面加d
,例如::qd
。
连音的符号是^
,比如八分音符的三连音表示为::8 4-5-6/4 ^3^
。
tabstave notation=true time=4/4 key=Ab tuning=eb notes :8 5s7s8/5 ^3^ :q (5/2.6/3)h(7/3) :8d 5/4 :16 5/5
下面是更复杂的例子,它演示了如何在滑音,推弦音等其他技巧音上使用音长。请你认真体会。
tabstave notation=true notes :q (8/2.7b9b7/3) (5b6/2.5b6/3)v :8 7s12/4 notes t:16:9s:8:3s:16:0/4
第十步:歌词,注释或者其他文本
你可以通过美元符号 $ 中间附上逗号,
来分隔文本来添加注释。你可以用于歌词,和弦提示,或者一些弹奏提示中。
$.top.$ 表示在注释在谱线上面,$.bottom.$ 表示在下面。
tabstave notation=true time=4/4 key=Ab tuning=eb notes :q 5/5 5/4 5/3 ^3^ $Fi,Ga,Ro!$ :h 4/4 $.top.$ $Blah!$
有两种方式去改变注释样式,一种是用预设的样式,一种是自定义的样式。对于预设的方式,你只需要在美元符号中添加.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。
tabstave notation=true key=A notes :q (5/2.5/3.7/4) $.big.A7#9$ 5h6/3 7/4 | notes :8 7/4 $.italic.sweep$ 6/3 5/2 3v/1 :q 7v/5 $.Arial-10-bold.P.H$ :8 3s5/5
第十一步:断音(Staccatos),延音(Fermatas)等更多衔接音。
你可以通过 $.articulation/position.$ 这种语法来添加衔接音。不同的衔接音有不同的符号表示。 a.
代表 staccato,a@a
代表 up-fermata,它们可以放置在谱线的上面或者下面。
下面的列表展示了所有支持的衔接音。
options space=20 font-style=italic font-face=times font-size=10 tabstave notation=true tablature=false notes :q notes C/4 $.a./bottom.$ notes E/4 $.av/bottom.$ notes G/4 $.a>/bottom.$ notes B/4 $.a-/bottom.$ notes C/5 $.a^/top.$ notes E/5 $.a+/top.$ notes G/5 $.ao/top.$ text :q,.-1,.strict,Stacatto,Staccatissimo text Accent,Tenuto,Marcato,LH pizzicato,Snap pizzicato text ++,.12,.font=courier-12-,:q,a.,av,a>,a-,a^,a+,ao options space=120 font-style=italic font-face=times font-size=10 tabstave notation=true tablature=false notes :q notes C/4 $.ah/bottom.$ notes E/4 $.a@a/top.$ notes G/4 $.a@u/bottom.$ notes B/4 $.a|/bottom.$ notes C/5 $.am/top.$ text :q,.-1,.strict,Open Note,Up Fermata text Down Fermata,Bow Up,Bow Down text ++,.12,.font=courier-12-,:q,ah,a@a,a@u,a|,am options space=40
第十二步:更多的文本
VexTab 还提供了一种非常灵活添加文本的方式,利用text
关键字可以创建和音符垂直对齐的文本,这种方式非常合适于放置和弦的名称。
在下面的示例中,我创建了两个文本块, “G Minor” 和 “A Major”,每个都是二分音符。注意这里文本块的音长间隔之间使用逗号隔开的,除了这一点,音长规则表示也是和音符一样的。
options space=12 font-size=14 tabstave notation=true time=4/4 key=Ab tuning=eb notes :q 5/5 5/4 5/3 ^3^ :h 4/4 text :h,G Minor,A Major
可以通过.数字
这种方式来跳转文块在垂直方向上的位置,默认是0,表示在谱的上面,这个值越大,表示越往下,如果值是负数,则越小越往上面。
options space=10 tabstave notation=true tablature=false time=4/4 key=Ab tuning=eb notes :8 C-D-E-F-G-A-B/4 C/5 text :8,.1,Do,Re,Me,.10,Fa,So,La,Ti,.1,Do options space=10
像音符一样,你也可以通过|
来分隔文本小节,这样可以更好的对齐,另外,你还可以通过++
语法来在同一行谱线上创建新的一行文本。简直太强大有木有~
options space=10 font-size=12 tabstave notation=true tablature=false time=4/4 key=Ab tuning=eb notes :q C-D-E-F/4 | G-A-B/4 C/5 text :h,.1,C,Em,| text :h,G7,C text ++, .11, :w, This is a new text line. options space=15
还没完,你还能在文本上添加很多音乐符号,比如结尾和重复。只需要在关键字前面加上#
就可以了,e.g., text #coda
。
options space=20 font-size=12 tabstave notation=true tablature=false time=4/4 key=Ab tuning=eb notes :q =|: C-D-E-F/4 =:| G-A-B/4 C/5 text |#coda, :hd, , :q, #tr, |#segno text ++, .11, |, #f text ++, .0, .font=Times-12-italic, |, :w, ,|, :q, ,D.S. al coda options space=25
第十三步:旋律斜线记法
在音长符号前面加上大写S
就可以变成斜线的记法了。在下面的示例中,你可以尝试改一下音名看看效果。你也可以通过 u
或 d
来表示动作的上下。
options font-size=14 space=15 tabstave notation=true tablature=false time=4/4 clef=percussion notes :2S Bd/4 :qS Bd/4 :q ## | :8S Bd/4 Bu/4 :qS Bd-Bu-Bd/4 ^3^ text :w, G Maj7, |, Am options space=10
第十四步:定义外观
定义外观主要是通过options
的参数来完成的,你可以根据喜好更改字体,谱的大小和美化谱线距离等。比如 options width=400
表示谱的宽度是 400 像素。
下面是相关的参数列表。
参数 | 描述 |
---|---|
width | 谱的宽度,单位是像素 |
scale | 缩放系数,默认是1 |
space | 和下一行谱线的距离,单位是像素 |
stave-distance | 五线谱和六线谱之间的距离,单位是像素 |
font-face/font-style/font-size | 注释字体的默认参数 |
加多一些空间给在谱线比较高位置的音:
options width=100 scale=2.0 tabstave notation=true tablature=false notes :q 5/5
加多一些空间给在谱线比较高位置的音:
options space=40 font-size=14 tabstave notation=true key=A notes :q (5/2.5/3.7/4) $A7#9$ 15h16/1 20/1
让五线谱和六线谱距离更远:
options stave-distance=50 tabstave notation=true key=A notes :q (5/2.5/3.7/4) ## 0h1/6 0/1
第十五步:六线谱也可以带拍号
添加 tab-stems
参数就可以在六线谱上显示拍号了。对于单独的人声旋律谱,你可以通过 tab-stem-direction
参数来指定拍号的方向。
注意你需要改变一下 space
和 stave-distance
参数值来避免出现重叠。
options space=12 font-size=14 tab-stems=true tab-stem-direction=up tabstave time=4/4 key=A notes :8 5/5 5/4 5/3 ^3^ :16 5-6-7-8/1 :8 9s10/1 :h s9v/1
第十六步:播放你的音符
添加 player
参数等于 true
,还要指定拍子的速度tempo
,就可以立即播放你写的音符了。
options space=20 player=true tempo=80 tabstave notation=true key=A time=4/4 notes :q =|: (5/2.5/3.7/4) :8 7-5h6/3 ^3^ 5h6-7/5 ^3^ :q 7V/4 | notes :8 t12p7/4 s5s3/4 :8 3s:16:5-7/5 :h p5/4 text :w, |#segno, ,|, :hd, , #tr
词汇表:
- stave: 谱表
- note: 音符
- octave: 八度音阶
- fret: 指板
- natural: 还原音
- time:节拍
- tuning: 起音
- clef: 谱号
- tablature: 谱式,记谱法
- treble: 最高声部,高音部
- alto: 女低音,中音部
- tenor: 男高音
- bass: 男低音,低音部
- percussion: 打击乐器
- common time: 4/4 拍。
- rest: 休止符
- double bar: 复纵线
- mute note: 哑音
- vibrato: 颤音
- chord: 和弦
- hammer-on: 击弦
- pull-off: 勾弦
- tap: 點弦,轻敲吉他
- slide: 滑弦
- lyrics: 歌词
- articulation: 衔接),是音乐上的方向或技术。它影响到乐曲里音符之间的过渡或连续性。
- staccato: (意大利语) 断音,断奏,指音符的实际时值比谱上所示的短,而减短的部分则可不作声,并于音符上加上一小点表示。
- fermata: 延音
- staccatissimo: 特断音
- accent: 重音
- codas: 尾奏
- segno: 连续记号