| 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 | Кроме того, я не стал заканчивать уголком линии, обозначающие струну и позицию, поскольку этого не сделано в исходных нотах. |