SlideShare a Scribd company logo
LilyPond
... みんなの楽譜作成
2015年10月24日
細田 真道
http://www.trueroad.jp/
~第10回 日本OSS奨励賞 受賞 活動紹介~
LilyPondとは?
● 楽譜作成プログラムです
– ソースをコンパイルすると楽譜ができます
● http://www.lilypond.org/
このソースを
{ c d e f g a b }
入力:ソースファイル test.ly
テキストファイル(UTF-8)
コンパイルします
{ c d e f g a b }
$ lilypond test.ly
コンパイル
入力:ソースファイル test.ly
テキストファイル(UTF-8)
楽譜ができました
{ c d e f g a b }
$ lilypond test.ly
コンパイル
出力:楽譜 test.pdf
入力:ソースファイル test.ly
テキストファイル(UTF-8)
PDFなど
例えば、こんなソースから、
LilyPondソースファイル一式中の
input/regression/typography-demo.ly
より抜粋
header {
title = "LilyPond demo"
enteredby="Han-Wen Nienhuys"
maintainer="hanwen@xs4all.nl"
texidoc = "
heavily mutilated Edition Peters Morgenlied by Schubert"
}
version "2.19.21"
#(ly:expect-warning (_ "(De)crescendo with unspecified starting volume in MIDI."))
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)
system-system-spacing.basic-distance = #10.3
ragged-bottom = ##t
% Font settings for Cyrillic and Hebrew
% Linux Libertine fonts contain Cyrillic and Hebrew glyphs.
#(define fonts
(set-global-fonts
#:roman "Linux Libertine O,serif"
#:sans "Linux Biolinum O,sans-serif"
#:typewriter "Linux Libertine Mono O,monospace"
))
}
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
autoBeamOff
<< s2.^markup { larger line { hspace #-3.1 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 { a'16[ g fis! g] f![ d] } |
g4. r8 gis gis |
a4 a16.[ b32] c8[( a]) fis8 |
g4.~ 8-fermata
}
firstVerse = lyricmode {
set stanza = "1."
Sü -- ßes Licht! Aus
ignoreMelisma
gol --
ignoreMelismaOff
de -- nen Pfor -- ten brichst du __ |
sie -- gend durch __ die Nacht. Schö -- ner Tag, du __ bist er -- wacht. __
}
...
header {
title = "LilyPond demo"
enteredby="Han-Wen Nienhuys"
maintainer="hanwen@xs4all.nl"
texidoc = "
heavily mutilated Edition Peters Morgenlied by Schubert"
}
version "2.19.21"
#(ly:expect-warning (_ "(De)crescendo with unspecified starting volume in MIDI."))
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)
system-system-spacing.basic-distance = #10.3
ragged-bottom = ##t
% Font settings for Cyrillic and Hebrew
% Linux Libertine fonts contain Cyrillic and Hebrew glyphs.
#(define fonts
(set-global-fonts
#:roman "Linux Libertine O,serif"
#:sans "Linux Biolinum O,sans-serif"
#:typewriter "Linux Libertine Mono O,monospace"
))
}
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
autoBeamOff
<< s2.^markup { larger line { hspace #-3.1 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 { a'16[ g fis! g] f![ d] } |
g4. r8 gis gis |
a4 a16.[ b32] c8[( a]) fis8 |
g4.~ 8-fermata
}
firstVerse = lyricmode {
set stanza = "1."
Sü -- ßes Licht! Aus
ignoreMelisma
gol --
ignoreMelismaOff
de -- nen Pfor -- ten brichst du __ |
sie -- gend durch __ die Nacht. Schö -- ner Tag, du __ bist er -- wacht. __
}
こんな楽譜ができます
...
関わったきっかけ
● 最初は単なるユーザでした
● でも、ちょっと気になることが、、、
LilyPad
● Windows版に付属しているテキストエディタ
– タイトルやメニューが化けていました
– でも、特に困りませんでした
● 他のエディタを使えばいい
● おまけレベル
とはいえ、
● LilyPadが起動される機会は多い
– デスクトップのショートカット
– ソースファイル(*.ly)の編集に関連付け
● これでは人に勧めにくい???
– オマケかもしれないがLilyPondの顔ともいえる?
– 起動すると、いきなり文字化け画面が出る
● それよりも、何か気持ち悪い
原因を探ってみよう!
● ソースのどこかがおかしいんだろう
● まずは自分でビルドしてよう
自分でビルドしてみる
● なんと、文字化けしませんでした
– ソースは間違っていない
– ビルド環境に問題がありそう
では原因は?
● いろいろ調べたら、、、
– 古いbinutils(のリソースコンパイラwindres)に
問題あり
● 公式バイナリのビルド環境が古いのでは???
メーリングリストデビュー
● LilyPond開発者メーリングリストへ投稿
– 公式バイナリのビルド環境でbinutilsを、アップ
デートして欲しい!!!
その結果
● でも、なかなかうまく対応してもらえません
– 日本語環境なんか興味ない???
– そもそもオマケだし???
● いや、そうじゃなくて、実は結構大変???
LilyPond公式バイナリ
● http://www.lilypond.org/ からダウンロード可能
– Linux
● x86
● x86_64
● ppc
– FreeBSD
● x86
● x86_64
– Mac OS X
● x86
● ppc
– Windows
● x86
全8種類
ビルドツールGUB
● 公式バイナリ全8種をmake一発でビルド
● やっていること
– 必要なソースをダウンロード
● 環境構築用から依存関係からとにかくすべて
– クロスコンパイル環境を構築
● binutils, gcc, glibc, etc.
– 依存関係のあるライブラリ類をクロスコンパイル
● fontconfig, pango, freetype, ghostscript, guile, etc.
– LilyPond本体をクロスコンパイル
● 楽譜用フォントも生成
– 公式バイナリのインストーラをビルド
binutilsをアップデートすると
● 依存関係の根っこに近い部分なので、
– クロスコンパイル環境すべてビルドしなおし
– 新しいbinutilsではビルドできないものも
● あちこちに影響が
ちょうどそのころ
● GUBのgccは、かなり古かった
● 新しいgccに入れ替えることになった
– LilyPondの開発者は新しいgccを使っていた
● C++の新しいテンプレート等を使うと
– 開発者はビルドOK、テストもOK
– リポジトリにpush
– しかしGUBビルド不能、リリースできず
● でも新しいテンプレートを使いたい!
gccをアップデートすると
● ほぼすべてのバイナリがgccでビルドされる
● ので、あちこちに問題が発生
– 古めのライブラリは全滅に近い
● 新しいgccではビルドできないものが多い
– ライブラリをアップデートすると
● 新しいgccでビルドできるようになるが
● LilyPond向けにパッチを当てていたものは、パッチ作り直し要
● 依存関係でさらに別のライブラリ等がビルドできなくなる
– などなど
● 影響範囲はbinutilsの比ではない
その結果
● LilyPondは新しいテンプレートを使ってしまう
● GUBのgccアップデートは未完了
● つまり、リリースができない!
リリース履歴抜粋
● LilyPond 2.19.13 2014-08-31
● LilyPond 2.19.14 2014-09-14
● LilyPond 2.19.15 2014-09-28
– ここで停滞しはじめました
なんとかしてみよう!
(ついでにbinutilsも新しくしよう!!)
→というわけで少しずつ直し始めました
LilyPond 2.19.16 released February 28, 2015
At long last, we are very happy to announce the release of LilyPond 2.19.16. This release includes a number of enhancements, and contains
some work in progress. You will have access to the very latest features, but some may be incomplete, and you may encounter bugs and crashes.
If you require a stable version of Lilypond, we recommend using the 2.18 version.
We would like to acknowledge and thank Masamichi Hosoda for making this release possible with his work on updating GUB, the build tool.
約半年の沈黙を破ってリリース
ニュースに謝辞をのせていただきました
文字化けも直りました
その後は順調にリリース
● LilyPond 2.19.13 2014-08-31
● LilyPond 2.19.14 2014-09-14
● LilyPond 2.19.15 2014-09-28
– 約半年のブランク
● LilyPond 2.19.16 2015-02-28
● LilyPond 2.19.17 2015-03-15
● LilyPond 2.19.18 2015-04-05 以下続く
さいごに
● ぜひ使ってみてください
● 公式サイトにチュートリアル等あります
– http://www.lilypond.org/introduction.ja.html
– http://www.lilypond.org/manuals.ja.html
– 先人の方々のおかげで、日本語化はかなり進んでいます
– (開発版Ver. 2.19系列では)最新化されていないマニュアル
もありますが、少しずつ進めています
● おかしいなと思ったら英語版マニュアルと見比べてみてください
● オープンソースな楽譜ソースファイルもあります
– http://www.mutopiaproject.org/

More Related Content

Recently uploaded

アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 

Recently uploaded (6)

アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 

Featured

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Project for Public Spaces & National Center for Biking and Walking
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
DevGAMM Conference
 

Featured (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

LilyPond みんなの楽譜作成 ~第10回 日本OSS奨励賞 受賞 活動紹介~