1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
|
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
Translation of GIT committish: 7c3242c2474c98f8ec96c0de0b05066e5f0ef248
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
@c \version "2.16.0"
@node Grabado musical
@chapter Grabado musical
@translationof Music engraving
Este ensayo describe porqué se creó LilyPond
y cómo puede producir partituras musicales tan bellas.
@c TODO:
@c remove 3mm eps bounding box left padding for Sarabande (This will
@c require adding a new snippet option to lilypond-book.py
@c check formatting of HTML output
@menu
* Historia de LilyPond::
* Detalles del grabado::
* Grabado automatizado::
* Construcción del software::
* Poner a LilyPond a trabajar::
* Ejemplos de partituras (BWV 861)::
@end menu
@node Historia de LilyPond
@section Historia de LilyPond
@translationof The LilyPond story
Mucho antes de que LilyPond se hubiese utilizado para editar preciosas
partituras de trabajo, antes de que pudiese crear apuntes de cursos
universitarios o incluso melodías sencillas, antes de que tuviera una
comunidad de usuarios a lo largo y ancho del mundo o incluso un ensayo
sobre grabado musical, LilyPond comenzó con esta pregunta:
@quotation
¿Por qué casi ninguna de las partituras hechas con ordenador consigue
la belleza y el equilibrio de una partitura grabada a mano?
@end quotation
@noindent
Algunas de las respuestas pueden descubrirse examinando cuidadosamente
las dos partituras que aparecen
@ifnottex
debajo.
@end ifnottex
@iftex
en las siguientes páginas.
@end iftex
La primera es una hermosa partitura grabada a mano en 1950 y la
segunda es una edición moderna hecha con ordenador.
@ifnottex
@quotation
@noindent
Bärenreiter BA 320, @copyright{}1950:
@sourceimage{baer-suite1-fullpage,,,png}
@end quotation
@quotation
@noindent
Henle núm. 666, @copyright{}2000:
@sourceimage{henle-suite1-fullpage,,,png}
@end quotation
@end ifnottex
Aquí, las notas son idénticas, y proceden de la primera suite para
violoncello solo de Bach, pero el aspecto es distinto, sobre todo si
las imprimimos en papel y las observamos desde una cierta distancia.
@ifnottex
(La versión del presente manual en PDF contiene imágenes de alta
resolución, adecuadas para la impresión en papel.)
@end ifnottex
Trate de leer o tocar a partir de cada una de las partituras, y se
dará cuenta de que la partitura grabada a mano es más agradable de
utilizar. Tiene unas líneas y un movimiento que parecen fluir, y se
aprecia como un fragmento de música vivo y palpitante, mientras que la
edición más reciente parece fría y mecánica.
Es difícil apreciar inmediatamente en qué consiste la
diferencia entra las ediciones antigua y nueva. En ésta todo parece
pulcro y ordenado, posiblemente incluso @qq{mejor} a causa de su
aspecto computerizado y uniforme. De hecho, esto nos tuvo confundidos
durante un cierto tiempo. Queríamos mejorar la notación por
ordenador, pero en primer lugar teníamos que averiguar qué era lo que
fallaba.
La respuesta radica en la uniformidad precisa y matemática de la
edición nueva. Fíjese en la línea divisoria central de cada línea: en
la partitura grabada a mano, la posición de estas líneas divisorias
tiene una cierta variación natural, mientras que en la versión moderna
estas líneas están alineadas de forma casi perfecta. Lo podemos
apreciar en estos diagramas simplificados de disposición de las
páginas, trazados a partir de la música grabada a mano (a la
izquierda) y la generada por ordenador (a la derecha):
@quotation
@iftex
@sourceimage{pdf/page-layout-comparison,,,}
@end iftex
@ifnottex
@sourceimage{page-layout-comparison,,,png}
@end ifnottex
@end quotation
@noindent
En el resultado producido por el ordenador, incluso las cabezas de las
notas individuales se alinean en columnas verticales, haciendo
desaparecer el contorno de la melodía en una cuadrícula rígida de
símbolos musicales.
Existen también otras diferencias: en la edición grabada a mano todas
las líneas verticales son más gruesas, las ligaduras quedan más cerca
de la cabeza de las notas, y hay más variedad en las inclinaciones
de las barras de corchea. Aunque dichos detalles pueden parecer
minucias, el resultado es una partitura más fácil de leer. En la
partitura de ordenador, todas las líneas son casi idénticas y si el
músico levanta la mirada por un momento probablemente se pierda por
la página.
LilyPond se diseñó para resolver los problemas que encontramos en el
software existente y para crear notación musical bella que emulara a
las mejores partituras trazadas a mano.
@iftex
@page
@noindent
Bärenreiter BA 320, @copyright{}1950:
@sourceimage{baer-suite1-fullpage-hires,16cm,,}
@page
@noindent
Henle núm. 666, @copyright{}2000:
@sp 3
@sourceimage{henle-suite1-fullpage-hires,16cm,,}
@page
@end iftex
@node Detalles del grabado
@section Detalles del grabado
@translationof Engraving details
@cindex grabado
@cindex tipografía musical
@cindex musical, tipografía
@cindex grabado en placas
@cindex grabado musical
El arte de la tipografía musical recibe el nombre de @emph{grabado (en
plancha)}, un término que deriva del proceso manual de la impresión
musical@footnote{Los impresores europeos de la antigüedad exploraron
diversos procesos, entre los que se incluían los bloques de madera
tallados a mano, los tipos móviles y planchas finas de metal grabadas.
La composición tipográfica tenía la ventaja de poderse corregir más
fácilmente y facilitar la inclusión de textos y la letra de las
canciones, pero sólo el grabado ofrecía la posibilidad de elaborar
notación libre de compromisos y limitaciones anticipadas. Al final,
las partituras grabadas a mano se convirtieron en el estándar de toda
la música impresa, con la excepción de algunos himnarios y cancioneros
en los que la composición tipográfica estaba justificada por su
comodidad y economía, incluso bien entrado el s.XX.}. Hace tan sólo
unas décadas, las partituras se hacían cortando y estampando la música
en una plancha de zinc o estaño en imagen invertida como en un espejo.
La plancha se entintaba, y las depresiones producidas por el grabado y
el estampado retenían la tinta. Se formaba una imagen presionando el
papel contra la plancha. El cortado y estampado se hacía
completamente a mano y era muy fastidioso hacer una corrección, por lo
que el grabado había de ser casi perfecto a la primera. El grabado
era una habilidad fuertemente especializada; un artesano tenía que
cursar unos cinco años de entrenamiento antes de poder obtener el
título de maestro grabador, y se necesitaban otros cinco años para
adquirir una verdadera habilidad en el oficio.
@quotation
@iftex
@sourceimage{hader-slaan,,7cm,}
@end iftex
@ifnottex
@sourceimage{hader-slaan,,,jpg}
@end ifnottex
@end quotation
La inspiración de LilyPond proviene de los grabados manuales
tradicionales publicados por los editores de música europeos de y
hasta la primera mitad del s.XX, entre ellos Bärenreiter, Duhem,
Durand, Hofmeister, Peters y Schott. En ocasiones se consideran a
éstos como la cima de la práctica del grabado musical tradicional.
Según hemos estudiado estas ediciones, hemos aprendido una gran
lección sobre el trabajo implícito en una partitura bien trazada, y
los aspectos de ella que queríamos tratar de imitar en LilyPond.
@c Now all newly printed music is produced with computers. This has
@c obvious advantages: prints are cheaper to make, editorial work can be
@c delivered by email, and the original data can be easily stored.
@c Unfortunately, computer-generated scores rarely match the quality of
@c hand-engraved scores. Instead, computer printouts have a bland,
@c mechanical look, which makes them unpleasant to play from.
@menu
* Fuentes tipográficas de música::
* Espaciado óptico::
* Líneas adicionales::
* Escalado óptico::
* ¿Para qué tanto esfuerzo?::
@end menu
@node Fuentes tipográficas de música
@unnumberedsubsec Fuentes tipográficas de música
@translationof Music fonts
Las imágenes de abajo ilustran algunas de las diferencias entre el
grabado musical tradicional y la típica impresión por ordenador. La
imagen de la izquierda presenta un símbolo de bemol procedente de una
edición Bärenreiter grabada a mano, mientras que la imagen de la
derecha representa un símbolo procedente de una edición de la misma
música, publicada en el año 2000. Aunque las dos imágenes están
impresas en el mismo tono de tinta, la versión antigua parece más
oscura: las líneas del pentagrama son más gruesas, y el bemol de
Bärenreiter tiene una apariencia pesada y redonda, casi voluptuosa.
La imagen escaneada de la derecha, en cambio, tiene líneas más finas y
una disposición simple con esquinas afiladas.
@multitable @columnfractions .25 .25 .25 .25
@item @tab
@ifnotinfo
@iftex
@sourceimage{baer-flat-gray,,4cm,}
@end iftex
@ifnottex
@sourceimage{baer-flat-gray,,,png}
@end ifnottex
@tab
@iftex
@sourceimage{henle-flat-gray,,4cm,}
@end iftex
@ifnottex
@sourceimage{henle-flat-gray,,,png}
@end ifnottex
@end ifnotinfo
@ifinfo
@sourceimage{henle-flat-bw,,,png}
@sourceimage{baer-flat-bw,,,png}
@sourceimage{lily-flat-bw,,,png}
@end ifinfo
@item @tab
Bärenreiter (1950)
@tab
Henle (2000)
@end multitable
@cindex símbolos musicales
@cindex fuente tipográfica
@cindex negrura
@cindex equilibrio
Cuando quisimos escribir un programa de ordenador para crear
tipografía musical, no existían fuentes tipográficas musicales que
estuviesen libremente disponibles y que igualaran la elegancia de
nuestras partituras favoritas. Sin desanimarnos, creamos una fuente de
símbolos musicales, apoyándonos en música grabada a mano muy bien
impresa. La experiencia nos ayudó a desarrollar un gusto tipográfico,
y nos hizo apreciar los sutiles detalles del diseño. Sin esa
experiencia, no nos habríamos dado cuenta de lo feas que eran las
fuentes que en un principio habíamos admirado.
A continuación podemos ver una muestra de dos fuentes tipográficas de
música: el conjunto de arriba es la fuente predeterminada del programa
Sibelius (la fuente @emph{Opus}), y el conjunto inferior es nuestra
propia fuente de LilyPond.
@quotation
@iftex
@sourceimage{pdf/OpusAndFeta,,,}
@end iftex
@ifnottex
@sourceimage{OpusAndFeta,,,png}
@end ifnottex
@end quotation
Los símbolos de LilyPond son más pesados y sus pesos son más
consistentes, lo que los hace más fáciles de leer. Las terminaciones
finas, como las de los lados del silencio de negra, no deben finalizar
en puntas afiladas, sino de forma redonda. esto se debe a que las
esquinas afiladas de los punzones de grabado son frágiles y se
desgastan con rapidez al estampar con ellos sobre el metal. Si se
toma en su conjunto, la negrura de la fuente se debe ajustar
cuidadosamente en relación con el grosor de las líneas, las barras y
las ligaduras para dar una impresión general fuerte y pesada pero
equilibrada.
Observe también que la cabeza de nuestra blanca no es elíptica sino
ligeramente romboidal. El trazo vertical del símbolo del bemol se
asemeja al trazo de un pincel, haciéndose más ancho en la parte
superior. El sostenido y el becuadro son más fáciles de distinguir
desde una cierta distancia porque sus ángulos tienen distinta
inclinación y los trazos verticales son más pesados.
@node Espaciado óptico
@unnumberedsubsec Espaciado óptico
@translationof Optical spacing
En el espaciado, la distribución del espacio debe reflejar las
duraciones de las figuras. Sin embargo, como vimos en la suite de
Bach más arriba, muchas partituras modernas se atañen a las duraciones
con precisión matemática, lo que lleva a un resultado pobre. En el
siguiente ejemplo se muestra un motivo impreso dos veces: la primera
vez utilizando espaciado matemático exacto, y la segunda con
correcciones. ¿Cuál prefiere?
@cindex espaciado óptico
@lilypond
\paper {
ragged-right = ##t
indent = #0.0
}
music = {
c'4 e''4 e'4 b'4
\stemDown
b'8[ e'' a' e'']
\stemNeutral
e'8[ e'8 e'8 e'8]
}
\score
{
\music
\layout {
\context {
\Staff
\override NoteSpacing #'stem-spacing-correction = #0.0
\override NoteSpacing #'same-direction-correction = #0.0
\override StaffSpacing #'stem-spacing-correction = #0.0
}
}
}
@end lilypond
@lilypond
\paper {
ragged-right = ##t
indent = #0.0
}
music = {
c'4 e''4 e'4 b'4 |
\stemDown
b'8[ e'' a' e'']
\stemNeutral
e'8[ e'8 e'8 e'8]
}
\score
{
\music
\layout {
\context {
\Staff
\override NoteSpacing #'stem-spacing-correction = #0.6
}
}
}
@end lilypond
@cindex duraciones regulares
@cindex espaciado regular
@cindex regular, espaciado
Cada compás de este fragmento utiliza figuras de duración constante.
El espaciado debe reflejarlo. Desgraciadamente, el ojo nos traiciona;
no sólo aprecia la distancia entre la cabeza de las figuras, también
tiene en cuenta la distancia entre las plicas consecutivas. Como
resultado, las notas de una combinación plica arriba @/ plica abajo
deben separarse más, y las notas de una combinación plica abajo @/
plica arriba se deben colocar más juntas, dependiendo siempre de las
posiciones verticales relativas de las notas. Los dos compases
inferiores están impresos con esta corrección; los dos superiores, por
el contrario, forman conglomerados de notas plica abajo @/ plica
arriba. Un grabador maestro ajustaría el espacio según se necesite
para agradar al ojo.
Los algoritmos de espaciado de LilyPond tienen incluso en cuenta a las
líneas divisorias que es la razón por la que la última plica dirigida
hacia arriba en el ejemplo bien espaciado ha recibido un poco más de
espacio antes de la línea divisoria para evitar que tenga un aspecto
aglomerado. Una plica hacia abajo no necesitaría este ajuste.
@node Líneas adicionales
@unnumberedsubsec Líneas adicionales
@translationof Ledger lines
@cindex líneas adicionales
@cindex colisiones
Las líneas adicionales presentan un desafío tipográfico: hacen más
difícil juntar los símbolos musicales y deben ser lo bastante claras
como para identificar la altura de la nota de un vistazo. En el
ejemplo siguiente, vemos que las líneas adicionales deben ser más
gruesas que las líneas normales del pentagrama y que un grabador
experto acortará una línea adicional para permitir un espaciado más
cercano con las alteraciones accidentales. Hemos incluido esta
posibilidad en el grabado que hace LilyPond.
@multitable @columnfractions .25 .25 .25 .25
@item @tab
@iftex
@sourceimage{baer-ledger,3cm,,}
@end iftex
@ifnottex
@sourceimage{baer-ledger,,,png}
@end ifnottex
@tab
@iftex
@sourceimage{lily-ledger,3cm,,}
@end iftex
@ifnottex
@sourceimage{lily-ledger,,,png}
@end ifnottex
@end multitable
@node Escalado óptico
@unnumberedsubsec Escalado óptico
@translationof Optical sizing
Puede ser necesario imprimir la música en distintos tamaños.
Originalmente esto se conseguía mediante la creación de punzones de
estampado en cada uno de los tamaños necesarios, lo que significaba
que cada punzón estaba diseñado para presentar el mejor aspecto a ese
tamaño. Con la llegada de las fuentes tipográficas digitales, un solo
diseño se puede escalar matemáticamente a cualquier tamaño, lo que es
sin duda muy conveniente, pero a los tamaños menores los glifos
aparecen en tipo muy delgado.
En LilyPond hemos creado las fuentes tipográficas en un cierto rango
de pesos que corresponden a la correspondiente variedad de tamaños de
notación musical. He aquí un grabado musical de LilyPond a un tamaño
de pentagrama de 26:
@quotation
@iftex
@sourceimage{pdf/size26,,23mm,}
@end iftex
@ifnottex
@sourceimage{size26,,,png}
@end ifnottex
@end quotation
@noindent
y éste es el mismo fragmento a un tamaño de 11, aumentado
posteriormente en un 236% para que se imprima al mismo tamaño que el
ejemplo anterior:
@quotation
@iftex
@sourceimage{pdf/size11,,23mm,}
@end iftex
@ifnottex
@sourceimage{size11,,,png}
@end ifnottex
@end quotation
@noindent
A tamaños más pequeños, LilyPond utiliza líneas proporcionalmente más
gruesas de manera que la música siga leyéndose con comodidad.
@ignore
This also allows staves of different sizes to coexist peacefully when
used together on the same page:
@c TODO: are the stems in this example the right thickness? How should
@c line weights be scaled for small staves?
@c Grieg's Violin Sonata Op. 45
@lilypond[indent=1.5cm]
global = {
\time 6/8
\key c \minor
}
\score {
<<
\new Staff \with {
fontSize = #-4
\override StaffSymbol #'staff-space = #(magstep -4)
\override StaffSymbol #'thickness = #(magstep -3)
}
\relative c' {
\global
\set Staff.instrumentName = #"Violin"
c8.(\f^> b16 c d) ees8.(^> d16 c b)
g8.(^> b16 c ees) g8-.^> r r
R2.
}
\new PianoStaff <<
\set PianoStaff.instrumentName = #"Piano"
\new Staff \relative c' {
\global
s2.
s4. s8 r8 r16 <c f aes c>
<c f aes c>4.^> <c ees g>8 r r
}
\new Staff \relative c {
\global
\clef "bass"
<<
{
\once \override DynamicText #'X-offset = #-3
<ees g c>2.~->^\f
<ees g c>4.~ <ees g c>8
} \\ {
<c g c,>2.~
<c g c,>4.~ <c g c,>8
}
>>
r8 r16 <f, c' aes'>16
<f c' aes'>4.-> <c' g'>8 r r
}
>>
>>
}
@end lilypond
@end ignore
@node ¿Para qué tanto esfuerzo?
@unnumberedsubsec ¿Para qué tanto esfuerzo?
@translationof Why work so hard?
Los músicos están normalmente más absortos en su interpretación que en
el estudio del aspecto gráfico de una partitura impresa, por lo que
las minucias sobre los detalles tipográficos pueden parecer
académicas. Pero no lo son. La música impresa es material de
interpretación: todo se hace para ayudar al músico a tocar mejor, y
todo aquello que no está claro o no es agradable se convierte en un
obstáculo.
La música grabada de forma tradicional utiliza símbolos gruesos sobre
pautas de líneas pesadas para producir una notación de aspecto fuerte
y equilibrado que adquiere gran presencia cuando el papel está lejos
del lector: por ejemplo, sobre un atril. Una distribución cuidadosa
del espacio vacío permite que la música se pueda disponer de forma muy
apretada sin aglomerar los símbolos entre sí. El resultado reduce a
un mínimo el número de saltos de página, lo que es una gran ventaja.
Ésta es una característica común de la tipografía. La disposición
sobre la página debe ser bonita, no sólo por sí misma, sino
especialmente porque ayuda al lector en su cometido. Para las
partituras musicales esto es de doble importancia porque los músicos
tienen una cantidad de atención limitada. Cuanta menos atención
necesitan para leer, más pueden centrarse en tocar la música. En
otras palabras, una mejor tipografía lleva a mejores interpretaciones.
Estos ejemplos demuestran que la tipografía musical es un arte sutil y
complejo, y que producirla requiere una considerable experiencia, algo
que los músicos no suelen tener. LilyPond es el resultado de nuestro
esfuerzo para llevar a la era de los ordenadores la excelencia gráfica
de la música grabada a mano, y ponerla a disposición de los músicos
normales. Hemos ajustado nuestros algoritmos, el diseño de nuestras
fuentes tipográficas y los valores predeterminados del programa para
producir una impresión que iguala en calidad a la de las antiguas
ediciones que tanto nos gusta ver y a partir de las que tanto nos
gusta tocar.
@node Grabado automatizado
@section Grabado automatizado
@translationof Automated engraving
@cindex grabado automatizado
@cindex automatizado, grabado
Aquí describimos lo que se necesita para crear un software que pueda
recrear la disposición de las partituras grabadas: un método de
explicar las buenas disposiciones al ordenador, y gran cantidad de
comparaciones detalladas con grabados de música reales.
@menu
* Concursos de belleza::
* Mejoras por medio de pruebas::
* Hacer las cosas bien::
@end menu
@node Concursos de belleza
@unnumberedsubsec Concursos de belleza
@translationof Beauty contests
¿Cómo realizamos las decisiones de formateo? En otras palabras, ¿cuál
de las tres configuraciones elegiríamos para la siguiente ligadura?
@lilypond
\relative c {
\clef bass
\once \override Slur #'positions = #'(1.5 . 1)
e8[( f] g[ a b d,)] r4
\once \override Slur #'positions = #'(2 . 3)
e8[( f] g[ a b d,)] r4
e8[( f] g[ a b d,)] r4
}
@end lilypond
Están a nuestra disposición unos cuantos libros sobre el arte del
grabado musical. Desgraciadamente, contienen unas sencillas reglas
prácticas y unos pocos ejemplos. Dichas reglas pueden ser
instructivas, pero están muy lejos de constituir un algoritmo
preparado para poderlo implementar dentro de un programa. Siguiendo
las instrucciones de esta literatura nos lleva a algoritmos con gran
cantidad de excepciones codificadas manualmente. Hacer todo este
análisis de casos es mucho trabajo, y a menudo no todos los casos
están cubiertos completamente:
@quotation
@iftex
@sourceimage{ross-beam-scan,7cm,,}
@end iftex
@ifnottex
@sourceimage{ross-beam-scan,,,.jpg}
@end ifnottex
@end quotation
(Fuente de la imagen: Ted Ross, @emph{The Art of Music Engraving})
En lugar de intentar escribir detalladas reglas de disposición para
cada uno de los escenarios posibles, únicamente tenemos que describir
los objetivos lo suficientemente bien como para que LilyPond pueda
juzgar el nivel de atractivo visual de varias alternativas. Después,
para cada posible configuración calculamos una puntuación de
fealdad y seleccionamos la configuración menos fea.
Por ejemplo, tenemos aquí tres configuraciones posibles para la
ligadura, y LilyPond ha otorgado una puntuación a cada una en
@q{puntos de fealdad}. El primer ejemplo obtiene 15.39 puntos por
rozar la cabeza de una de las figuras:
@lilypond
\relative c {
\clef bass
\once \override Slur #'positions = #'(1.5 . 1)
e8[(_"15.39" f] g[ a b d,)] r4
}
@end lilypond
El segundo es mejor, pero la ligadura no comienza ni termina sobre la
cabeza de las notas. Obtiene 1.71 puntos por el lado izquierdo y 9.37
puntos por el lado derecho, más otros 2 puntos porque la ligadura
asciende mientras la melodía desciende, dando un total de 13.08 puntos
de fealdad:
@lilypond
\relative c {
\clef bass
\once \override Slur #'positions = #'(2 . 3)
e8[(_"13.08" f] g[ a b d,)] r4
}
@end lilypond
La ligadura final obtiene 10.04 puntos por el salto de la derecha y 2
puntos por la inclinación hacia arriba, pero es la más atractiva de
las tres configuraciones, así que LilyPond selecciona ésta:
@lilypond
\relative c {
\clef bass
e8[(_"12.04" f] g[ a b d,)] r4
}
@end lilypond
Esta técnica es bastante general, y se utiliza para tomar decisiones
óptimas para la configuración de las barras, ligaduras y puntillos de
los acordes, saltos de línea y saltos de página. El resultado de
estas decisiones se puede juzgar por comparación con grabados reales.
@node Mejoras por medio de pruebas
@unnumberedsubsec Mejoras por medio de pruebas
@translationof Improvement by benchmarking
La salida de LilyPond ha mejorado paulatinamente con el tiempo, y
continúa mejorando mediante su comparación con partituras grabadas a
mano.
Por ejemplo, he aquí una línea de una pieza utilizada como banco de
pruebas procedente de una edición realizada a mano (Bärenreiter
BA320):
@iftex
@sourceimage{baer-sarabande-hires,16cm,,}
@end iftex
@ifnottex
@sourceimage{baer-sarabande,,,png}
@end ifnottex
@noindent
y el mismo fragmento grabado tal y como lo hacía una versión muy
antigua de LilyPond (versión 1.4, mayo de 2001):
@iftex
@sourceimage{pdf/lily14-sarabande,16cm,,}
@end iftex
@ifnottex
@sourceimage{lily14-sarabande,,,png}
@end ifnottex
@noindent
Ciertamente, la salida de LilyPond 1.4 es legible pero una comparación
detenida con la partitura hecha a mano mostraba numerosos errores en
los detalles de formateo:
@iftex
@sourceimage{lily14-sarabande-annotated-hires,16cm,,}
@end iftex
@ifnottex
@sourceimage{lily14-sarabande-annotated,,,png}
@end ifnottex
@itemize @bullet
@item hay demasiado espacio antes de la indicación de compás
@item las plicas de las notas unidas por una barra son muy largas
@item los compases segundo y cuarto son muy estrechos
@item la ligadura tiene un aspecto extraño
@item el símbolo del trino es demasiado grande
@item las plicas son delgadas
@end itemize
@noindent
(También faltaban dos cabezas de nota y varias anotaciones
editoriales, y ¡la altura de una nota era incorrecta!)
Mediante el ajuste de las reglas de disposición y del diseño de la
fuente tipográfica, la salida ha mejorado de forma considerable.
Compare la misma partitura de referencia y la salida de la versión
actual de LilyPond (@version{}):
@iftex
@sourceimage{baer-sarabande-hires,16cm,,}
@end iftex
@ifnottex
@sourceimage{baer-sarabande,,,png}
@end ifnottex
@lilypond[staffsize=17.5,line-width=15.9\cm]
\relative c {
\clef "bass"
\key d \minor
\time 3/4
\mergeDifferentlyDottedOn
<<
{ \slurDashed d8.-\flageolet( e16) e4.-\trill( d16 e) }
\\
{ d4_2 a2 }
>>
\slurDashed
<f' a, d,>4. e8( d c)
\slurSolid
bes8 g' f e16( f g_1 a_2 bes_3 d,_2)
\slurDashed
cis4.-\trill b8_3( a g)
<<
{ \slurDashed d'8.( e16) e4.-\trill( d16 e) }
\\
{ <f, a>4 a2 }
>>
}
@end lilypond
@noindent
La salida actual no es un clon de la edición de referencia, pero está
mucho más cerca de la calidad de publicación que la salida más
antigua.
@node Hacer las cosas bien
@unnumberedsubsec Hacer las cosas bien
@translationof Getting things right
También podemos medir la capacidad de LilyPond para tomar decisiones
de grabado musical automáticamente comparando su salida con la de un
producto de software comercial. En este caso hemos elegido Finale
2008, que es uno de los editores de partituras comerciales más
populares, especialmente en los Estados Unidos. Sibelius es su
principal competidor y parece tener especial presencia en el mercado
europeo.
Para nuestra comparación elegimos la fuga en Sol menor del Clave bien
temperado de Bach, libro I, BWV 861, cuyo sujeto inicial es
@lilypond
\relative c' {
\key g \minor
\clef "treble_8"
r8 d ees g, fis4 g
r8 a16 bes c8 bes16 a bes8
}
@end lilypond
@noindent
Hemos realizado nuestra comparación grabando los últimos siete
compases de la pieza (28 al 34) en Finale y en LilyPond. Éste es el
punto de la pieza en que el sujeto vuelve a aparecer en un estrecho a
tres partes y conduce a la sección conclusiva. En la versión de
Finale, hemos resistido la tentación de hacer cualquier ajuste sobre
la salida predeterminada porque tratamos de mostrar qué cosas hace
bien cada programa sin ayuda. Las únicas manipulaciones de
importancia que hemos hecho ha sido los ajustes del tamaño de la
página para que se corresponda con este ensayo y forzar que la música
quepa en dos sistemas para facilitar la comparación. De forma
predeterminada, Finale habría compuesto dos sistemas de tres compases
cada uno y un último sistema de plena anchura con un solo compás.
Muchas de las diferencias entre los dos grabados son visibles en los
compases 28 al 29, como se muestra aquí con Finale en primer lugar y
LilyPond en segundo:
@iftex
@sourceimage{pdf/bwv861mm28-29,14cm,,}
@end iftex
@ifnottex
@sourceimage{bwv861mm28-29,,,png}
@end ifnottex
@lilypond[staffsize=19.5,line-width=14\cm]
global = { \key g \minor }
partI = \relative c' {
\voiceOne
fis8 d' ees g, fis4 g
r8 a16 bes c8 bes16 a d8 r r4
}
partII = \relative c' {
\voiceTwo
d4 r4 r8 d'16 c bes8 c16 d
ees8 d c ees a, r r4
}
partIII = \relative c' {
\voiceOne
r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
}
partIV = \relative c {
\voiceTwo
d4 r r2
r8 d ees g, fis4 a
}
\score {
<<
% \set Score.barNumberVisibility = #all-bar-numbers-visible
% required in 2.13
\set Score.currentBarNumber = #28
\bar ""
\new PianoStaff <<
\new Staff = "RH" <<
\global
\new Voice = "voiceI" { \partI }
\new Voice = "voiceII" { \partII }
>>
\new Staff = "LH"
<<
\clef "bass"
\global
\new Voice = "voiceIII" { \partIII }
\new Voice = "voiceIV" { \partIV }
>>
>>
>>
\layout {
\context {
\Staff
\remove "Time_signature_engraver"
}
\context {
\PianoStaff
\override StaffGrouper #'staff-staff-spacing #'padding = #1
}
}
}
@end lilypond
Entre algunos de los puntos negativos de la salida sin retocar de
Finale se encuentran los siguientes:
@itemize @bullet
@item Casi todas las barras se salen demasiado del pentagrama.
Una barra que apunta hacia el centro del pentagrama debe tener una
longitud de una octava aproximadamente, pero los grabadores acortan
esta longitud cuando la barra apunta hacia fuera de la pauta en música
de varias voces. El barrado de Finale se puede mejorar fácilmente con
su complemento de barras de Patterson, pero hemos decidido saltarnos
ese paso para este ejemplo.
@item Finale no ajusta las posiciones de las cabezas que se bloquean mutuamente,
lo que hace a la música extremadamente difícil de leer cuando las
voces superior e inferior intercambian temporalmente sus posiciones:
@c KEEP LY
@lilypond
collide = \once \override NoteColumn #'force-hshift = #0
\score {
<<
\new Voice = "sample" \relative c''{
\key g \minor
<<
{ \voiceOne g4 \collide g4 }
\new Voice { \voiceTwo bes \collide bes }
>>
}
\new Lyrics \lyricsto "sample" \lyricmode { "bien " " mal" }
>>
}
@end lilypond
@item Finale ha colocado todos los silencios en alturas fijas sobre el
pentagrama. El usuario es libre de ajustarlos según se necesite, pero
el programa no hace ningún intento de tener en consideración el
contenido de la otra voz. Por suerte, en este ejemplo no se producen
verdaderas colisiones entre notas y silencios, pero ello tiene que ver
más con las posiciones de las notas que con otra cosa. Dicho de otro
modo, Bach se merece algo más de crédito para evitar una colisión
completa que la que Finale le concede.
@end itemize
Este ejemplo no pretende sugerir que Finale no se pueda usar para
producir resultados con calidad de producción. Por el contrario, en
las manos de un usuario hábil puede hacerlo y de hecho lo hace, pero
requiere destreza y tiempo. Una de las diferencias fundamentales
entre LilyPond y los editores de partituras comerciales es que
LilyPond aspira a reducir la cantidad de intervención humana a un
mínimo absoluto, mientras que otros paquetes pretenden ofrecer un
interfaz atractivo en el que hacer este tipo de ediciones.
Una omisión particularmente flagrante que hemos encontrado por parte
de Finale es un bemol en el compás 33:
@quotation
@iftex
@sourceimage{pdf/bwv861mm33-34-annotate,7.93cm,,}
@end iftex
@ifnottex
@sourceimage{bwv861mm33-34-annotate,,,png}
@end ifnottex
@end quotation
@noindent
El símbolo del bemol es necesario para cancelar el becuadro que está
en el mismo compás, pero Finale lo omite porque aparece en una voz
distinta. De forma que además de ejecutar un complemento de barrado y
comprobar el espaciado sobre las cabezas de nota y los silencios, el
usuario también tiene que comprobar las alteraciones entre voces
cruzadas para cada compás si pretende evitar la interrupción de un
ensayo a causa de un error en la edición de la partitura.
Si está interesado en examinar estos ejemplos con más detalle, el
ejemplo de siete compases completo está al final de este ensayo junto
a cuatro ediciones publicadas distintas. Un examen detenido revela
que hay una cierta variación aceptable entre los grabados manuales,
pero también que LilyPond se compara de forma razonablemente buena con
este rango aceptable. Aún existen algunos inconvenientes en la salida
de LilyPond, por ejemplo, parece ser un tanto agresiva acortando
algunas de las plicas, así que aún hay margen para un desarrollo y
ajuste fino posteriores.
Por supuesto, la tipografía se basa en el juicio humano sobre la
apariencia, de manera que las personas no se pueden sustituir por
completo. Con todo, gran parte del trabajo tedioso se puede
automatizar. Si LilyPond resuelve correctamente la mayor parte de las
situaciones más comunes, esto ya sería una enorme ventaja sobre los
programas existentes. Con el transcurso de los años, el software se
puede refinar de forma que realice cada vez más cosas automáticamente,
de forma que los ajustes manuales sean también cada vez menos
necesarios. Donde se necesitan ajustes manuales, la estructura de
LilyPond está diseñada teniendo en mente esa flexibilidad.
@node Construcción del software
@section Construcción del software
@translationof Building software
Esta sección describe algunas de las decisiones de programación que
hicimos cuando diseñamos el programa LilyPond.
@menu
* Representación musical::
* ¿Qué símbolos grabar?::
* Arquitectura flexible::
@end menu
@node Representación musical
@unnumberedsubsec Representación musical
@translationof Music representation
@cindex sintaxis
@cindex recursivas, estructuras
Idealmente, el formato de entrada de cualquier sistema de formateado
de alto nivel es una descripción abstracta del contenido. En este
caso, eso sería la propia música. Ello presenta un enorme problema:
¿cómo podemos definir qué es la música realmente? En lugar de buscar
una respuesta, le hemos dado la vuelta a la pregunta. Escribimos un
programa capaz de producir música impresa, y luego ajustamos el
formato de forma que sea lo más escueto posible. Cuando el formato ya
no se puede recortar más, por definición nos estamos quedando con el
propio contenido. Nuestro programa sirve como una definición formal
de un documento musical.
La sintaxis es también el interfaz de usuario de LilyPond, de aquí
que sea tan fácil teclear:
@example
@{
c'4 d'8
@}
@end example
@noindent
para crear un Do central negra (Do 4) y un Re por encima del Do
central, corchea (Re 4).
@lilypond[quote]
{
c'4 d'8
}
@end lilypond
A una escala microscópica, esta sintaxis es fácil de usar. A una
escala mayor, la sintaxis necesita también una estructura. ¿De qué
otra forma podríamos introducir piezas complejas como sinfonías u
óperas? La estructura se forma por medio del concepto de expresiones
musicales: combinando pequeños fragmentos de música dentro de otros
más grandes, se puede expresar una música más compleja. Por ejemplo:
@lilypond[quote,verbatim,fragment,relative=1]
f4
@end lilypond
@noindent
Las notas simultáneas se pueden construir encerrándolas dentro de
@code{<<} y @code{>>}:
@example
<<c4 d4 e4>>
@end example
@lilypond[quote,fragment,relative=1]
\new Voice { <<c4 d4 e>> }
@end lilypond
@noindent
La expresión se pone en secuencia encerrándola dentro de llaves
@code{@{@tie{}@dots{}@tie{}@}}:
@example
@{ f4 <<c4 d4 e4>> @}
@end example
@lilypond[quote,relative=1,fragment]
{ f4 <<c d e4>> }
@end lilypond
@noindent
Esto es también una expresión, y así se puede combinar de nuevo con
otra expresión simultánea (una blanca) utilizando @code{<<}, @code{\\}
y @code{>>}:
@example
<< g2 \\ @{ f4 <<c4 d4 e4>> @} >>
@end example
@lilypond[quote,fragment,relative=2]
\new Voice { << g2 \\ { f4 <<c d e>> } >> }
@end lilypond
Tales estructuras recursivas se pueden especificar limpia y
formalmente dentro de una gramática independiente del contexto. El
código del analizador sintáctico también se genera a partir de esta
gramática. Dicho de otra forma, la sintaxis de LilyPond está definida
claramente y sin ambigüedades.
Los interfaces de usuario y la sintaxis son aquello que la gente ve y
con lo que trata más frecuentemente. Son, en parte, cuestión de
gusto, y también objeto de mucha discusión. Aunque las discusiones
sobre el gusto tienen su mérito, no son muy productivas. Bajo el
punto de vista más amplio de LilyPond, la importancia de la sintaxis
de la entrada es pequeña: inventarse una sintaxis limpia es fácil,
pero escribir un código de formatead que sea decente es mucho más
difícil. Esto queda ilustrado por la cantidad de líneas que están
dedicadas a los componentes respectivos: el análisis sintáctico y la
representación se llevan menos del 10% del código fuente.
Cuando estábamos diseñando las estructuras utilizadas dentro de
LilyPond, tomamos algunas decisiones de forma diferente a como es
aparente en otros programas. Consideremos la naturaleza jerárquica de
la notación musical:
@lilypond[quote,fragment]
<<
\new Staff \relative c'' {
\key g \major
\time 3/4
d4 g,8 a b c d4 g, g
}
\new Staff \relative c' {
\clef "bass"
\key g \major
<g b d>2 a4 b2.
}
>>
@end lilypond
En este caso, hay notas agrupadas en acordes que están dentro de
compases, que pertenecen a pentagramas. Esto se parece a una
estructura ordenada de cajas anidadas unas dentro de otras:
@quotation
@iftex
@sourceimage{pdf/nestedboxes,,4cm,}
@end iftex
@ifnottex
@sourceimage{nestedboxes,,,png}
@end ifnottex
@end quotation
Desgraciadamente la estructura resulta ordenada porque está basada en
algunas suposiciones excesivamente restrictivas. Este extremo se hace
aparente si tenemos en cuenta un ejemplo musical más complejo:
@lilypond[quote]
\layout {
\context {
\Score
\remove "Timing_translator"
\remove "Default_bar_line_engraver"
}
\context {
\Staff
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
}
}
\new PianoStaff <<
\new Staff = "RH" <<
\new Voice = "I" \relative c''' {
\time 3/4
\voiceOne
\times 6/7 { g8 g g g g g g }
\oneVoice
r4 <b,, fis' g bes> r4\fermata
}
\new Voice = "II" \relative c' {
\voiceTwo
c4
\times 4/5 {
<c ees>8 f g
\change Staff = "LH" \oneVoice
\stemUp g,( c}
r4
\override Stem #'cross-staff = ##t
\override Stem #'length = #12
<fis, b>) r\fermata
}
>>
\new Staff = "LH" <<
\new Voice = "III" \relative c' {
\time 2/4
\clef "bass"
g4 \stopStaff s
\startStaff s2*2
}
>>
>>
@end lilypond
En este ejemplo, los pentagramas parecen iniciarse y terminar a
capricho, las voces saltan de un pentagrama a otro, y las pautas
tienen tipos de compás diferentes. Muchos programas se las ven y se
las desean para reproducir este ejemplo porque están construidos sobre
la estructura de las cajas anidadas. Con LilyPond, por el contrario,
hemos tratado de conservar el formato del código de entrada y la
estructura lo más flexibles posible.
@node ¿Qué símbolos grabar?
@unnumberedsubsec ¿Qué símbolos grabar?
@translationof What symbols to engrave?
@cindex grabado
@cindex tipografía
@cindex grabador
@cindex plug-in o complemento
@cindex complemento o plug-in
El proceso de formateo decide dónde colocar los símbolos. Sin
embargo, esto sólo puede hacerse una vez que se ha decidido @emph{qué}
símbolos se deben imprimir: en otras palabras, qué notación utilizar.
La notación musical común es un sistema de registro de la música que
ha evolucionado durante los últimos mil años. La forma que es hoy día
de uso común data del Renacimiento temprano. Aunque la forma básica
(es decir, puntos sobre una pauta de cinco líneas) no ha cambiado, los
detalles aún evolucionan para expresar las innovaciones de la notación
contemporánea. De aquí que la notación musical común abarque unos
quinientos años de música. El ámbito de sus aplicaciones comprende
desde melodías monofónicas hasta monstruosos contrapuntos para gran
orquesta.
¿Cómo podemos ensillar a tal bestia de siete cabezas, y forzarla
dentro de los confines de un programa de ordenador? Nuestra solución
es escindir el problema de la notación (en oposición al grabado, es
decir, a la tipografía) en fragmentos fácilmente digeribles y
programables: cada tipo de símbolo se maneja por parte de un módulo
separado conocido como plug-in. Cada plug-in es completamente modular
e independiente, de manera que cada uno se puede desarrollar y mejorar
por separado Estos plugines reciben el nombre de @code{engraver}s o
@qq{grabadores}, por analogía con los artesanos que traducían las
ideas musicales en símbolos gráficos.
En el ejemplo siguiente, comenzamos con un plug-in para la cabeza de
las notas, el grabador @code{Note_heads_engraver}.
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
\topVoice
\layout {
\context {
\Voice
\remove "Stem_engraver"
\remove "Phrasing_slur_engraver"
\remove "Slur_engraver"
\remove "Script_engraver"
\remove "Beam_engraver"
\remove "Auto_beam_engraver"
}
\context {
\Staff
\remove "Accidental_engraver"
\remove "Key_engraver"
\remove "Clef_engraver"
\remove "Bar_engraver"
\remove "Time_signature_engraver"
\remove "Staff_symbol_engraver"
\consists "Pitch_squash_engraver"
}
}
}
@end lilypond
@noindent
A continuación, un grabador del pentagrama, el
@code{Staff_symbol_engraver}, añade la pauta:
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
\topVoice
\layout {
\context {
\Voice
\remove "Stem_engraver"
\remove "Phrasing_slur_engraver"
\remove "Slur_engraver"
\remove "Script_engraver"
\remove "Beam_engraver"
\remove "Auto_beam_engraver"
}
\context {
\Staff
\remove "Accidental_engraver"
\remove "Key_engraver"
\remove "Clef_engraver"
\remove "Bar_engraver"
\consists "Pitch_squash_engraver"
\remove "Time_signature_engraver"
}
}
}
@end lilypond
@noindent
el grabador de la clave o @code{Clef_engraver} define un punto de
referencia para el pentagrama:
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
\topVoice
\layout {
\context {
\Voice
\remove "Stem_engraver"
\remove "Phrasing_slur_engraver"
\remove "Slur_engraver"
\remove "Script_engraver"
\remove "Beam_engraver"
\remove "Auto_beam_engraver"
}
\context {
\Staff
\remove "Accidental_engraver"
\remove "Key_engraver"
\remove "Bar_engraver"
\remove "Time_signature_engraver"
}
}
}
@end lilypond
@noindent
y el grabador de las plicas @code{Stem_engraver} añade las plicas.
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
\topVoice
\layout {
\context {
\Voice
\remove "Phrasing_slur_engraver"
\remove "Slur_engraver"
\remove "Script_engraver"
\remove "Beam_engraver"
\remove "Auto_beam_engraver"
}
\context {
\Staff
\remove "Accidental_engraver"
\remove "Key_engraver"
\remove "Bar_engraver"
\remove "Time_signature_engraver"
}
}
}
@end lilypond
@noindent
El grabador @code{Stem_engraver} que traza las plicas recibe una
notificación por cada nota que le llega. Cada vez que se ve la cabeza
de una nota (o más, en el caso de un acorde), se crea un objeto plica
y se conecta a la cabeza. Añadiendo grabadores para las barras,
ligaduras, acentos, alteraciones, líneas divisorias, la indicación de
compás y la armadura, obtenemos un fragmento de notación musical
completo.
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score { \topVoice }
@end lilypond
@cindex polifonía
@cindex grabado de varias voces
@cindex contextos
Este sistema funciona bien para la música a una voz, pero ¿qué tal
para la polifonía? En la notación polifónica, muchas voces pueden
llegar a compartir el mismo pentagrama.
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\new Staff << \topVoice \\ \botVoice >>
@end lilypond
En esta situación, las alteraciones accidentales y la pauta se
comparten, pero las plicas, ligaduras, barras, etc., son privadas para
cada voz. De aquí que los grabadores deban estar agrupados. Los
grabadores de la cabeza de las notas, plicas, ligaduras, etc., van a
un grupo llamado @q{contexto de voz}, mientras que los grabadores de
la armadura, las alteraciones, los compases, etc., van a un grupo
llamado @q{contexto de pauta}. En el caso de la polifonía, un solo
contexto de pauta contiene más de un contexto de voz. De forma
similar, varios contextos de pentagrama se pueden reunir dentro de un
único contexto de partitura. El contexto de partitura es el contexto
de notación del nivel más alto que hay.
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
<<
\new Staff << \topVoice \\ \botVoice >>
\new Staff << \pah \\ \hoom >>
>>
}
@end lilypond
@seealso
Referencia de funcionamiento interno:
@rinternals{Contexts}.
@node Arquitectura flexible
@unnumberedsubsec Arquitectura flexible
@translationof Flexible architecture
Al principio escribimos el programa LilyPond completamente en el
lenguaje de programación C++; la funcionalidad del programa estaba
grabada en piedra por parte de los desarrolladores. Se comprobó que
esto no era satisfactorio por unas cuantas razones:
@itemize
@item Cuando LilyPond comete errores, los usuarios necesitan sobreescribir
las decisiones de formateo. Por tanto, el usuario debe tener acceso
al motor de formateo. De aquí que las reglas y los ajustes
predeterminados no se puedan fijar por nuestra parte en el tiempo de
compilación sino que deben estar accesibles para los usuarios en el
tiempo de ejecución.
@item El grabado musical es cuestión de juicio visual, y por tanto está en
el terreno del buen gusto. Por más entendidos que pretendamos ser,
nuestros usuarios siempre podrían discrepar de nuestras decisiones
personales. Por ello, las definiciones del estilo tipográfico debe
también ser accesible para el usuario.
@item Finalmente, nos encontramos refinando continuamente los algoritmos de
formateo, por lo que necesitamos un enfoque flexible para las reglas.
El lenguaje C++ fuerza un cierto método de agrupación de las reglas
que no está preparado para aplicarse al formateo de la notación
musical.
@end itemize
@cindex Scheme, lenguaje de programación
Estos programas se han solucionado integrando un intérprete para el
lenguaje de programación Scheme y reescribiendo partes de LilyPond en
Scheme. La arquitectura de formateo actual está construida alrededor
de la noción de objetos gráficos, descritos por medio de variables y
funciones de Scheme. Esta arquitectura coordina las reglas de
formateo, el estilo tipográfico y las decisiones de formateo
individuales. El usuario tiene acceso directo a la mayoría de esos
controles.
Las variables de Scheme controlan las decisiones de disposición en la
página. Por ejemplo, muchos objetos gráficos tienen una variable de
dirección que codifica la elección entre arriba y abajo (o izquierda y
derecha). A continuación vemos dos acordes, con acentos y símbolos de
arpegio. En el primer acorde, los objetos gráficos tienen todas las
direcciones hacia abajo (o hacia la izquierda). El segundo acorde
tiene todas las direcciones hacia arriba (o hacia la derecha).
@lilypond[quote,ragged-right]
\score {
\relative c' {
\stemDown <e g b>4_>-\arpeggio
\override Arpeggio #'direction = #RIGHT
\stemUp <e g b>4^>-\arpeggio
}
\layout {
\context {
\Score
\override SpacingSpanner #'spacing-increment = #3
\override TimeSignature #'transparent = ##t
}
}
}
@end lilypond
@cindex partitura, formateo de
@cindex formateo de una partitura
@cindex formateo, reglas de
@noindent
El proceso de dar formato a una partitura comprende la lectura y
escritura de las variables de los objetos gráficos. Algunas variables
tienen un valor preestablecido. Por ejemplo, el grosor de muchas
líneas (una característica del estilo tipográfico) es una variable con
un valor preestablecido. Somos libres de alterar este valor, dando a
nuestra partitura una impresión tipográfica distinta.
@lilypond[quote,ragged-right]
fragment = {
\clef bass f8 as8
c'4-~ c'16 as g f e16 g bes c' des'4
}
<<
\new Staff \fragment
\new Staff \with {
\override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #0.5
\override Bar #'thickness = #3.6
\override Tie #'thickness = #2.2
\override StaffSymbol #'thickness = #3.0
\override Tie #'extra-offset = #'(0 . 0.3)
}
\fragment
>>
@end lilypond
Las reglas de formateado también son variables preestablecidas: cada
objeto tiene variables que contienen procedimientos. Estos
procedimientos realizan el formateo propiamente dicho, y mediante la
sustitución de unos u otros, podemos modificar el aspecto de los
objetos. En el ejemplo siguiente, la regla que gobierna qué objetos
de cabeza se utilizan para producir el símbolo de la cabeza, se cambia
a lo largo del fragmento musical.
@lilypond[quote,ragged-right]
#(set-global-staff-size 30)
#(define (mc-squared grob orig current)
(let* ((interfaces (ly:grob-interfaces grob))
(pos (ly:grob-property grob 'staff-position)))
(if (memq 'note-head-interface interfaces)
(begin
(ly:grob-set-property! grob 'stencil
(grob-interpret-markup grob
(make-lower-markup 0.5
(case pos
((-5) "m")
((-3) "c ")
((-2) (make-smaller-markup (make-bold-markup "2")))
(else "bla")))))))))
\new Voice \relative c' {
\stemUp
\set autoBeaming = ##f
\time 2/4
<d f g>4
\once \override NoteHead #'stencil = #note-head::brew-ez-stencil
\once \override NoteHead #'font-size = #-7
\once \override NoteHead #'font-family = #'sans
\once \override NoteHead #'font-series = #'bold
<d f g>4
\once \override NoteHead #'style = #'cross
<d f g>4
\applyOutput #'Voice #mc-squared
<d f g>4
<<
{ d8[ es-( fis^^ g] fis2-) }
\repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
>>
}
@end lilypond
@node Poner a LilyPond a trabajar
@section Poner a LilyPond a trabajar
@translationof Putting LilyPond to work
@cindex simple, ejemplos
@cindex ejemplos simples
Escribimos LilyPond como un experimento sobre cómo condensar el arte
del grabado musical dentro de un programa de ordenador. Gracias a
todo ese duro trabajo, ahora el programa se puede utilizar para que
realice muchas tareas útiles. La aplicación más simple es la
impresión de notas.
@lilypond[quote,relative=1]
{
\time 2/4
c4 c g'4 g a4 a g2
}
@end lilypond
@noindent
Añadiendo nombres de acorde y la letra de la canción obtenemos una
hoja guía de acordes.
@c KEEP LY
@lilypond[quote,ragged-right]
<<
\chords { c2 c f2 c }
\new Staff
\relative c' {
\time 2/4
c4 c g' g a a g2
}
\addlyrics { Cam -- pa ni -- ta del lu -- gar }
>>
@end lilypond
También puede imprimirse notación polifónica y música para piano. El
ejemplo siguiente combina unas pocas construcciones algo más exóticas.
@lilypond[quote,line-width=15.9\cm]
\header {
title = "Screech and boink"
subtitle = "Random complex notation"
composer = "Han-Wen Nienhuys"
}
\score {
\context PianoStaff <<
\new Staff = "up" {
\time 4/8
\key c \minor
<< {
\revert Stem #'direction
\change Staff = down
\set subdivideBeams = ##t
g16.[
\change Staff = up
c'''32
\change Staff = down
g32
\change Staff = up
c'''32
\change Staff = down
g16]
\change Staff = up
\stemUp
\set followVoice = ##t
c'''32([ b''16 a''16 gis''16 g''32)]
} \\ {
s4 \times 2/3 { d'16[ f' g'] } as'32[ b''32 e'' d'']
} \\ {
s4 \autoBeamOff d''8.. f''32
} \\ {
s4 es''4
} >>
}
\new Staff = "down" {
\clef bass
\key c \minor
\set subdivideBeams = ##f
\override Stem #'french-beaming = ##t
\override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
<< \makeClusters {
as16 <as b>
<g b>
<g cis>
} \\ {
\override Staff.Arpeggio #'arpeggio-direction =#down
<cis, e, gis, b, cis>4\arpeggio
}
>> }
>>
\midi {
\tempo 8 = 60
}
\layout {
\context {
\Staff
\consists Horizontal_bracket_engraver
}
}
}
@end lilypond
Los fragmentos que se muestran arriba se han escrito a mano, pero esto
no es obligatorio. Puesto que el motor de formateado es casi
totalmente automático, puede servir como un medio de salida para otros
programas que manipulan música. Por ejemplo, también se puede usar
para convertir bases de datos de fragmentos musicales en imágenes
orientadas a su utilización en páginas web y presentaciones
multimedia.
Este manual muestra también una aplicación: el formato de entrada es
texto, y puede ser por tanto fácilmente empotrado dentro de otros
formatos basados en texto como @LaTeX{}, HTML, o en el caso de este
manual, Texinfo. Utilizando el programa @command{lilypond-book}, que
viene incluido con LilyPond, los fragmentos de entrada se pueden
reemplazar por imágenes de la música en los archivos de salida PDF o
HTML resultantes. Otro ejemplo es la extensión (de terceras partes)
OOoLilyPond para OpenOffice.org, que hace de la inclusión de ejemplos
musicales dentro de los documentos, una tarea extremadamente sencilla.
Para ver más ejemplos de LilyPond en acción, la documentación
completa, y el programa propiamente dicho, visite nuestra página
principal: www.lilypond.org.
@page
@node Ejemplos de partituras (BWV 861)
@section Ejemplos de partituras (BWV 861)
@translationof Engraved examples (BWV 861)
Esta sección contiene cuatro grabados musicales de referencia y dos
versiones grabadas por ordenador de la fuga en Sol menor del libro I
del Clave Bien Temperado, BWV 861, de Bach (los últimos siete
compases).
@noindent
Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1,
1989):
@iftex
@sourceimage{bwv861-baer,16cm,,}
@end iftex
@ifnottex
@sourceimage{bwv861-baer-small,,,png}
@end ifnottex
@noindent
Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1,
1989), una fuente musical alternativa. Aparte de las diferencias
textuales, esto presenta ligeras variaciones en las decisiones de
grabado, incluso de la misma editorial y edición:
@iftex
@sourceimage{bwv861-baer-alt,16cm,,}
@end iftex
@ifnottex
@sourceimage{bwv861-baer-alt-small,,,png}
@end ifnottex
@noindent
Breitkopf & Härtel, editado por Ferruccio Busoni (Wiesbaden, 1894),
disponible también a través de la Biblioteca Musical Petrucci (IMSLP
#22081). Las indicaciones editoriales (digitaciones, articulaciones,
etc.) se han suprimido para una comparación más clara con las otras
ediciones que presentamos aquí:
@iftex
@sourceimage{bwv861-breitkopf,16cm,,}
@end iftex
@ifnottex
@sourceimage{bwv861-breitkopf-small,,,png}
@end ifnottex
@noindent
Edición Bach-Gesellschaft (Leipzig, 1866), disponible a través de la
Biblioteca Musical Petrucci (IMSPL #02221):
@iftex
@sourceimage{bwv861-gessellschaft,16cm,,}
@end iftex
@ifnottex
@sourceimage{bwv861-gessellschaft-small,,,png}
@end ifnottex
@noindent
Finale 2008:
@iftex
@sourceimage{pdf/bwv861-finale2008a,,,}
@end iftex
@ifnottex
@sourceimage{bwv861-finale2008a,,,png}
@end ifnottex
@sp 4
@noindent
LilyPond, versión @version{}:
@lilypond[staffsize=14.3,line-width=15.9\cm]
global = {\key g \minor}
partI = \relative c' {
\voiceOne
fis8 d' ees g, fis4 g
r8 a16 bes c8 bes16 a d8 r r4
r2 r8 d16 ees f8 ees16 d
ees4 ~ ees16 d c bes a4 r8 ees'16 d
c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
a8 d, g f ees d c bes
a2 g\fermata \bar "|."
}
partII = \relative c' {
\voiceTwo
d4 r4 r8 d'16 c bes8 c16 d
ees8 d c ees a, r r4
r8 fis16 g a8 g16 fis g2 ~
g2 r8 d' ees g,
fis4 g r8 a16 bes c8 bes16 a
bes4. <g b>8 <a c> r <d, g> r
<ees g>4 <d fis> d2
}
partIII = \relative c' {
\voiceOne
r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
bes2 ~ bes8 b16 a g8 a16 b
c4 r r2
R1
r8 d ees g, fis4 g
r8 a16 bes c8 bes16 a b2
}
partIV = \relative c {
\voiceTwo
d4 r r2
r8 d ees g, fis4 a
d,8 d'16 c bes8 c16 d ees2 ~
ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
d,8 d'16 c bes8 c16 d ees8 c a fis'
g f ees d c bes a g
c a d d, g2\fermata
}
\score {
<<
% \set Score.barNumberVisibility = #all-bar-numbers-visible
% required in 2.13
\set Score.currentBarNumber = #28
\bar ""
\new PianoStaff <<
\new Staff = "RH" <<
\global
\new Voice = "voiceI" { \partI }
\new Voice = "voiceII" { \partII }
>>
\new Staff = "LH" <<
\clef "bass"
\global
\new Voice = "voiceIII" { \partIII }
\new Voice = "voiceIV" { \partIV }
>>
>>
>>
\layout {
\context {
\Staff
\remove "Time_signature_engraver"
}
\context {
\PianoStaff
\override StaffGrouper #'staff-staff-spacing #'padding = #1
}
}
}
@end lilypond
|