LilyPond 中如何输出简谱 |
您所在的位置:网站首页 › melody怎么添加歌曲 › LilyPond 中如何输出简谱 |
最近研究LilyPond。 关于如何处理/输出/显示简谱的问题研究了网上的资料,总结出三种方式: 第一种:使用jianpu-ly.py这个Python脚本。他要求在文本文件中使用它自己的格式输入简谱,然后用此脚本处理后得到的输出保存到一个.ly文件中, 再由LilyPond处理,即可。 此处不再赘述。 工具的网址:GitHub - ssb22/jianpu-ly: Jianpu in Lilypond 别人的例子: 在GNU/Linux下使用Lilypond排版简谱 - 皮波迪先生 - 博客园 (cnblogs.com) 第二种:lilypond-Jianpu/jianpu10.ly at master · nybbs2003/lilypond-Jianpu · GitHub 提供了一个LilyPond包含文件jianpu10a.ly, 可以包含到自己ly文件中。 他提供了一种自定义类型的谱表(Staff)- JianpuStaff。 输入乐谱时按照Lilypond标准的方式输入五线谱, 使用它提供的JianpuStaff 生成简谱, 下面是它提供的例子: \version "2.18.2" \language "english" global = { \key f\major \time 4/4 } \include "jianpu10a.ly" notes = { \grace d'8 c'1 f'2( g') g'2~g'2~g'2. r4 bf'1~bf'2 c''2 |\break d'8~d'8 e'8.~e'16 \tuplet 3/2{f'8~ f'8~ f'8} \tuplet 3/2{g'16 r16 g'16} r8 r1 |\break f'4~f'2 r4 f'2~f'4 g'4 a'4 a'4~ a'4 \tuplet 3/2{bf'8 a'8 g'8} } 第三种: 这是我在浏览Lilypond官方文档的时候无意间在其Snippets部分发现的。其中的条目-Numbers as easy note heads提供了一个简单的engraver函数配合\easyHeadsOn 命令使用。 这个\easyHeadsOn命令单独使用的时候,效果 是在符头上显示音名, 像这样: 而它提供的engraver会把音名按照首调唱名法修改为简谱音名. 像这样: 可以把它提供的engraver放入一个.ly文件,在其它文件中包含使用。 例如,创建一个ez_numbers_engraver.ly 内容是如下函数定义。 #(define Ez_numbers_engraver (make-engraver (acknowledgers ((note-head-interface engraver grob source-engraver) (let* ((context (ly:translator-context engraver)) (tonic-pitch (ly:context-property context 'tonic)) (tonic-name (ly:pitch-notename tonic-pitch)) (grob-pitch (ly:event-property (event-cause grob) 'pitch)) (grob-name (ly:pitch-notename grob-pitch)) (delta (modulo (- grob-name tonic-name) 7)) (note-names (make-vector 7 (number->string (1+ delta))))) (ly:grob-set-property! grob 'note-names note-names)))))) #(set-global-staff-size 26) 用法: \version "2.24.1" \language "italiano" % 语言选择了italiano,则音名如下 % do re mi fa sol la si % 升d 降b \include "ez_numbers_engraver.ly" % 此处包含了上述文件 melody = \fixed do'{ \key fa \major \time 2/4 \tempo 4=60 \easyHeadsOn % 前奏 fa8. sol16 do'8 la | sol8. la16 sol fa sol8 | re la sol16 fa re8 | do2~ | do | do'8. do'16 sib8 sol | la16( do' fa4.) | la,4. fa8 | re fa16( re) do4 | fa8 fa16( sol) fa8 re | fa( sol) do'( re'16 do') | do'8( la4.~ | la2) | sol8 sol16( la) sol8 mi | re16( fa sol4.) | do'4. sol8 | la sol fa4 | } \score { \melody \midi {} \layout { \context { \Voice \consists \Ez_numbers_engraver } } } 效果:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |