Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
header {
title = "LilyPond demo"
enteredby="Han-Wen Nienhuys"
maintainer="hanwen@xs4all.nl"
texidoc = "
heavily mutilated ...
関わったきっかけ
● 最初は単なるユーザでした
● でも、ちょっと気になることが、、、
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
● x8...
ビルドツールGUB
● 公式バイナリ全8種をmake一発でビルド
● やっていること
– 必要なソースをダウンロード
● 環境構築用から依存関係からとにかくすべて
– クロスコンパイル環境を構築
● binutils, gcc, glibc, ...
binutilsをアップデートすると
● 依存関係の根っこに近い部分なので、
– クロスコンパイル環境すべてビルドしなおし
– 新しいbinutilsではビルドできないものも
● あちこちに影響が
ちょうどそのころ
● GUBのgccは、かなり古かった
● 新しいgccに入れ替えることになった
– LilyPondの開発者は新しいgccを使っていた
● C++の新しいテンプレート等を使うと
– 開発者はビルドOK、テストもOK
– リポジ...
gccをアップデートすると
● ほぼすべてのバイナリがgccでビルドされる
● ので、あちこちに問題が発生
– 古めのライブラリは全滅に近い
● 新しいgccではビルドできないものが多い
– ライブラリをアップデートすると
● 新しいgccでビ...
その結果
● LilyPondは新しいテンプレートを使ってしまう
● GUBのgccアップデートは未完了
● つまり、リリースができない!
リリース履歴抜粋
● 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 released February 28, 2015
At long last, we are very happy to announce the release of LilyPond 2.19.16. T...
その後は順調にリリース
● LilyPond 2.19.13 2014-08-31
● LilyPond 2.19.14 2014-09-14
● LilyPond 2.19.15 2014-09-28
– 約半年のブランク
● LilyPon...
さいごに
● ぜひ使ってみてください
● 公式サイトにチュートリアル等あります
– http://www.lilypond.org/introduction.ja.html
– http://www.lilypond.org/manuals.j...
Upcoming SlideShare
Loading in …5
×

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

622 views

Published on

第10回 日本OSS奨励賞 受賞 活動紹介ライトニングトークで使った資料です。
http://ossforum.jp/ossaward10th2

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 1. LilyPond ... みんなの楽譜作成 2015年10月24日 細田 真道 http://www.trueroad.jp/ ~第10回 日本OSS奨励賞 受賞 活動紹介~
  2. 2. LilyPondとは? ● 楽譜作成プログラムです – ソースをコンパイルすると楽譜ができます ● http://www.lilypond.org/
  3. 3. このソースを { c d e f g a b } 入力:ソースファイル test.ly テキストファイル(UTF-8)
  4. 4. コンパイルします { c d e f g a b } $ lilypond test.ly コンパイル 入力:ソースファイル test.ly テキストファイル(UTF-8)
  5. 5. 楽譜ができました { c d e f g a b } $ lilypond test.ly コンパイル 出力:楽譜 test.pdf 入力:ソースファイル test.ly テキストファイル(UTF-8) PDFなど
  6. 6. 例えば、こんなソースから、 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. __ } ...
  7. 7. 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. __ } こんな楽譜ができます ...
  8. 8. 関わったきっかけ ● 最初は単なるユーザでした ● でも、ちょっと気になることが、、、
  9. 9. LilyPad ● Windows版に付属しているテキストエディタ – タイトルやメニューが化けていました – でも、特に困りませんでした ● 他のエディタを使えばいい ● おまけレベル
  10. 10. とはいえ、 ● LilyPadが起動される機会は多い – デスクトップのショートカット – ソースファイル(*.ly)の編集に関連付け ● これでは人に勧めにくい??? – オマケかもしれないがLilyPondの顔ともいえる? – 起動すると、いきなり文字化け画面が出る ● それよりも、何か気持ち悪い
  11. 11. 原因を探ってみよう! ● ソースのどこかがおかしいんだろう ● まずは自分でビルドしてよう
  12. 12. 自分でビルドしてみる ● なんと、文字化けしませんでした – ソースは間違っていない – ビルド環境に問題がありそう
  13. 13. では原因は? ● いろいろ調べたら、、、 – 古いbinutils(のリソースコンパイラwindres)に 問題あり ● 公式バイナリのビルド環境が古いのでは???
  14. 14. メーリングリストデビュー ● LilyPond開発者メーリングリストへ投稿 – 公式バイナリのビルド環境でbinutilsを、アップ デートして欲しい!!!
  15. 15. その結果 ● でも、なかなかうまく対応してもらえません – 日本語環境なんか興味ない??? – そもそもオマケだし??? ● いや、そうじゃなくて、実は結構大変???
  16. 16. LilyPond公式バイナリ ● http://www.lilypond.org/ からダウンロード可能 – Linux ● x86 ● x86_64 ● ppc – FreeBSD ● x86 ● x86_64 – Mac OS X ● x86 ● ppc – Windows ● x86 全8種類
  17. 17. ビルドツールGUB ● 公式バイナリ全8種をmake一発でビルド ● やっていること – 必要なソースをダウンロード ● 環境構築用から依存関係からとにかくすべて – クロスコンパイル環境を構築 ● binutils, gcc, glibc, etc. – 依存関係のあるライブラリ類をクロスコンパイル ● fontconfig, pango, freetype, ghostscript, guile, etc. – LilyPond本体をクロスコンパイル ● 楽譜用フォントも生成 – 公式バイナリのインストーラをビルド
  18. 18. binutilsをアップデートすると ● 依存関係の根っこに近い部分なので、 – クロスコンパイル環境すべてビルドしなおし – 新しいbinutilsではビルドできないものも ● あちこちに影響が
  19. 19. ちょうどそのころ ● GUBのgccは、かなり古かった ● 新しいgccに入れ替えることになった – LilyPondの開発者は新しいgccを使っていた ● C++の新しいテンプレート等を使うと – 開発者はビルドOK、テストもOK – リポジトリにpush – しかしGUBビルド不能、リリースできず ● でも新しいテンプレートを使いたい!
  20. 20. gccをアップデートすると ● ほぼすべてのバイナリがgccでビルドされる ● ので、あちこちに問題が発生 – 古めのライブラリは全滅に近い ● 新しいgccではビルドできないものが多い – ライブラリをアップデートすると ● 新しいgccでビルドできるようになるが ● LilyPond向けにパッチを当てていたものは、パッチ作り直し要 ● 依存関係でさらに別のライブラリ等がビルドできなくなる – などなど ● 影響範囲はbinutilsの比ではない
  21. 21. その結果 ● LilyPondは新しいテンプレートを使ってしまう ● GUBのgccアップデートは未完了 ● つまり、リリースができない!
  22. 22. リリース履歴抜粋 ● LilyPond 2.19.13 2014-08-31 ● LilyPond 2.19.14 2014-09-14 ● LilyPond 2.19.15 2014-09-28 – ここで停滞しはじめました なんとかしてみよう! (ついでにbinutilsも新しくしよう!!) →というわけで少しずつ直し始めました
  23. 23. 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. 約半年の沈黙を破ってリリース ニュースに謝辞をのせていただきました 文字化けも直りました
  24. 24. その後は順調にリリース ● 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 以下続く
  25. 25. さいごに ● ぜひ使ってみてください ● 公式サイトにチュートリアル等あります – http://www.lilypond.org/introduction.ja.html – http://www.lilypond.org/manuals.ja.html – 先人の方々のおかげで、日本語化はかなり進んでいます – (開発版Ver. 2.19系列では)最新化されていないマニュアル もありますが、少しずつ進めています ● おかしいなと思ったら英語版マニュアルと見比べてみてください ● オープンソースな楽譜ソースファイルもあります – http://www.mutopiaproject.org/

×