diff options
author | EuAndreh <eu@euandre.org> | 2021-01-01 22:17:00 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-01-01 22:22:30 -0300 |
commit | 8344825a7b4d006fb6a163d87636b589d8af25cc (patch) | |
tree | 2f9bd12b7bc64c661f6d2332bbf618dcfce584b4 | |
parent | post.html: Add trailing '/' to source tag (diff) | |
download | euandre.org-8344825a7b4d006fb6a163d87636b589d8af25cc.tar.gz euandre.org-8344825a7b4d006fb6a163d87636b589d8af25cc.tar.xz |
Add support for "Music"
-rw-r--r-- | _config.yml | 27 | ||||
-rw-r--r-- | _includes/music-listing.html | 20 | ||||
-rw-r--r-- | _layouts/default.html | 3 | ||||
-rw-r--r-- | _plugins/generate-lilypond.rb | 28 | ||||
-rw-r--r-- | locale/eo/LC_MESSAGES/music.po | 28 | ||||
-rw-r--r-- | locale/fr/LC_MESSAGES/music.po | 28 | ||||
-rw-r--r-- | locale/pt/LC_MESSAGES/music.po | 28 | ||||
-rw-r--r-- | music.md | 13 | ||||
-rw-r--r-- | music/choro-da-saudade.ly | 48 | ||||
-rw-r--r-- | music/dengoso.ly | 175 | ||||
-rw-r--r-- | music/marcha-dos-marinheiros.ly | 48 | ||||
-rw-r--r-- | musica.md | 13 | ||||
-rw-r--r-- | musique.md | 13 | ||||
-rw-r--r-- | muziko.md | 13 | ||||
-rw-r--r-- | scripts/spelling/international.txt | 12 |
15 files changed, 497 insertions, 0 deletions
diff --git a/_config.yml b/_config.yml index fa3fe9d..87ecd9d 100644 --- a/_config.yml +++ b/_config.yml @@ -71,6 +71,17 @@ all_collections: - podcasts - screencasts +musics: + - ref: dengoso + title: Dengoso + composer: João Pernambuco + - ref: marcha-dos-marinheiros + title: Marcha dos Marinheiros + composer: Canhoto + - ref: choro-da-saudade + title: Choro da Saudade + composer: Agustín Barrios + t: description: en: "EuAndreh's website" @@ -315,6 +326,22 @@ t: pt: "screencasts-por-categoria.md" fr: "screencasts-par-categorie.md" eo: "screencasts-lau-kategorio.md" + music: + url: + en: "music.md" + pt: "musica.md" + fr: "musique.md" + eo: "muziko.md" + name: + en: "Music" + pt: "Música" + fr: "Musique" + eo: "Muziko" + scores: + en: "Scores" + pt: "Partituras" + fr: "Partitions" + eo: "Partituroj" posted_on: en: "Posted on" pt: "Postado em" diff --git a/_includes/music-listing.html b/_includes/music-listing.html new file mode 100644 index 0000000..fc50888 --- /dev/null +++ b/_includes/music-listing.html @@ -0,0 +1,20 @@ +<h3> + {{ site.t.music.scores[page.lang] }} +</h3> + +<ul class="no-style"> + +{% for m in site.musics | sort: "composer" %} + <li> + {{ m.composer }} + <br /> + <a href="{% link music/{{ m.ref }}.pdf %}">{{ m.title }}</a> + <br /> + <audio controls> + <source src="{% link music/{{ m.ref }}.ogg %}" type="audio/ogg" /> + </audio> + <!-- <strong>{{ m.title }}</strong> - --> + <!-- <a href="{% link music/{{ m.ref }}.ogg %}">Audio</a> --> + </li> +{% endfor %} +</ul> diff --git a/_layouts/default.html b/_layouts/default.html index c5bbdfe..36d5671 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -54,6 +54,9 @@ {% if site.flags.screencast %} <a href="{% link {{ site.t.screencasts.url[page.lang] }} %}">{{ site.t.screencasts.name[page.lang] }}</a> {% endif %} + {% if site.flags.music %} + <a href="{% link {{ site.t.music.url[page.lang] }} %}">{{ site.t.music.name[page.lang] }}</a> + {% endif %} <a href="{% link {{ site.t.about.url[page.lang] }} %}">{{ site.t.about.name[page.lang] }}</a> </div> {% if page.ref != nil %} diff --git a/_plugins/generate-lilypond.rb b/_plugins/generate-lilypond.rb new file mode 100644 index 0000000..c0c1a13 --- /dev/null +++ b/_plugins/generate-lilypond.rb @@ -0,0 +1,28 @@ +module Jekyll + class LilyPondGenerator < Generator + safe true + priority :high + + def generate(site) + site.config['musics'].each do |music| + ref = music['ref'] + file = "music/#{ref}" + ly = "#{file}.ly" + pdf = "#{file}.pdf" + unless File.exist? pdf then + puts "Missing '#{pdf}', generating..." + puts `lilypond -o #{file} #{ly}` + site.static_files << Jekyll::StaticFile.new(site, site.source, '', pdf) + end + + ogg = "#{file}.ogg" + midi = "#{file}.midi" + unless File.exist? ogg then + puts "Missing '#{ogg}', generating..." + puts `timidity -Ov #{midi}` + site.static_files << Jekyll::StaticFile.new(site, site.source, '', ogg) + end + end + end + end +end diff --git a/locale/eo/LC_MESSAGES/music.po b/locale/eo/LC_MESSAGES/music.po new file mode 100644 index 0000000..1ea2c7c --- /dev/null +++ b/locale/eo/LC_MESSAGES/music.po @@ -0,0 +1,28 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" + +msgid "title: Music" +msgstr "title: Muziko" + +msgid "layout: default" +msgstr "layout: default" + +msgid "lang: en" +msgstr "lang: eo" + +msgid "ref: music" +msgstr "ref: music" + +msgid "{% include music-listing.html %}" +msgstr "{% include music-listing.html %}" diff --git a/locale/fr/LC_MESSAGES/music.po b/locale/fr/LC_MESSAGES/music.po new file mode 100644 index 0000000..61f9148 --- /dev/null +++ b/locale/fr/LC_MESSAGES/music.po @@ -0,0 +1,28 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" + +msgid "title: Music" +msgstr "title: Musique" + +msgid "layout: default" +msgstr "layout: default" + +msgid "lang: en" +msgstr "lang: fr" + +msgid "ref: music" +msgstr "ref: music" + +msgid "{% include music-listing.html %}" +msgstr "{% include music-listing.html %}" diff --git a/locale/pt/LC_MESSAGES/music.po b/locale/pt/LC_MESSAGES/music.po new file mode 100644 index 0000000..24e4e8f --- /dev/null +++ b/locale/pt/LC_MESSAGES/music.po @@ -0,0 +1,28 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" + +msgid "title: Music" +msgstr "title: Música" + +msgid "layout: default" +msgstr "layout: default" + +msgid "lang: en" +msgstr "lang: pt" + +msgid "ref: music" +msgstr "ref: music" + +msgid "{% include music-listing.html %}" +msgstr "{% include music-listing.html %}" diff --git a/music.md b/music.md new file mode 100644 index 0000000..0eb2120 --- /dev/null +++ b/music.md @@ -0,0 +1,13 @@ +--- + +title: Music + +layout: default + +lang: en + +ref: music + +--- + +{% include music-listing.html %} diff --git a/music/choro-da-saudade.ly b/music/choro-da-saudade.ly new file mode 100644 index 0000000..513239b --- /dev/null +++ b/music/choro-da-saudade.ly @@ -0,0 +1,48 @@ +\version "2.20.0" + +\header { + title = "Choro da Saudade" + composer = "Agustín Barrios" + copyright = \markup { + \with-url #"https://creativecommons.org/licenses/by-sa/4.0/" \line { + CC BY-SA 4.0 + } + } + tagline = \markup { + \with-url #"https://euandre.org/music.html" \line { + euandre.org/music.html + } + } +} + +globals = { + \clef "treble_8" + \key d \major + \time 2/4 + \set fingeringOrientations = #'(left) + \tempo 4 = 100 +} + +upper = \relative c { + \globals +} + +lower = \relative c { + \globals +} + +staff = \new Staff << + \upper + \\ + \lower +>> + +\score { + \staff + \layout { } +} + +\score { + \unfoldRepeats \staff + \midi { } +}
\ No newline at end of file diff --git a/music/dengoso.ly b/music/dengoso.ly new file mode 100644 index 0000000..158d05b --- /dev/null +++ b/music/dengoso.ly @@ -0,0 +1,175 @@ +\version "2.20.0" + +\header { + title = "Dengoso" + composer = "João Pernambuco" + meter = "Andante moderato" % FIXME + copyright = \markup { + \with-url #"https://creativecommons.org/licenses/by-sa/4.0/" \line { + CC BY-SA 4.0 + } + } + tagline = \markup { + \with-url #"https://euandre.org/music.html" \line { + euandre.org/music.html + } + } +} + +% \include "pestana.ly" +% FIXME: turn into a function +cWithSlash = \markup { + \fontsize #-2 + \combine \roman C \translate #'(0.6 . -0.4) \draw-line #'(0 . 2.0) +} + +% FIXME +% str -> fret-number +pestana = +#(define-music-function (barre location str music) (string? ly:music?) + (let ((elts (extract-named-music music '(NoteEvent EventChord)))) + (if (pair? elts) + (let ((first-element (first elts)) + (last-element (last elts))) + (set! (ly:music-property first-element 'articulations) + (cons (make-music 'TextSpanEvent 'span-direction -1) + (ly:music-property first-element 'articulations))) + (set! (ly:music-property last-element 'articulations) + (cons (make-music 'TextSpanEvent 'span-direction 1) + (ly:music-property last-element 'articulations)))))) + #{ + \once \override TextSpanner.font-shape = #'upright + \once \override TextSpanner.style = #'line + \once \override TextSpanner.bound-details = + #`((right + (text . ,#{ \markup { \draw-line #'( 0 . -.5) } #}) + (Y . 0)) + (left + (text . ,#{ \markup { \cWithSlash \fontsize #-2 #str } #}) + (Y . 0) + (attach-dir . -4))) + $music + #}) + +globals = { + \clef "treble_8" + \key d \major + \time 2/4 + \set fingeringOrientations = #'(left) + \tempo 4 = 100 +} + +upper = \relative c { + \globals + + r16 <d-0>8 <e-1>16 <fis-3> <e-1>8 <d-0>16 | + <a'-3>8. a16 <g-1>8. g16 | + <fis-3>8. fis16 <f-2>8. <e-1>16 | + r2 | + + r16 d8 e16 fis e8 d16 | + a'8. a16 g8. g16 | + fis8. fis16 f8. e16 | + r2 | + + <d'-2>8 \pestana #"II" { <fis,-3 a-1> fis' d16 } <e-0>~ | + e2 | + d8 \pestana #"II" { <fis, a> fis' d16 } e~ | + e2 | + + \repeat volta 2 { + \pestana #"V" { + a16 <a,-3 d-4>8 <a d>16 r16 <g'-4>8 <fis-3>16 | + a16 <g,-1 cis-2>8 <g cis>16 r16 <cis-2> <fis-4> <cis-2> | + } + <a-1 e'-0>16 <a d>8 <a cis>16^\markup { \cWithSlash \fontsize #-2 II } <a b>8 a | + <b-0>16 <cis,-3 g'-4>8 <cis g'>16 \pestana #"II" { cis'8 <g a> } | + + <d'-2>16 <fis,-3 a-1>8 <fis a>16 <fis'-4>8 <a,-3 c-2> | + <e'-0>16 <a,-2 cis-3>8 <a cis>16 r16 <g-0> <cis-3> <e-0> | + <d gis d'>16 <d gis d'>8 <d gis d'>16 <d gis cis>8 <d gis b> | + <e'-4>16 <cis,-2 g'-3>8 <cis g'>16 <cis g' b>8 <cis-2 g'-3 a-1> | + + % FIXME: map previous notes, removing fingering notation + \pestana #"V" { + a'16 <a, d>8 <a d>16 r16 <g'>8 <fis>16 | + a16 <g, cis>8 <g cis>16 r16 <cis> <fis> <cis> | + } + <a e'>16 <a d>8 <a cis>16^\markup { \cWithSlash \fontsize #-2 II } <a b>8 a | + <b>16 <cis, g'>8 <cis g'>16 \pestana #"II" { cis'8 <g a> } | + + d'16 <fis, a>8 <fis a>16 dis'8 <fis, a> | + <e'-0>8 <b-3 d-2>16 <ais-2 cis-1> <g b e> <d'-2>( <b-0>) <g-0> | + <fis-3> <d'-2> <a-1> <fis-3> <e-1> <cis'-2> <g-0> <e-1> + } + \alternative { + { d, \pestana #"II" { a'' d fis g fis g gis } | } + { r4 <d fis d'>^\markup { \cWithSlash \fontsize #-2 VII } | } + } + \bar "||" +} + +lower = \relative c { + \globals + + % FIXME: \6 to D + r2 | + r8 a r a | + r8 a r a | + r16 <a-0>8 <b-1>16 <cis-3> <b-1>8 <a-0>16 | + + d16 r8. r4 + r8 a r a | + r8 a r a | + r16 a8 b16 cis b8 a16 | + + d,4. a''16 a,~ | + a a8 b16 cis b8 a16 + d,4. a''16 a,~ | + a a8 b16 cis b8 a16 | + + \repeat volta 2 { + d,4 dis' | + <e-3> g, | + <fis'-3>16 fis8 fis16 fis8 fis | + e,4 cis' | + + d, dis | + <e-1> <ais-1> | + e' e | + a, r4 | + + d, <dis'-2> | + e g, | + fis'16 fis8 fis16 fis8 fis | + e,4 cis' | + + d, fis | + <e-4>8 r8 r4 | + fis'8. fis16 e8. e16 | + } + \alternative { + { d,2 | } + { d8 a' d4 | } + } +} + +staff = \new Staff << + \upper + \\ + \lower +>> + +\score { + \staff + \layout { } +} + +\score { + \unfoldRepeats \staff + \midi { } +} + +% duas coisas: +% marcação de cordas +% compartilhar notas entre vozes
\ No newline at end of file diff --git a/music/marcha-dos-marinheiros.ly b/music/marcha-dos-marinheiros.ly new file mode 100644 index 0000000..1de28d0 --- /dev/null +++ b/music/marcha-dos-marinheiros.ly @@ -0,0 +1,48 @@ +\version "2.20.0" + +\header { + title = "Marcha dos Marinheiros" + composer = "Canhoto" + copyright = \markup { + \with-url #"https://creativecommons.org/licenses/by-sa/4.0/" \line { + CC BY-SA 4.0 + } + } + tagline = \markup { + \with-url #"https://euandre.org/music.html" \line { + euandre.org/music.html + } + } +} + +globals = { + \clef "treble_8" + \key d \major + \time 2/4 + \set fingeringOrientations = #'(left) + \tempo 4 = 100 +} + +upper = \relative c { + \globals +} + +lower = \relative c { + \globals +} + +staff = \new Staff << + \upper + \\ + \lower +>> + +\score { + \staff + \layout { } +} + +\score { + \unfoldRepeats \staff + \midi { } +}
\ No newline at end of file diff --git a/musica.md b/musica.md new file mode 100644 index 0000000..c8a4d5b --- /dev/null +++ b/musica.md @@ -0,0 +1,13 @@ +--- + +title: Música + +layout: default + +lang: pt + +ref: music + +--- + +{% include music-listing.html %} diff --git a/musique.md b/musique.md new file mode 100644 index 0000000..9f03c88 --- /dev/null +++ b/musique.md @@ -0,0 +1,13 @@ +--- + +title: Musique + +layout: default + +lang: fr + +ref: music + +--- + +{% include music-listing.html %} diff --git a/muziko.md b/muziko.md new file mode 100644 index 0000000..6abb2d7 --- /dev/null +++ b/muziko.md @@ -0,0 +1,13 @@ +--- + +title: Muziko + +layout: default + +lang: eo + +ref: music + +--- + +{% include music-listing.html %} diff --git a/scripts/spelling/international.txt b/scripts/spelling/international.txt index cf98212..7c2d678 100644 --- a/scripts/spelling/international.txt +++ b/scripts/spelling/international.txt @@ -10,6 +10,7 @@ ABloibce AGPLv AGPLv3 +Agustín AliceBob André Anna @@ -20,6 +21,7 @@ BN BSON BY BY-SA +Barrios Binet Bitbucket BobAlice @@ -28,13 +30,16 @@ CI CLI CRDT CRDTs +Canhoto Cantrill +Choro Clojure CoreData CouchDB DIY DVCS Datomic +Dengoso EuAndreh F FFI @@ -66,6 +71,7 @@ IndexedDB JS JSON Joyent +João Kevlin Kleppmann L1 @@ -76,6 +82,8 @@ Lerna LilyPond LiquidHaskell Mailutils +Marcha +Marinheiros Matroska McGranaghan Mentat @@ -91,6 +99,7 @@ POSIX ParsecC Pastebin Pavlo +Pernambuco Petrov Pittet PoC @@ -106,6 +115,7 @@ Redux SA SSD SVG +Saudade Screencast Screencasts ShellCheck @@ -146,11 +156,13 @@ cbindgen cgit ci clojure +da datalog datom datoms divoplade dl +dos e earned edn |