7 | | В этом уроке я расскажу, как можно добавлять к нотам обозначения гитарной аппликатуры: пальцы правой и левой руки, номера струн, позиции. В качестве примера мы возьмём упражнение 189 из классического учебника Петра Спиридоновича Агафошина "Школа игры на шестиструнной гитаре". В учебнике ноты выглядят вот так: |
| 5 | В этом уроке я расскажу, как можно добавлять к нотам обозначения гитарной аппликатуры: пальцы правой и левой руки, номера струн, позиции. |
| 6 | |
| 7 | В отличие от средств нотного набора, устроенных по технологии WYSIWYG, в которых господствует принцип "простые вещи нужно делать одним и тем же способом, сложные — никак", !LilyPond реализует классический принцип: "простые вещи делать просто, сложные — возможно". Поэтому не пугайтесь, если в каких-то местах синтаксис покажется вам пугающим: изощрённость исходника вполне пропорциональна сложности решаемых задач. После того, как вы усвоите базовые принципы, вы поймёте, что !LilyPond — это не только мощное, но и очень логично управляемое средство нотного набора. Впрочем, вполне возможно, что какие-то вещи из примера ниже можно было бы сделать проще и изящнее. |
| 8 | |
| 9 | В качестве примера мы возьмём упражнение 189 из классического учебника Петра Спиридоновича Агафошина "Школа игры на шестиструнной гитаре". В учебнике ноты выглядят вот так: |
141 | | '''Текст всё ещё дорабатывается, не стоит пока его использовать как руководство к действию =)''' |
| 143 | Добавим обозначения струн в первых двух тактах (про третий и четвёртый такты у нас будет отдельный разговор): |
| 144 | |
| 145 | [[Image(Agafoshin189-without-string-lines.png)]] |
| 146 | |
| 147 | == Совмещение обозначения струн с обозначением позиций == |
| 148 | |
| 149 | Дальше будет чуть веселее. Попытка добавить растянутые на несколько нот обозначения струн "в лоб" нам не удастся: и ноты, и позиции мы обозначаем с помощью объекта TextSpanner, который только один на каждый голос. Поэтому нам придётся создать два отображения третьего и четвёртого тактов, к одному из которых мы подпишем обозначения струн, а к другому — обозначения пальцев левой руки. Соответствующий фрагмент исходника станет выглядеть так: |
| 150 | |
| 151 | {{{ |
| 152 | % Some stuff is duplicated here |
| 153 | << { |
| 154 | \stemDown |
| 155 | \textSpannerUp |
| 156 | \override TextSpanner #'dash-period = #2 |
| 157 | \override TextSpanner #'(bound-details left stencil-align-dir-y) = #CENTER |
| 158 | \override TextSpanner #'(bound-details left text) = "VII " |
| 159 | c'16-2\startTextSpan |
| 160 | a-4 fis-1 |
| 161 | e-3 dis-2 fis-1 dis h-3 |
| 162 | \stemUp |
| 163 | c-4\stopTextSpan a-1 |
| 164 | \override TextSpanner #'(bound-details left text) = "VI " |
| 165 | fis-4\startTextSpan e-2 dis-1 fis-4 dis h-2\stopTextSpan |
| 166 | } \\ { |
| 167 | \stemDown |
| 168 | \textSpannerDown |
| 169 | <c'' \1>16 |
| 170 | \stringNumberSpanner "2" |
| 171 | a\startTextSpan |
| 172 | fis |
| 173 | \stopTextSpan |
| 174 | \stringNumberSpanner "3" |
| 175 | e\startTextSpan dis |
| 176 | \stopTextSpan |
| 177 | <fis\2> dis |
| 178 | \stringNumberSpanner "4" |
| 179 | h\startTextSpan |
| 180 | \stemUp |
| 181 | c a |
| 182 | \stopTextSpan |
| 183 | \stringNumberSpanner "5" |
| 184 | fis\startTextSpan e dis fis dis |
| 185 | \stopTextSpan |
| 186 | <h\6> |
| 187 | } >> |
| 188 | }}} |
| 189 | |
| 190 | При компиляции этого куска !LilyPond будет выдавать предупреждения, и это хорошо — как правило, наложение нот друг на друга это результат ошибки, и пользователя действительно надо о нём предупреждать. Однако кое-что действительно пошло не так. У нас получилось вот что: |
| 191 | |
| 192 | [[Image(Agafoshin189-with-string-lines.png)]] |
| 193 | |
| 194 | Там, где струна указывается для одиночной ноты, номера струн наехали на номера пальцев. Но это легко исправить, явно задав, где именно надо располагать номера струн с помощью команды {{{\set stringNumberOrientations = #'(down)}}}. Теперь всё почти хорошо. Осталась единственная крупная проблема: в двух местах номера струн наезжают на нотные штили. |
| 195 | |
| 196 | [[Image(Agafoshin189-collisions.png)]] |
| 197 | |
| 198 | К счастью, в !LilyPond есть средство исправить эту проблему автоматически. Для этого надо дать команду {{{\override StringNumber #'add-stem-support = ##t}}}. |
| 199 | |
| 200 | == Чего я не стал делать == |
| 201 | |
| 202 | Теперь ноты выглядят почти так же, как исходные, за исключением нескольких мелочей: |
| 203 | * в первом такте линии, обозначающие границу группы нот, играемых на одной струне, вынесены с нотоносца; мне кажется, выбранный наборщиком вариант некрасив и не очень читаем; |
| 204 | * на границе первого и второго такта глиссандо поставлено между нотами, а не между обозначениями аппликатуры; это можно поменять, но в данном случае непонятно, зачем; |
| 205 | * номера струн возле аккорда во втором такте расставлены с разных сторон; расстановку их слева можно было бы задать с помощью команды {{{\set stringNumberOrientations = #'(left)}}}, но при выбранном шрифте это бы смотрелось не очень красиво. Но желающие поэкспериментировать с выравниванием и размером обозначений струн могут сделать это, вооружившись [http://http://lilypond.org/doc/v2.9/Documentation/user/lilypond-internals/StringNumber#StringNumber руководством по внутреннему устройству объекта StringNumber]. |
| 206 | |
| 207 | Кроме того, я не стал заканчивать уголком линии, обозначающие струну и позицию, поскольку этого не сделано в исходных нотах. |