LilyPond ver2.10.0-1(Introduction)


Next: , Previous: (dir), Up: (dir)


Next: , Previous: Top, Up: Top


Next: , Previous: Index, Up: Top

First steps

• 始めの一歩
例えば, 何かまわず以下のようにテキストファイルへtypingして, LilyPondで コンパイルすると.
{ c d e f g a b }

結果の表示です(A4版で組版されます, 此処ではobje部分だけを切り抜いて表示).
exa-a.png
テキストファイルはWindows OSの「メモ帳」を使用して作成できます.
ファイルネームは任意ネームで, 例えばexa-a.ly等と名前をつけます.
ここで注意は拡張子を必ず .ly にします.
コンパイルは, Windows OS のコマンドプロンプトを開いて
>lilypond exa-a.ly と入力し[Enter]を押せばOKです.
色々表示しますが(文字化けは無視してください(正常です).
—これはWindows OSのコマンドプロンプト
cmd.exeが日本語表示はSIFT-JISコード標準だからです,
lilypond.exeの(メッセージ)言語表示はutf-8コードです—
最終的に, 例ですと...exa-a.ps exa-a.pdf (命令が有ればmidi)等々が 作成されています.
拡張子 .ps .pdfファイルが譜面ファイルで, アクロバット等々で表示印刷出来ます.


• もう少し整理(清書)しますと......
{ \clef treble \key c\major \time 4/4
c'4 d' e' f' | g' a' b' r \bar "|." }

結果の表示です(obje部分を切り抜いて表示).
exa-a2.png
これら, 2例は単なるlilypond単純理解表示の為のものです.
つまり, このように記述して. ファイル名前を 任意名.lyで作成し,
cmd.exe(Windows OS コンソール画面, プロンプト) >lilypond 任意名.ly[Enter]で
楽譜やそのmidi(曲)を作成できます.
従いまして, lilypondが解釈できるシーケンス(処理命令文字列), コマンド(処理命令), lilypondの決まりごとに則って.
著者は原稿ファイルを記述しなければなりません. 上記2例はその一部分で LilyPondのデフォルト処理の結果を示しています.




• 1). 本格的な清書記述です......

     \version "2.10.0"
     exa = {
              c'4 d' e' f' | g' a' b' r \bar "|."
            \break
           }
     \score { \new Staff {
                          \clef treble \key c\major \time 4/4 \tempo 4 = 80
                           \exa
                          }
     
             \layout {}
             \midi {}
            }

結果の表示です(obje部分を切り抜いて表示).
exa-a3.png
解説
\version "2.10.0"
これは, "譜面原稿ファイルはLilyPond version 2.10.版で記述しました" の意味です. LilyPondは絶えず美的楽譜追求へ変貌し続けています(演奏者がおもわず弾きたく なるような譜面組版). 従って...versionによってlilypond自身の内部処理に差異が 激しく生じます. 譜面原稿ファイルへversion情報記述は極めて重要です.

exa = {
exaという名前付けは任意名前でOKです.
この記述方式(方法は)はマクロ記述フォームです. 譜面コード記述を書き終えたら 必ず } で閉じます, この閉じコード記述を忘れると lilypondコンパイルはその時点で解釈不能...中止終了します.

c'4 d' e' f' | g' a' b' r \bar "|."
\break
\clef treble \key c\major \time 4/4 \tempo 4 = 80
具体的な, これらLilyPondのコーデング文字意味等々は
cheat.pdf, cheat.html 等々を参照してください.

\score { ... }
\score { はlilypondの楽譜や譜面処理の開始命令です. 音楽原稿ファイルを処理すべき 様々な内部ファイルが読み込まれ, 著者の原稿を処理できるように用意されます. これも 従いまして, } で閉じ—此処で楽譜や譜面の処理範囲終了明示—がなければ なりません. 忘れるとlilypondは処理を中止します.

\new Staff { ... }
読み込んだ著者の楽曲原稿ファイルを, 音楽の五線譜上で組版処理しなさいです. 明確のように } でその範囲終了を忘れないでください.

\exa
exa名前で記述した音楽コーデングをこの場所に呼び込んで処理してくださいの意味です.
このexa名前付けは任意命名です. 呼び出すときはLilyPondエスケープ文字"\"を接頭語に 付けます.

\layout { }
これは, 処理音楽情報(組版処理)を楽譜(譜面)としたファイル作成せよの命令です.
{ ...... } の中に組版の際の様々なパラメータを指定できます.
更に, 上記の\new Staff での呼び出すStaffへの注文設定も, 此処で記述できます

\midi {}
これは, 処理音楽情報をmidi(曲)ファイルとして作成せよの命令です.
{ ...... } の中にdynamics設定等々様々な曲に関係する パラメーターを記述できます.

LilyPond(言語記述)でどの様な命令であれ, { で記述を始まりだしたら 必ず } でその範囲終了を確実に明示しなければなりません...これは lilypond(言語記述)の法則です. 余談ですがLilyPondはmusic typestterと言う オペーレーション(OS)でWindows OSやUNIX(Linux)等々と同じです. ただ, 印刷や 表示等々を独自に用意するのではなくWindows OSやUNIX等々のAPIを利用する方法を 採っているに過ぎません.

LilyPondが楽譜を組版処理するとき, 従来からの音楽界の法則に則って処理をします. LilyPondが独自に決めて処理しているわけでは有りません. ですが, LilyPondの内部処理コード(プログラム言語)に長じているなら自己独自の 音楽記号等々など楽譜ファイルへ組版可能です. LilyPondの楽譜部分のプログラム言語は "schem"であり, 且つ"python"で運転を行い. コンピューターCPUとの会話は等々(shell)は "bash"(UNIX(Linux), cygwin)や"cmd.exe"(Windows OS)です.

\new Staff { の代わりに, \context Staff = "任意命名 ID名前" {...} や \context Voice = "任意命名 ID名前" {...} のコーデングもあります. こちらは, より詳細でより複雑な階層的な音楽記述するときに利用します(組版結果が単純でも 音楽記述が複雑な場合).


Next: , Previous: First steps, Up: Top

Second steps

• lilypondコードに於ける" s "の役割
LilyPondに於ける" s "音符コードは非常に重要です. 一つのサンプルコード例です.

     \version "2.10.0"
     exa = {
              s1_\markup{ \large \box {s } is ghost! } | s2 s |
              s4^\< s s\sustainDown s\! | s2^\> s\! | s1^\fermata \bar "|."
              \break
           }
     
     \score { \context Staff = "example4" {
                          \clef treble \key c\major \time 4/4 \tempo 4 = 80
                           \exa
                          }
     
             \layout {}
             \midi {}
            }

結果の表示です(obje部分を切り抜いて表示).
exa-a4.png
" s "音符コードで記述した音符は幽霊です! lilypondコンパイル上はrunしますが, 組版結果には音符が幽霊で存在しませんし, 作成指示したmidiへも作用しません.
しかし, 音楽処理(パソコンのCPU 計算)上では例の如く正常に計算されています. 姿が透明だけに色々様々に組版では利用価値があります.

• 譜面記述テクニック" s "の役割
下記の記述を見てください, 譜面記述で......悩んだ時" s "音符を 思い出してください.
—更に, 一気にLilyPondの音楽処理モード説明に入ります—
     \version "2.10.0"
     exa = {
              \clef bass \key e\major \time 2/4
              % no1小節
              r8 b,8^\mp^\<  fis[ cis']\! |
              % no2小節
              cis'8^\> b4.*1/3 s4.*1/3 s4.*1/3\! |
              % no3小節
              \clef treble \key c\major \time 4/4
              << { c''4^\ff c'' c'' c''\( } \\ { e'2 e' } >> |
              % no4小節
              << { g'2\) s2 } \\ { s2 f'\( } >> |
              % no5小節
              << { d''1 } \\ { c'4\) d'8[ e' f'] a'4. } >>
              \bar "|."
              \break
           }
     
     \score { \context Staff = "example5" {
                            \tempo 8 = 40
                            \override Score.BarNumber #'break-visibility = #all-visible
                            \override Score.BarNumber  #'break-visibility =
                               #end-of-line-invisible
                            \override Score.BarNumber  #'stencil =
                               #(make-stencil-circler 0.1 0.25 ly:text-interface::print)
                              \exa
                                           }
     
             \layout { }
             \midi {  }
            }

結果の表示です(obje部分を切り抜いて表示).
exa-a5.png
(midi曲を検証してみてください. mp,ff,(de)crescendiが曲に反映されています)
2小節目と4小節目が" s "を使った組版です.
4小節目のコーデングに注意してください. ちなみに, ここを g'2\) f'\( と 記述してコンパイルすると, Slurの処理error("原稿記述のSlurの閉じ記述に誤り有り"意味) メッセージが画面に表示されますが, コンパイルは原稿譜面もmidiも作成します. 比較する と一目瞭然でslur部分(弧線)が組版外になっています.

3小節目以後のコーデングに見られる譜面組版コーデングですが.
<< {五線譜上位置} \\ {五線譜下位置} >> これがLilyPondの法則です. もちろん, "上位置\\下位置"の小節個数は一致していなければなりません.
—4小節目が単一に見えますが...実態は上下に音符を持った譜面です—
このサンプルが意味しているのは,

LilyPondに於いて << {五線譜上位置} \\ {五線譜下位置} >> で コーデングを始めた時に, "五線譜上位置で発信した属性は必ず五線譜上位置で受け止める" "五線譜下位置で発信した属性は必ず五線譜下位置で受け止める" これは鉄則です.
この意味でも, 幽霊音符" s "(実態は有るけれど姿は透明な音符)利用の一つの 例です. プログラミングで語るとcpu計算上は実態があって計算され, 型(譜面/midi)を 持つとき透明化してしまうobjeという意味になります.
但し, いくら" s "音符が透明でも実態は存在しているので音符のカウントは なされています. 例えば, \time 2/4で1小節内に4分音符で2個以上の値の音符を " s "だからといって記述は出来ません. それが, 上例2小節目でのコーデング意味 になっています.


• 和音的の組版
Polyphonyのもう一つの和音的組版例です, exa-a6.png 和音コード類似のコーデングの組版です. c d e f g a bを一気に4分音符と 全音符で弾かしてみました. ソースコーデングは以下の簡単な実験的な記述です.
     \score{ {<c' d' e' f' g' a' b'>4 r2. | <c' d' e' f' g' a' b'>1 | }
              \layout { indent = 0.00\mm line-width = 60.00\mm } \midi{} }

ご自分でテキストファイルへコーデングして, lilypondでコンパイルしてmidiを聴いて 見てください. 上記のようなコーデングはゲーム感覚で実験的な遊び要素的な 楽しみです. パソコンの前で......いくらでも, ご自分の創意で楽しめます.
\layout { indent = 0.00\mm line-width = 60.00\mm }はこの文書での 貼り付けの為に記述したのであって, 実際の実験では\layout{}で済みます.

ちなみに, Windows OSのワードプロセッサーであるワードや, 非常に優れたソフト・ エクセルへも, この文書の様に文章の中に譜面を貼り付けは可能です.
music typesetterであるLilyPondは, 使いようによってMusic Gameソフトとして パソコン上で遊べます.



• LilyPondで遊ぶ楽しむ(音のゲーム)
この文書の最終的な目標は, このLilyPondでゲームを始めよう! が目的でした. まず第一に LilyPondコンパイル後に自動で譜面表示/midi奏でを自動で行う, 簡単なバッチファイル の作成から始めます.
以下の内容を記述したファイルを作成します. ファイルネームly-run.cmd
(バッチファイルの名前は, 任意名.cmd が鉄則です(Windows OS側の法規).
     lilypond %1.ly
     %1.pdf | %1.midi

これは, lilypondの任意名前の原稿ファイルをコンパイル後にpdfファイルと midiファイルを自動openする極めて簡単なWindows OS でのバッチファイルです.


例えば,以下の原稿記述でファイルを新規作成しまして, ファイルネームtest.ly
(音楽原稿ファイル名前は, 任意名.lyが鉄則です(LilyPond OS側の法規).
     \score{ {\key c\major <c' e' g'>1 | \key a\major <cis' e' gis'>1} \layout{} \midi{} }

ファイル名をtest.ly等と名づけて保存し,
cmd.exe(コマンドプロンプト)で >ly-run test[Enter] とすれば, test.pdfと test.midiが自動でopenします.
test.png


ここで, 注意が必要なのは. ly-run.cmdもtest.lyも同じ場所内 (フォルダー or ディレクトリ)に有ることです(一番簡単な方法). その場所内で, cmd.exe(コマンドプロンプト)で >ly-run test[Enter]と実地すること, 曲終了後は, wmplayer.exe(Windows Media Player)を必ず閉じること. 以上です.


test.lyの遊びは, <c' e' g'>1の響きのc,gを半音高くして響きを聴いてみたのですが,
これを, 音楽的なややっこしい(難しい語で)解説すると. 音楽界のデフォルト常識である 4/4拍子ハ長調ト音記号位置c d gの和音響きを, イ長調で響かせ聴いてみた ......と言った説明になります.
LilyPondのデフォルト組版は, この文書の初期の2例で検証済みです. 四分音符・4/4拍子・へ音記号・ハ長調で組版出力されます. midiは指定楽器がなければ, "acoustic grand"(ピアノ)で作成されます.

理論は別として\score{{...music code...}\layout{}\midi{}}*****.lyでsaveして, ly-run.cmdと実行すれば, 譜面表示とmidiが鳴り出します.
では, a\major <cis' e' gis>1をtrumpetで鳴らしてみます(test-2.ly).

     \score{{\key a\major\set Staff.midiInstrument="trumpet"<cis' e' gis'>1}\layout{}\midi{}}
test-2.png

実行は, cmd.exe >ly-run test-2[Enter] で......自動車の警笛音響きに 類似音でしょうか.

test.ly とtest-2.lyのコーデングで半角空白の有無の差違が 見てとられると思います. 通常は
\key a\major \set Staff.midiInstrument... \layout{} \midi{}ですが,
\key a\major\set Staff.midiInstrument...\layout{}\midi{}は許されます,
\keya\major\set Staff.midiInstrument...は駄目です.
"\文字列"の後に明確である命令語等々が続くときは, 半角空白は概ね省略できる.
"\文字列"の後にテキスト文字が続く場合には, 明示的に命令語文字列は此処で終わり を知らせる為に, 半角空白が必要になります.
またlilyPondのシーケンス文字列の内には半角空白を入れたシーケンス(配列綴り)が 存在します, それも絶対に省略できません.
コーデングに於ける改行は, 明示的に文字列(単語)の終わりで改行です. テキスト文字列 といえども文字列(単語)の途中では改行をしないほうが良いです.

" %一行以内 "はLilyPondではコメント開始で"%"以後の文字列は改行 まで無視されます.
数行に渡るコメント記述は, 行頭を%{で開始し...コメント最終次行頭で%}と 宣言すれば, その間の記述は全て無視されます. これらは, 著者の覚書(備忘録)用です.


Windows OSのCLI(コマンドラインインターフェイス)
cmd窓で >help > cmd-list.txt[Enter]でコマンドラインの命令語類とその解説が cmd-list.txtファイル名で作成されますので, コマンドの検証はそちらでお願いします.
また, 命令の個別に欲しい時(例えばcopyコマンド)は.
>help copy >> cmd-list.txt[enter] で, 上記のcmd-list.txtの最終行から 追加上書きで取得できます. 詳細は市販本でお願いします.

LilyPondの解説書はそのバージョンによる, オンラインファイルである,
http://lilypond.org/doc/v2.10/Documentation/
に存在しています, また, 音楽記法に関係する情報がサンプルとして格納されています.




• LilyPondで遊ぶ楽しむ・ゲーム
play.png
この後に続くと言うか, 来るべき音(or メロディー)は......? 人それぞれで しょう, 貴方ならこの後をどう展開するか? (以下, Draft Source code)

     %% -*- Coding: utf-8 -*-
     \version "2.10.0"
     
     \header {
       dedication = "Enjoy by LilyPond"
       title = "As for coming next, what kind of sound? "
       subtitle = "Piano "
       subsubtitle = " Key e minor "
       instrument = " "
       poet = ""
       composer = \markup{\italic "your name"}
       arranger = \markup{\tiny "date"}
     }
     
     play = { \autoBeamOff
     %1-6
              \repeat volta 2 { r8 e'8_\pp fis'8[^\< a'] g'4 | b' c''8[ e''] d''4\! | }
               e'4 fis' g' | c'8[ e'16 g'] c''8[ b'] a'4 | fis'2.( | e'2.) |
     \break
     %%7- ここから描き始める
     
            }
     
     %% get music sheet ----------------------------------------------------------
     \score { \new Staff { \clef treble \key e\minor \time 3/4 \tempo 8 = 180
                            \play
                          }
     \layout {}
             }
     
     %% get music midi ------------------------------------------------------------
     \score { \new Staff { \clef treble \key e\minor \time 3/4 \tempo 8 = 180
                            \unfoldRepeats \play
                          }
     \midi {}
            }

たとえば, ファイル名をplay.lyとsaveして, 既述の >ly-run play で 譜面とmidiを検証しながらコーデングを繰り返し, 自分が納得できる作りが出来たら このゲーム貴方の勝ちです. でも, 完全に満足できるコーデングは出来るとは思えない.
\key e\minorが嫌なら\key g\major...... e\minorg\majorでmidiを聞き比べてみると......!
私の描き上げた作品; http://www.ipika.info/Poem/html/2007-mind2.html





Previous: Second steps, Up: Top

Concept Index