日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最近新发现的歌谱排版软件Lilypond

發布時間:2024/8/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最近新发现的歌谱排版软件Lilypond 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事情的起因是我在制作一款歌譜生成軟件,希望找找樂譜的繪圖庫,居然發現完全沒有現成的庫,不得不承認,國內外計算機水平是差著不少的。。。因為,在百度上完全找不到這方面的內容,搜索歌譜排版,歌譜轉pdf等等,一直沒有結果。而在google上搜英文,東西一堆一堆的,于是我就把一個個人認為非常好的軟件拿過來分享一下。

Lilypond是一款GNU軟件,免費而開源,可以將一篇歌譜腳本自動排版成五線譜,ps文檔和midi樂,而且渲染質量非常之高,這是下面它的效果圖:


而它使用的腳本則是自定義語法規則的描述類語言:

\header {title = "LilyPond demo"enteredby="Han-Wen Nienhuys"maintainer="hanwen@xs4all.nl"texidoc = "heavily mutilated Edition Peters Morgenlied by Schubert" } \version "2.12.0"ignoreMelisma = \set ignoreMelismata = ##t ignoreMelismaOff = \unset ignoreMelismata #(set-global-staff-size 21)\paper {%#(set-global-staff-size (* 5.8 mm))indent = #(* mm 4)line-width = #(* mm 140)interscoreline = 2.\mmbetween-system-space = 15\mmragged-bottom = ##t }modernAccidentals = {\set Staff.extraNatural = ##f\set Staff.autoAccidentals = #'(Staff (same-octave . 1) (any-octave . 0))\set Staff.autoCautionaries = #'() }melody = \relative c'' \repeat volta 2 \context Voice = "singer" {\time 6/8\autoBeamOffs1*0^\markup { \larger { \hspace #-3.0 Lieblich, etwas geschwind } }R2.r4 r8 c4 g8 |\acciaccatura { f16 } e4 c8<<\new Voice { \stemUp f8. g16 }{ \stemDown f8.[ g16] } >> \stemNeutral a8 |fis4 g8 c16[ b a g] f[ e] |d4 f8\transpose a' e' \relative c'' { a16[ g fis! g] f![ d] } |g4. r8 gis gis |a4 a16.[ b32] c8[( a]) fis8 |g4.~ g8-\fermata }firstVerse = \lyricmode {\set stanza = "1."Sü -- ?es Licht! Aus\ignoreMelismagol --\ignoreMelismaOffde -- nen Pfor -- ten brichst du __ | sie -- gend durch __ die Nacht. Sch? -- ner Tag, du __ bist er -- wacht. __ }secondVerse = \lyricmode {\set stanza = "2."いろはに ??? та та ほへど ちり ぬるをЖъл дю ля ??いろ はに ??? та та ほへ ちり ぬるЖъл дю ля __ }pianoRH = \relative c''' \repeat volta 2\new Voice {#(set-accidental-style 'modern)\voiceOneg16( fis a g fis g f e d c b\oneVoicea ) | <g e>8( <es fis a> <d e bes'> <c e c'>\arpeggio) r8 r | r8 c'( e,) f r a |\once \override DynamicLineSpanner #'padding =#3r8<< { fis( g) } \\<< { a4 } { s8\> s8\! } >>>>r8 <e c g>8[ <e c g>] |<d c a>4. r8 \clef bass <d b f> <d b f> |\crescTextCresce,16_" "\<g c g e g d gis b gis d gis |c, e a e c e a,-\f\! d fis d a d |b d g d b g e16. r32\fermata}pianoLH = \relative c'' \repeat volta 2\new Voice {#(set-accidental-style 'modern)\voiceTwog16( fis a g fis gf e d c b\change Staff = down\oneVoiced,) | g4.( b,8) r r\clef treble \grace s16 r8 <bes'>8-> <bes c>8->([ <a c>)] r <f c'> |\clef bassr8 dis( e) r c c |f,4. g8[ r8 g] |<c, c,>4. <e e,>4. |a,4. <d d,>4. |g,8 r r g16 r16\fermata }\book {\score {<< \time 6/8\new Staff \with {fontSize = #-3\override StaffSymbol #'staff-space = #(magstep -3)} <<\context Staff #(set-accidental-style 'modern)\melody >>\lyricsto "singer" \new Lyrics \firstVerse\lyricsto "singer" \new Lyrics \secondVerse\new PianoStaff << \set PianoStaff.instrumentName = \markup {\bold\larger\larger\larger\larger\huge"2."}\context Staff = up <<\pianoRH\pianoLH>>\context Staff = down { \clef bass \skip 1*2 }>> >>\layout {\context {\Lyrics\override VerticalAxisGroup #'minimum-Y-extent = #'(-0.85 . 2.2)\override LyricText #'font-size = #-1}\context {\Score\override Beam #'thickness = #0.55\override Beam #'auto-knee-gap = #4.0\override SpacingSpanner #'spacing-increment = #1.0\override Stem #'stemlet-length = #0.5\override Slur #'height-limit = #1.5}}\midi {\context {\ScoretempoWholesPerMinute = #(ly:make-moment 70 4)}}}}



中間的部分就是描述了樂譜的旋律和符號,具體的內容規則就請看幫助文檔了,另外,幫助文檔大概有300兆左右。。。


這款軟件可以很方便的通過命令行調用,(因為是GNU的嘛),使用方法就是

lilypond 文件名 (當然還有各種可選參數表,具體就看help吧)

我用C#寫了段腳本生成代碼,然后用cmd命令調用了一下,有需要的就當做參考吧:

/* * @Author: sxf * @Date: 2014-01-12 22:02:12 * @Last Modified by: sxf * @Last Modified time: 2014-01-16 12:43:15 */using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Diagnostics; using System.IO;class GenerateStaff{String title = "Demo";public void Set(String title){this.title = title;}StreamWriter sw;public void Generate(String str) {sw = new StreamWriter(str,false);sw.WriteLine("\\header {");sw.WriteLine("title = \"{0}\" ",title);sw.WriteLine("}");sw.WriteLine("\\version \"2.12.0\"");sw.WriteLine("ignoreMelisma =\\set ignoreMelismata = ##t");sw.WriteLine("ignoreMelismaOff = \\unset ignoreMelismata");sw.WriteLine("#(set-global-staff-size {0})",21);sw.WriteLine("\\paper {{\n%#(set-global-staff-size (* {0} mm))",5.8);sw.WriteLine("indent = #(* mm {0})",4);sw.WriteLine("line-width = #(* mm {0})",140);sw.WriteLine("interscoreline = {0}.\\mm",2);sw.WriteLine("between-system-space = {0}\\mm",15);sw.WriteLine("ragged-bottom = ##t ");sw.WriteLine("}");sw.WriteLine("modernAccidentals = {");sw.WriteLine("\\set Staff.extraNatural = ##f");sw.WriteLine("\\set Staff.autoAccidentals = #\'(Staff (same-octave . 1) (any-octave . 0))");sw.WriteLine("\\set Staff.autoCautionaries = #\'() ");sw.WriteLine("}");sw.Write("melody = ");writeRelative("c\'\' ");// writeClef("bass");writeTime(6,8);// sw.Write("\\repeat volta 2 \\context Voice = \"singer\" ");sw.WriteLine("{");// sw.WriteLine("\\autoBeamOff");writeClef("bass");// writeTime(6,8);// sw.WriteLine("\\autoBeamOff");// sw.WriteLine("s1*0^\\markup {{ \\larger {{ \\hspace #-3.0 Lieblich, etwas geschwind }} }}");// sw.WriteLine("R2.");writeNote(1);writeNote(2);for (int i = 1; i < 8; ++i){writeNote(i,4);}for (int i = 1; i < 8; ++i){writeNote(i,4);}Random ra = new Random();for (int i = 1; i < 250; ++i){writeNote(ra.Next(7)+1,8);}sw.WriteLine("}");sw.Close();}int mi(int x){int y = 2;for (int i =1;i<x;++i){y*= 2;}return y;}void writeRelative(String str) {sw.Write("\\relative {0}",str);}void writeClef(String str){sw.WriteLine("\\clef {0} ",str);}void writeTime(int p,int q) {sw.WriteLine("\\time {0}/{1}",p,q);}char[] md = {'#','c','d','e','f','g','a','b'};void writeNote(int p) {sw.Write("{0} ",md[p]);}void writeNote(int p,int q) {sw.Write("{0}{1} ",md[p],q);}}class MainClass {static void Main() {test("sxf","hello.ly");}static void test(String str,String filename) {Console.WriteLine("Hello,{0}",str);GenerateStaff gs = new GenerateStaff();gs.Generate(filename);RenderPdf(filename);}static void RenderPdf(String str) {//定義一個ProcessStartInfo實例System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();//設置啟動進程的初始目錄info.WorkingDirectory = System.Environment.CurrentDirectory;//設置啟動進程的應用程序或文檔名info.FileName = System.Environment.CurrentDirectory+"\\usr\\bin\\lilypond";Console.WriteLine(info.WorkingDirectory);//設置啟動進程的參數info.Arguments = System.Environment.CurrentDirectory + "\\"+str;//設置不顯示窗口 info.CreateNoWindow = true; //啟動由包含進程啟動信息的進程資源try{System.Diagnostics.Process.Start(info);}catch (System.ComponentModel.Win32Exception we){Console.WriteLine(we.Message);return;}} }


總結

以上是生活随笔為你收集整理的最近新发现的歌谱排版软件Lilypond的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜精品久久久久久久99 | 国产精选在线观看 | 欧美成人一区在线观看 | 成年人免费在线观看网站 | 七七久久| 四虎在线精品 | 影音先锋制服丝袜 | 亚洲美女黄色 | 中国国产黄色片 | 蜜臀aⅴ免费一区二区 | 日韩在线第一 | 交专区videossex另类 | 性按摩玩人妻hd中文字幕 | 成人午夜网| 午夜天堂网 | 波多野结衣一区二区三区高清av | 波多野结衣欲乱上班族 | 春色校园激情 | 欧美成人精品一区二区三区 | 日日不卡av| 色91| 日韩免费中文字幕 | 97精品人妻一区二区 | 亚洲在线视频网站 | 岛国av大片 | 国产精品99久久久久久久久久久久 | 福利视频一区二区三区 | 国产一卡二 | 国产毛片久久久久久久 | 午夜丁香网 | 日韩av.com| 四虎国产精品成人免费入口 | 国产一级色 | 最新国产拍偷乱偷精品 | 一区二区三区四区在线免费观看 | 日韩一级大片 | 亚洲一区二区不卡视频 | 日韩亚洲在线观看 | 人人玩人人干 | 欧美视频免费在线 | 久久精品国产一区二区 | 国产在线观看第一页 | 日本少妇在线 | 制服诱惑一区二区三区 | 少妇性bbb搡bbb爽爽爽欧美 | 国产日产精品一区二区三区 | 精品国产自在精品国产精小说 | 你懂的在线免费观看 | 自拍日韩亚洲一区在线 | 国产色在线视频 | 国产精品一区二区毛片 | 少妇荡乳情欲办公室456视频 | fc2ppv在线播放 | 禁漫天堂在线 | 国产精品女同一区二区 | 人妻精品无码一区二区 | 男女啪啪国产 | 337p日本欧洲亚洲鲁鲁 | 欧美啪啪网站 | 久久久欧美精品 | 免费黄色网址在线 | 性xxxx搡xxxxx搡欧美 | 欧美激情视频网站 | 经典三级av在线 | 爱草在线视频 | 第四色影音先锋 | 四虎永久在线精品免费一区二区 | 国产成人三级在线观看视频 | 午夜精品一区二区三 | 日本不卡高字幕在线2019 | 美女视频毛片 | 琪琪色视频 | 国产乱码精品一品二品 | 午夜精品极品粉嫩国产尤物 | 姑娘第5集在线观看免费好剧 | av电影在线观看不卡 | 超碰在线人人 | 翔田千里一区二区三区av | 欧美老女人bb | 日本精品在线观看 | 日本护士体内she精2xxx | 怡红院av久久久久久久 | 国产欧美日韩激情 | 自拍偷拍综合 | 精品久久久噜噜噜久久久 | 美女张开腿让男人桶爽 | 素人fc2av清纯18岁 | 中国色视频 | 日韩精品在线视频观看 | 午夜视频黄色 | 日韩在线视频在线观看 | 午夜天堂在线观看 | 少妇一级淫片免费播放 | 狠狠精品干练久久久无码中文字幕 | 黄色免费版 | 亚洲精品97久久中文字幕无码 | 有码中文字幕 | 欧美成人国产va精品日本一级 | 激情图片在线观看 |