summaryrefslogtreecommitdiff
path: root/Documentation/fr/notation/input.itely
blob: dc010d2f31757493c25199780938c3f82959cb45 (about) (plain)
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
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-

@ignore
   Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746

   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.19.22"

@c Translators: Jean-Charles Malahieude, Valentin Villenave

@node Généralités en matière d'entrée et sortie
@chapter Généralités en matière d'entrée et sortie
@translationof General input and output

Nous n'allons pas, dans ce chapitre, parler directement de notation,
mais plutôt du contenu des fichiers source et du résultat produit par
LilyPond.

@menu
* Agencement du code::
* Titres et entêtes::
* Travail sur des fichiers texte::
* Contrôle des sorties::
* Génération de fichiers MIDI::
* Extraction d'informations musicales::
@end menu


@node Agencement du code
@section Agencement du code
@translationof Input structure

LilyPond traite des fichiers textuels.  Ces fichiers portent par
convention une extension @code{.ly}.

@menu
* Structure d'une partition::
* Plusieurs partitions dans un même ouvrage::
* Plusieurs éditions pour une même source::
* Nom des fichiers de sortie::
* Structure de fichier::
@end menu


@node Structure d'une partition
@subsection Structure d'une partition
@translationof Structure of a score

@funindex \score

Un bloc @code{\score} contient obligatoirement une seule expression
musicale délimitée par des accolades :

@example
\score @{
@dots{}
@}
@end example

@warning{Il ne doit y avoir qu'@strong{une seule} expression musicale
globale dans un bloc @code{@bs{}score}, et elle @strong{doit} être
bornée par une paire d'accolades.}

Cette unique expression musicale peut être de n'importe quelle taille et
contenir d'autres expressions musicales aussi complexes soient elles.
Voici quelques exemples d'expression musicale :

@example
@{ c'4 c' c' c' @}
@end example

@lilypond[verbatim,quote]
{
  { c'4 c' c' c' }
  { d'4 d' d' d' }
}
@end lilypond

@lilypond[verbatim,quote]
<<
  \new Staff { c'4 c' c' c' }
  \new Staff { d'4 d' d' d' }
>>
@end lilypond

@example
@{
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff @{ \flute @}
      \new Staff @{ \hautbois @}
    >>
    \new StaffGroup <<
      \new Staff @{ \violonI @}
      \new Staff @{ \violonII @}
    >>
  >>
@}
@end example

Les commentaires constituent l'une des rares exceptions à cette règle
immuable -- voir @ref{Structure de fichier} pour les autres.  Qu'il
s'agisse d'une seule ligne ou de tout un bloc -- délimité par
@code{%@{ @dots{} %@}} -- un commentaire peut se placer n'importe où
dans le fichier source, aussi bien à l'intérieur qu'à l'extérieur du
bloc @code{\score}, ou encore à l'intérieur ou à l'extérieur de
l'expression musicale contenue dans un bloc @code{\score}.

Lorsqu'un fichier ne comprend qu'un bloc @code{\score}, celui-ci est
implicitement inclus dans un bloc @code{\book}.  Le bloc @code{\book}
d'un fichier source permet la production d'au moins un fichier dont le
nom sera, par défaut, déduit du fichier source : le traitement de
@file{fandangopourelephants.ly} produira donc
@file{fandangopourelephants.pdf}.

Pour de plus amples informations à propos du bloc @code{\book}, lisez
@ref{Plusieurs partitions dans un même ouvrage},
@ref{Plusieurs éditions pour une même source} et
@ref{Structure de fichier}.

@seealso
Manuel d'initiation :
@rlearning{La partition est une (unique) expression musicale composée},
@rlearning{Les expressions musicales en clair},
@rlearning{Travail sur les fichiers d'entrée}.


@node Plusieurs partitions dans un même ouvrage
@subsection Plusieurs partitions dans un même ouvrage
@translationof Multiple scores in a book

@cindex mouvements, plusieurs
@cindex plusieurs mouvements

@funindex \book

Un ouvrage peut se composer de plusieurs morceaux et de texte.  C'est le
cas des cahiers d'exercices ou d'une partie d'orchestre avec ses
différents mouvements.  Chaque mouvement fait l'objet d'un bloc
@code{\score},

@example
\score @{
  @var{@dots{}musique@dots{}}
@}
@end example

et le texte est contenu dans un bloc @code{\markup},

@example
\markup @{
  @var{@dots{}texte@dots{}}
@}
@end example

@funindex \book

Les différents mouvements et textes qui apparaissent dans un même
fichier @file{.ly} ne composeront en principe qu'un seul fichier
résultant.

@example
\score @{
  @var{@dots{}}
@}
\markup @{
  @var{@dots{}}
@}
\score @{
  @var{@dots{}}
@}
@end example

Attention cependant si vous travaillez avec lilypond-book : il vous
faudra explicitement mentionner le bloc @code{\book}, en l'absence de
quoi seul le premier @code{\score} ou @code{\markup} apparaîtra après
traitement.

L'entête de chaque pièce peut se placer au sein du bloc @code{\score} ;
le contenu du champ @code{piece} viendra s'imprimer avant chaque
mouvement.  De même, le titre de l'ouvrage peut se placer au sein du
bloc @code{\book}.  Dans le cas contraire, le contenu du bloc
@code{\header} placé en début de fichier sera utilisé.

@example
\header @{
  title = "Huit miniatures"
  composer = "Igor Stravinsky"
@}
\score @{
  @dots{}
  \header @{ piece = "Romance" @}
@}
\markup @{
   @dots{}texte du second couplet@dots{}
@}
\markup @{
   @dots{}texte du troisième couplet@dots{}
@}
\score @{
  @dots{}
  \header @{ piece = "Menuet" @}
@}
@end example

@funindex \bookpart

Plusieurs pièces seront regroupées dans un même « chapitre » à l'aide
d'un bloc @code{\bookpart}.  Ces différents « chapitres » sont séparés
par un saut de page et peuvent comporter un titre à l'instar de
l'ouvrage dès lors que vous y insérez un bloc @code{\header}.

@example
\bookpart @{
  \header @{
    title = "Titre de l'ouvrage"
    subtitle = "Première partie"
  @}
  \score @{ @dots{} @}
  @dots{}
@}
\bookpart @{
  \header @{
    subtitle = "Deuxième partie"
  @}
  \score @{ @dots{} @}
  @dots{}
@}
@end example


@node Plusieurs éditions pour une même source
@subsection Plusieurs éditions pour une même source
@translationof Multiple output files from one input file

Dès lors que vous inscrivez plusieurs blocs @code{\book} dans un même
fichier @file{.ly}, chacun d'eux donnera lieu à un résultat indépendant.
Lorsqu'aucun bloc @code{\book} n'est spécifié dans le fichier source,
LilyPond considère que l'intégralité du fichier constitue un bloc
@code{\book} unique, comme indiqué à la rubrique
@ref{Structure de fichier}.

LilyPond fait en sorte, lorsque plusieurs fichiers sont produits à
partir d'une même source, qu'aucun résultat d'un bloc @code{\book}
n'écrase celui qui a été généré pour un bloc @code{\book} précédent.

Dans les faits, et si le nom du fichier produit est repris de sa source
-- comportement par défaut --, un suffixe lui sera ajouté pour chaque
@code{\book}.  Il s'agit en principe d'un pseudo numéro de version.
Ainsi, le fichier @file{huitminiatures.ly} qui contiendrait

@example
\book @{
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
@end example

générera

@itemize
@item
@file{huitminiatures.pdf},
@item
@file{huitminiatures-1.pdf} et
@item
@file{huitminiatures-2.pdf}.
@end itemize


@node Nom des fichiers de sortie
@subsection Nom des fichiers de sortie
@translationof Output file names

@funindex \bookOutputSuffix
@funindex \bookOutputName

LilyPond vous permet de prendre le contrôle dans la dénomination des
fichiers que vous voulez générer, quel que soit le moteur de rendu
utilisé.

Nous avons vu dans la rubrique précédente que LilyPond évite les
conflits de nom des fichiers qu'il génère à partir d'une même source.
Vous pouvez même définir vous-même le suffixe qui sera appliqué à chacun
des blocs @code{\book}.  Ainsi, en reprenant l'exemple ci-avant, vous
obtiendrez les fichiers @file{huitminiatures-Romance.pdf},
@file{huitminiatures-Menuet.pdf} et @file{huitminiatures-Nocturne.pdf}
en ajoutant simplement une déclaration @code{\bookOutputSuffix} au sein
de chaque bloc @code{\book}.

@example
\book @{
  \bookOutputSuffix "Romance"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputSuffix "Menuet"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputSuffix "Nocturne"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
@end example

La déclaration @code{\bookOutputName} vous permet de définir vous-même
le nom du fichier généré pour un bloc @code{\book} :

@example
\book @{
  \bookOutputName "Romance"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputName "Menuet"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputName "Nocturne"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
@end example

Le traitement de ce fichier produira :

@itemize
@item
@file{Romance.pdf},
@item
@file{Menuet.pdf} et
@item
@file{Nocturne.pdf}.
@end itemize


@node Structure de fichier
@subsection Structure de fichier
@translationof File structure

@funindex \paper
@funindex \midi
@funindex \layout
@funindex \header
@funindex \score
@funindex \book
@funindex \bookpart

Un fichier @code{.ly} peut contenir un certain nombre d'expressions de
haut niveau.  Les expressions de haut niveau sont les suivantes :

@itemize
@item
Une définition de sortie, comme @code{\paper}, @code{\midi} et
@code{\layout}.  Ces définitions, lorsqu'elles se trouvent à un niveau
supérieur, s'appliqueront à l'intégralité de l'ouvrage.  Si l'une de ces
expression apparaît à plusieurs reprises à un niveau supérieur, les
différents contenus seront combinés, à ceci près qu'en cas de
déclarations conflictuelles, la dernière aura préséance.  Des
informations complémentaires sont disponibles à la rubrique
@ref{Le bloc layout}.

@item
Une expression Scheme pure, telle que
@w{@code{#(set-default-paper-size "a7" 'landscape)}} ou
@w{@code{#(ly:set-option 'point-and-click #f)}}.

@item
Un bloc @code{\header}, dont le contenu sera valide pour tout le
fichier.  Il comporte en général les valeurs par défaut des champs de
titrage, tels le titre ou l'auteur entre autres, communs à tous les
blocs @code{\book} inclus dans le fichier -- voir
@ref{Généralités en matière de titrages}.

@item
Un bloc @code{\score} pour la partition.  Cette partition sera assemblée
avec les autres partitions se trouvant au même niveau pour composer le
@code{\book}.  Vous pouvez modifier ce comportement à l'aide de la
variable @code{toplevel-score-handler} placée en tête.  Le gestionnaire
par défaut est défini dans le fichier d'initialisation
@file{../scm/lily.scm}.

@item
Un bloc @code{\book} permet de regrouper naturellement plusieurs
mouvements -- autrement dit plusieurs blocs @code{\score} -- dans un
même document.  Lorsqu'il y a plusieurs @code{\score}, LilyPond génère
un seul fichier dans lequel les mouvements sont mis les uns à la suite
des autres, ce pour chacun des blocs @code{\book} rencontrés.  La seule
raison qui peut vous demander d'expliciter plusieurs blocs @code{\book}
dans un fichier @file{.ly} est lorsque vous avez besoin de générer
différents documents à partir d'une même source.  La présence explicite
d'un bloc @code{\book} est aussi nécessaire lorsque vous travaillez sur
un document lilypond-book qui reprendrait plusieurs @code{\score} ou
@code{\markup} dans un même extrait.  Vous pouvez modifier ce
comportement à l'aide de la variable @code{toplevel-book-handler}
placée en tête.  Le gestionnaire par défaut est défini dans le fichier
d'initialisation @file{../scm/lily.scm}.

@item
Un bloc @code{\bookpart}.  Un ouvrage peut se découper en plusieurs
parties à l'aide de blocs @code{\bookpart}, aussi bien pour alléger le
travail de l'algorithme de calcul des sauts de page, que si les réglages
du bloc @code{\paper} diffèrent d'une partie à l'autre.

@item
Une expression musicale telle que
@example
@{ c'4 d' e'2 @}
@end example

Ce bout de code sera placé dans un @code{\score} et intégré à l'ouvrage
en même temps que tous les autres @code{\score} ou expressions
musicales.  En d'autres termes, un fichier qui ne contiendrait que cette
simple expression musicale sera traduit en

@example
\book @{
  \score @{
    \new Staff @{
      \new Voice @{
        @{ c'4 d' e'2 @}
      @}
    @}
    \layout @{ @}
  @}
  \paper @{ @}
  \header @{ @}
@}
@end example

Vous pouvez modifier ce comportement à l'aide de la variable
@code{toplevel-music-handler} placée en tête.  Le gestionnaire par
défaut est défini dans le fichier d'initialisation
@file{../scm/lily.scm}.

@item
Du texte sous forme de @emph{markup} comme les paroles d'un couplet
@example
\markup @{
   2.  Le première ligne du deuxième couplet.
@}
@end example

De tels @emph{markups} seront imprimés là où ils apparaissent,
avant, après ou entre les expressions musicales.

@cindex variables
@cindex identificateurs

@item
Une variable, ou identificateur, telle que
@example
toto = @{ c4 d e d @}
@end example

Vous pourrez la réutiliser plus loin dans votre fichier en saisissant
simplement @code{\toto}.  Le nom des identificateurs ne doit être
formés que de caractères alphabétiques -- sans chiffre ni caractère
souligné ou tiret.

@end itemize

Voici trois éléments que vous pouvez placer à un niveau supérieur :

@example
\layout @{
  % pas en pleine largeur
  ragged-right = ##t
@}

\header @{
   title = "Do-re-mi"
@}

@{ c'4 d' e2 @}
@end example

Vous pouvez placer, n'importe où dans votre fichier, les instructions
suivantes :

@itemize
@item @code{\version}
@item @code{\include}
@item @code{\sourcefilename}
@item @code{\sourcefileline}
@item
Une ligne de commentaire, introduite par le signe @code{%}.

@item
Un bloc de commentaire, délimité par @code{%@{ @dots{} %@}}.

@end itemize

@cindex espace
@cindex blanc

Vous pouvez insérer des espaces dans votre fichier source afin de lui
apporter une meilleure lisibilité.  Les espaces superflus sont
normalement ignorés.  Notez cependant qu'il est des cas où l'espace est
requis pour éviter tout risque d'erreur :

@itemize
@item
Autour d'une accolade, qu'elle soit ouvrante ou fermante ;

@item
Après chaque commande ou variable, autrement dit tout élément qui
commence par un @code{\} ;

@item
Après tout élément qui sera interprété comme une expression Scheme,
autrement dit tout élément qui commence par un @code{#} ;

@item
Pour séparer les éléments d'une expression Scheme ;

@item
En mode parole -- @code{lyricmode} -- avant et après les commandes
@code{\override} et @code{\set}.

@end itemize

@seealso
Manuel d'initiation :
@rlearning{Organisation des fichiers LilyPond}.

Manuel de notation :
@ref{Généralités en matière de titrages},
@ref{Le bloc layout}.


@node Titres et entêtes
@section Titres et entêtes
@translationof Titles and headers

@cindex titre
@cindex entête
@cindex pied de page

La plupart de la musique qui est éditée comporte un titre et le nom de
son compositeur ; certains ouvrages dispensent beaucoup plus
d'informations.

@menu
* Création de titres et entête ou pied de page::
* Titrages personnalisés::
* Création des métadonnées des fichiers de sortie::
* Notes de bas de page::
* Référencement des numéros de page::
* Table des matières::
@end menu


@node Création de titres et entête ou pied de page
@subsection Création de titres et entête ou pied de page
@translationof Creating titles headers and footers

@menu
* Généralités en matière de titrages::
* Mise en forme par défaut des titrages subalternes::
* Mise en forme par défaut des entête et pied de page::
@end menu


@node Généralités en matière de titrages
@unnumberedsubsubsec Généralités en matière de titrages
@translationof Titles explained

Chaque bloc @code{\book} apparaissant dans un même fichier source
résultera en un fichier indépendant, comme indiqué à la rubrique
@ref{Structure de fichier}. Chacun de ces fichiers résultants comporte
trois endroits où placer des titrages : le @strong{titrage de l'ouvrage}
au début de chaque recueil (@emph{book}), les @strong{titrages de
partie} au début de chaque partie (@emph{bookpart}) et les
@strong{titrages de morceau} avant chaque pièce (@emph{score}).

La valeur des champs de titrage @code{title} (le titre) et
@code{composer} (le compositeur) se définissent dans des blocs
@code{\header} -- la syntaxe appropriée et la liste des différents
champs disponibles par défaut sont à la section
@ref{Mise en forme par défaut des titrages subalternes}.
Les titrages d'un ouvrage, de ses parties ou des morceaux qu'il contient
peuvent tous comporter les même champs bien que, par défaut, le titrage
d'un morceau se limite à @code{piece} et @code{opus}.

Les blocs @code{\header} peuvent se placer à quatre endroits différents
qui formeront une hiérarchie descendante :

@itemize

@item
En tête du fichier source, avant même tout bloc @code{\book},
@code{\bookpart} ou @code{\score} ;

@item
Au sein d'un bloc @code{\book} et en dehors de tout bloc
@code{\bookpart} ou @code{\score} qu'il contient ;

@item
Au sein d'un bloc @code{\bookpart} et en dehors de tout bloc
@code{\score} qu'il contient ;

@item
Après l'expression musicale incluse dans un bloc @code{\score}.

@end itemize

La valeur des différents champs sera filtrée en respectant cette
hiérarchie ; les valeurs persisteront à moins d'être écrasées par une
autre valeur à un niveau inférieur.  Ainsi :

@itemize
@item
Le titre d'un ouvrage découle des champs définis en tête de fichier
source, modifiés par les champs définis au sein du bloc @code{\book}.
Les champs résultants serviront à affecter un titre de recueil à
l'ouvrage, si tant est que quoi que ce soit génère une page au début de
cet ouvrage, avant la première partie -- un simple saut de page forcé
(@code{\pageBreak}) suffit.

@item
Le titre d'une partie découle des champs définis en tête du fichier
source, modifiés par les champs définis au sein du bloc @code{\book}
puis par ceux définis au sein du bloc @code{\bookpart}.  Les valeurs qui
en résulteront permettront d'imprimer les titrages de partie pour cette
partie.

@item
Le titre d'un morceau découle des champs définis en tête du fichier
source, modifiés par les champs définis au sein du bloc @code{\book}
puis par ceux définis au sein du bloc @code{\bookpart}, et enfin par
ceux définis au sein du bloc @code{\score}.  Les valeurs qui en
résulteront permettront d'imprimer les titrages de morceau pour ce
morceau.  Notez toutefois que, pour un morceau, seuls les champs
@code{piece} et @code{opus} seront imprimés, à moins d'avoir valorisé
à @code{#t} la variable @code{print-all-headers} dans la section
@code{\paper}.

@end itemize

@warning{N'oubliez pas que lorsqu'il est placé à l'intérieur d'un bloc
@code{@bs{}score}, le bloc @code{@bs{}header} doit impérativement se
trouver @strong{à la suite} de l'expression musicale.}

Nul n'est besoin de fournir un bloc @code{\header} à chacun des quatre
niveaux ; on peut se passer aussi bien de l'un d'eux que de tous.  Dans
la même veine, un fichier source simpliste peut ne pas mentionner de
bloc @code{\book} ou @code{\bookpart} qui seront alors créés
implicitement.

Lorsque l'ouvrage ne comporte qu'un seul morceau, le bloc @code{\header}
devrait prendre place en tête de fichier, de telle sorte que soit produit
un titrage de partie qui met à disposition tous les champs de titrage.

Lorsque l'ouvrage comporte plusieurs morceaux, différents arrangements
du bloc @code{\header} permettent d'obtenir différents styles de
publication musicale.  Par exemple, si la publication comprend plusieurs
pièces du même compositeur, un bloc @code{\header} placé en tête de
fichier définira le titre de l'ouvrage et le compositeur, que l'on
complètera par un bloc @code{\header} dans chaque bloc @code{\score}
pour définir les champs @code{piece} et @code{opus}, comme ici :

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\header {
  title = "SUITE I."
  composer = "J. S. Bach."
}

\score {
  \new Staff \relative {
    \clef bass
    \key g \major
    \repeat unfold 2 { g,16( d' b') a b d, b' d, } |
    \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
  }
  \header {
    piece = "Prélude."
  }
}

\score {
  \new Staff \relative {
    \clef bass
    \key g \major
    \partial 16 b16 |
    <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
    d16( b g fis) g( e d c) b(c d e) fis( g a b) |
  }
  \header {
    piece = "Allemande."
  }
}
@end lilypond

Des agencements plus élaborés sont aussi réalisables.  Par exemple, les
champs appartenant au titrage principal d'un ouvrage peuvent se
reporter dans chaque bloc @code{\score}, certains étant modifiés voire
supprimés manuellement :

@c KEEP LY
@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    print-all-headers = ##t
  }
  \header {
    title = "DAS WOHLTEMPERIRTE CLAVIER"
    subtitle = "TEIL I"
    % Pas de mention spéciale par défaut pour cet ouvrage
    tagline = ##f
  }
  \markup { \vspace #1 }
  \score {
    \new PianoStaff <<
      \new Staff { s1 }
      \new Staff { \clef "bass" s1 }
    >>
    \header {
      title = "PRAELUDIUM I"
      opus = "BWV 846"
      % Pas de sous-titre pour ce morceau
      subtitle = ##f
    }
  }
  \score {
    \new PianoStaff <<
      \new Staff { s1 }
      \new Staff { \clef "bass" s1 }
    >>
    \header {
      title = "FUGA I"
      subsubtitle = "A 4 VOCI"
      opus = "BWV 846"
      % Pas de sous-titre pour ce morceau
      subtitle = ##f
    }
  }
}
@end lilypond

@seealso
Manuel de notation :
@ref{Mise en forme par défaut des titrages subalternes},
@ref{Mise en forme personnalisée des titrages},
@ref{Structure de fichier}.


@node Mise en forme par défaut des titrages subalternes
@unnumberedsubsubsec Mise en forme par défaut des titrages subalternes
@translationof Default layout of bookpart and score titles

Voici les différentes variables imprimables attachées au bloc
@code{\header} :

@c KEEP LY
@lilypond[papersize=a6landscape,quote,verbatim,noragged-right]
\book {
  \header {
      % Les champs suivants sont centrés
    dedication = "Dédicace"
    title = "Titre"
    subtitle = "Sous-titre"
    subsubtitle = "Sous-sous-titre"
      % Les champs suivants sont répartis sur une même ligne, et
      % le champ "instrument" apparaîtra sur les pages suivantes
    instrument = \markup \with-color #green "Instrument"
    poet = "Librettiste"
    composer = "Compositeur"
      % Les champs suivants sont en opposition sur la même ligne
    meter = "Tempo"
    arranger = "Arrangeur"
      % Les champs suivants sont centrés en bas de page
    tagline = "Le « tagline » ou mention spéciale va en pied de dernière page"
    copyright = "Le copyright va en pied de première page"
  }
  \score {
    { s1 }
    \header {
       % Les champs suivants sont en opposition sur la même ligne
      piece = "Pièce 1"
      opus = "Opus 1"
    }
  }
  \score {
    { s1 }
    \header {
        % Les champs suivants sont en opposition sur la même ligne
      piece = "Pièce 2 sur la même page"
      opus = "Opus 2"
    }
  }
  \pageBreak
  \score {
    { s1 }
    \header {
        % Les champs suivants sont en opposition sur la même ligne
      piece = "Pièce 3 sur une nouvelle page"
      opus = "Opus 3"
    }
  }
}
@end lilypond

Quelques précisions :

@itemize
@item
Le nom de l'instrument sera répété en tête de chaque page.

@item
Seuls seront imprimés les champs @code{piece} et @code{opus} inclus dans
un bloc @code{\score} dès lors que la variable @code{print-all-headers}
reste désactivée (valeur à @code{##f}).

@item
@c Is the bit about \null markups true? -mp
Les champs d'un bloc @code{\header} qui n'auront pas été alimentés
seront remplacés par un @emph{markup} @code{\null} de façon à ne pas
gaspiller d'espace.

@item
Par défaut, @code{scoreTitleMarkup} place les champs @code{piece} et
@code{opus} de part et d'autre sur une même ligne.

@end itemize

Les possibilités de modifier la mise en forme par défaut sont abordées à
la rubrique @ref{Mise en forme personnalisée des titrages}.

@cindex breakbefore

Un bloc @code{\book} qui commencerait directement par un bloc
@code{\bookpart} ne verra pas ses titrages apparaître puisqu'il n'y a
aucune page où imprimer le titre.  Si toutefois le titre de l'ouvrage
est requis, le bloc @code{\book} devra commencer par un @emph{markup} ou
une commande @code{\pageBreak}.

La variable @code{breakbefore} activée dans un bloc @code{\header} situé
dans un bloc @code{\score} force le saut de page avant le morceau
contenu dans ce @code{\score}.  Vous pourrez ainsi séparer le titre
principal de la musique.

@lilypond[papersize=c7landscape,verbatim,noragged-right]
\book {
  \header {
    title = "This is my Title"
    subtitle = "This is my Subtitle"
    copyright = "This is the bottom of the first page"
  }
  \score {
    \repeat unfold 4 { e'' e'' e'' e'' }
    \header {
      piece = "This is the Music"
      breakbefore = ##t
    }
  }
}
@end lilypond

@seealso
Manuel d'initiation :
@rlearning{Organisation des fichiers LilyPond}.

Manuel de notation :
@ref{Mise en forme personnalisée des titrages},
@ref{Structure de fichier}.

Fichiers d'initialisation :
@file{ly/titling-init.ly}.


@node Mise en forme par défaut des entête et pied de page
@unnumberedsubsubsec Mise en forme par défaut des entête et pied de page
@translationof Default layout of headers and footers

Les entête et pied -- @emph{header} et @emph{footer} -- sont des
lignes de textes qui apparaissent en haut et en bas de chaque page,
indépendamment du texte de l'ouvrage.  Ils sont contrôlés par les
variables suivantes, attachées au bloc @code{\paper} :

@itemize
@item @code{oddHeaderMarkup} -- entête de page impaire
@item @code{evenHeaderMarkup} -- entête de page paire
@item @code{oddFooterMarkup} -- pied de page impaire
@item @code{evenFooterMarkup} -- pied de page paire
@end itemize

Ces variables @emph{markup} n'accèdent qu'au contenu des champs du bloc
@code{\header} principal, celui qui s'appliquera à tous les blocs
@code{\score} du document.  Ces variables sont définies dans le fichier
@file{ly/titling-init.ly}, et sont par défaut :

@itemize

@item
les numéros sont placés en haut à gauche (si pair) ou à droite (si
impair) de chaque page à compter de la deuxième ;

@item
le contenu du champ @code{instrument} est centré en haut de chaque page
à compter de la deuxième ;

@item
le texte du @code{copyright} est centré au bas de la première page ;

@item
le @code{tagline} -- mention spéciale -- se place au bas de la dernière
page, ou bien sous le @code{copyright} s'il n'y a qu'une seule page.

@end itemize

Le texte de la mention spéciale par défaut se modifie en alimentant le
champ @code{tagline} au niveau du bloc @code{\header} principal.

@lilypond[papersize=a8landscape,verbatim]
\book {
  \header {
    tagline = "... la notation musicale pour Tous"
  }
  \score {
    \relative {
      c'4 d e f
    }
  }
}
@end lilypond

Pour supprimer le @code{tagline} par défaut, il suffit de lui assigner
la valeur @code{##f}.


@node Titrages personnalisés
@subsection Titrages personnalisés
@translationof Custom titles headers and footers

@c TODO: somewhere put a link to header spacing info
@c       (you'll have to explain it more in NR 4).

@menu
* Mise en forme personnalisée des champs de titrage::
* Mise en forme personnalisée des titrages::
* Mise en forme personnalisée des entête et pied de page::
@end menu


@node Mise en forme personnalisée des champs de titrage
@unnumberedsubsubsec Mise en forme personnalisée des champs de titrage
@translationof Custom text formatting for title blocks

Toutes les commandes de mise en forme d'un @code{\markup} permettent de
personnaliser le texte des entête, pied de page et éléments de titrage
contenus dans un bloc @code{\header}.

@lilypond[quote,verbatim,noragged-right]
\score {
  { s1 }
  \header {
    piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
    opus = \markup { \italic "BWV 846" }
  }
}
@end lilypond

@seealso
Manuel de notation :
@ref{Mise en forme du texte}.


@node Mise en forme personnalisée des titrages
@unnumberedsubsubsec Mise en forme personnalisée des titrages
@translationof Custom layout for titles

@cindex bookTitleMarkup
@cindex scoreTitleMarkup
@funindex bookTitleMarkup
@funindex scoreTitleMarkup

L'utilisation de commandes @code{\markup} au sein d'un bloc
@code{\header} permet de modifier aisément l'apparence du texte,
mais n'influence en rien le positionnement précis des éléments de
titrage.  L'accès au positionnement des champs de titrage est géré par
les deux variables suivantes, attachées au bloc @code{\paper} :

@itemize
@item @code{bookTitleMarkup}
@item @code{scoreTitleMarkup}
@end itemize

Le positionnement des titres, avec les valeurs par défaut de ces
variables @code{\markup}, est illustré à la rubrique
@ref{Mise en forme par défaut des titrages subalternes}.

Voici les réglages par défaut de @code{scoreTitleMarkup}, tels que
définis dans le fichier @file{ly/titling-init.ly} :

@example
scoreTitleMarkup = \markup @{ \column @{
  \on-the-fly \print-all-headers @{ \bookTitleMarkup \hspace #1 @}
  \fill-line @{
    \fromproperty #'header:piece
    \fromproperty #'header:opus
  @}
@}
@}
@end example

Ceci aura donc pour effet de positionner les champs @code{piece} et
@code{opus} sur la même ligne, en opposition :

@lilypond[quote,verbatim,noragged-right]
\score {
  { s1 }
  \header {
    piece = "PRAELUDIUM I"
    opus = "BWV 846"
  }
}
@end lilypond

Voici comment redéfinir le @code{scoreTitleMarkup} de telle sorte que le
champ @code{piece}, dont nous modifions la taille et la graisse, se
place au centre de cette ligne :

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \fontsize #4 \bold \fromproperty #'header:piece
        \fromproperty #'header:opus
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "PRAELUDIUM I"
      opus = "BWV 846"
    }
  }
}
@end lilypond

Les champs normalement absents du @code{\header} d'un bloc @code{\score}
seront toutefois imprimés dès lors que vous aurez activé l'instruction
@code{print-all-headers} au sein du bloc @code{\paper}.  Le principal
inconvénient de cette fonction réside dans le fait que les champs
dévolus au titrage des parties devront être supprimés dans
chacun des blocs @code{\score} de votre fichier source -- voir
@ref{Généralités en matière de titrages}.

Afin d'éviter ce désagrément, ajoutez le champ que vous désirez voir
apparaître à la définition de @code{scoreTitleMarkup}.  Nous allons,
dans l'exemple suivant, ajouter au @code{scoreTitleMarkup} le champ
@code{composer}, normalement associé au @code{bookTitleMarkup} ;
chaque @code{\score} pourra alors mentionner un compositeur différent.

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \fontsize #4 \bold \fromproperty #'header:piece
        \fromproperty #'header:composer
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "MENUET"
      composer = "Christian Petzold"
    }
  }
  \score {
    { s1 }
    \header {
      piece = "RONDEAU"
      composer = "François Couperin"
    }
  }
}
@end lilypond

Rien ne vous empêche de créer votre propre champ personnalisé, puis d'y
faire référence dans la définition du @emph{markup}.

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \override #`(direction . ,UP) {
          \dir-column {
            \center-align \fontsize #-1 \bold
              \fromproperty #'header:mycustomtext %% User-defined field
            \center-align \fontsize #4 \bold
              \fromproperty #'header:piece
          }
        }
        \fromproperty #'header:opus
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "FUGA I"
      mycustomtext = "A 4 VOCI" %% User-defined field
      opus = "BWV 846"
    }
  }
}
@end lilypond

@seealso
Manuel de notation :
@ref{Généralités en matière de titrages}.


@node Mise en forme personnalisée des entête et pied de page
@unnumberedsubsubsec Mise en forme personnalisée des entête et pied de page
@translationof Custom layout for headers and footers

@c can make-header and make-footer be removed from
@c paper-defaults-init.ly? -mp

L'utilisation de commandes @code{\markup} au sein d'un bloc
@code{\header} permet de modifier aisément l'apparence du texte,
mais n'influence en rien le positionnement précis des entête et pied
de page.  L'accès au positionnement des champs concernés est géré par
les quatre variables suivantes, attachées au bloc @code{\paper} :

@itemize
@item @code{oddHeaderMarkup}
@item @code{evenHeaderMarkup}
@item @code{oddFooterMarkup}
@item @code{evenFooterMarkup}
@end itemize

@cindex markup conditionnel
@cindex condition et markup
@cindex on-the-fly (à la volée)

@funindex \on-the-fly

L'instruction @code{\on-the-fly} au sein d'un @code{\markup} permet
d'ajouter, lorsque certaines conditions sont respectées, des éléments
au texte des entête et pied de page définis dans le bloc @code{\paper}.
En voici la syntaxe :

@example
variable = \markup @{
  @dots{}
  \on-the-fly \@var{procédure} @var{markup}
  @dots{}
@}
@end example

La @var{procédure} est appelée à chaque fois que la commande
@code{\markup} où elle apparaît est évaluée.  La @var{procédure}
effectuera un test de conformité particulier et interprètera, autrement
dit imprimera l'argument @var{markup} si et seulement si cette
condition est remplie.

LilyPond dispose d'ores et déjà d'un certain nombre de procédures :

@quotation
@multitable {print-page-number-check-first-----} {ce n'est la première page du book--}

@headitem  Nom de la procédure      @tab  Condition testée

@item print-page-number-check-first @tab  il faut imprimer ce numéro de page.
@item create-page-number-stencil    @tab  print-page-numbers est vrai.
@item print-all-headers             @tab  print-all-headers est vrai.
@item first-page                    @tab  c'est la première page du @emph{book}.
@item (on-page nombre)              @tab  numéro de page = nombre
@item last-page                     @tab  c'est la dernière page du @emph{book}.
@item not-first-page                @tab  ce n'est la première page du @emph{book}.
@item part-first-page               @tab  c'est la première page de la partie.
@item part-last-page                @tab  c'est la dernière page de la partie.
@item not-single-page               @tab  cette partie fait plus d'une page.

@end multitable
@end quotation

L'exemple suivant illustre la manière de centrer son numéro au bas de
chaque page.  Il nous faut tout d'abord annuler les définitions de
@code{oddHeaderMarkup} et @code{evenHeaderMarkup} à l'aide d'un
@emph{markup} @code{\null}. Nous redéfinissons ensuite
@code{oddFooterMarkup} pour qu'il contienne le numéro de page, centré.
Enfin, nous appliquons le même paramétrage au @code{\oddFooterMarkup}.

@lilypond[papersize=a8,quote,verbatim,noragged-right]
\book {
  \paper {
    print-page-number = ##t
    print-first-page-number = ##t
    oddHeaderMarkup = \markup \null
    evenHeaderMarkup = \markup \null
    oddFooterMarkup = \markup {
      \fill-line {
        \on-the-fly \print-page-number-check-first
        \fromproperty #'page:page-number-string
      }
    }
    evenFooterMarkup = \oddFooterMarkup
  }
  \score {
    \new Staff { s1 \break s1 \break s1 }
  }
}
@end lilypond

Plusieurs conditions @code{\on-the-fly} mentionnées l'une à la suite de
l'autre se cumulent.  Ainsi, par exemple,

@example
  \on-the-fly \first-page
  \on-the-fly \last-page
  @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}}
@end example

teste si la sortie tient sur une page unique.

@seealso
Manuel de notation :
@ref{Généralités en matière de titrages},
@ref{Mise en forme par défaut des titrages subalternes}.

fichiers d'initialisation :
@file{../ly/titling-init.ly}.


@node Création des métadonnées des fichiers de sortie
@subsection Création des métadonnées des fichiers de sortie
@translationof Creating output file metadata

@cindex PDF metadata
@cindex MIDI metadata
@cindex métadonnées PDF
@cindex métadonnées MIDI

En plus de s'imprimer sur la partition, les variables du bloc
@code{\header} permettent de générer les métadonnées des fichiers de
sortie.  Dans le cas d'un fichier PDF, ces métadonnées pourront être
affichées par le lecteur en tant que propriétés du document.  Quel que
soit le type de fichier de sortie, seules seront analysées les variables
déterminées dans le @code{\header} du bloc définissant le fichier à
générer, ainsi que celles des blocs hiérarchiquement supérieurs. Pour les
fichiers PDF, seules les définitions du @code{\header} en dehors ou au
niveau d'un bloc @code{\book} affecteront les métadonnées des documents
PDF ; pour les fichiers MIDI seront utilisées les définitions jusqu'au
niveau @code{\score}.

Par exemple, affecter « Symphony I » à la propriété @code{title} dans le
bloc @code{\header} donnera aussi ce titre au document PDF et à la
séquence MIDI.

@example
\header@{
  title = "Symphony I"
@}
@end example

Lorsque le titre imprimé diffère de celui affiché en tant que propriété
du PDF, devra être renseignée la propriété @code{pdftitle}.

@example
\header@{
  title = "Symphony I"
  pdftitle = "Symphony I by Beethoven"
@}
@end example

Les variables @code{title}, @code{subject}, @code{keywords},
@code{subtitle}, @code{composer}, @code{arranger}, @code{poet},
@code{author} et @code{copyright} initialisent toutes les propriétés
PDF, qu'il suffit de préfixer d'un « pdf » pour affecter aux propriétés
PDF une valeur divergente de la sortie imprimable.

La propriété PDF @code{Creator} prend automatiquement la valeur
« LilyPond » additionnée deu numéro de version ; les valeurs de
@code{CreationDate} et @code{ModDate} sont définies à la date et l'heure
courantes -- @code{ModDate} peut être écrasé par la variable de
@code{\header} @code{moddate} (ou @code{pdfmoddate}) pour un horodatage
PDF valide.

La variable @code{title} détermine aussi le nom de la séquence MIDI.
L'utilisation de la variable @code{midititle} permet d'attribuer à la
séquence MIDI un nom différent de celui attribué au fichier imprimable.


@node Notes de bas de page
@subsection Notes de bas de page
@translationof Creating footnotes

@cindex bas de page, notes
@cindex footnotes

Les notes de bas de page sont utiles dans bien des situations.  Dans
tous les cas, un « appel de note » vient se placer en référence dans te
texte ou la musique, et le « texte de la note » est reporté en bas de la
page.

Selon qu'elle est référencée dans une expression musicale ou dans du
texte indépendant, une note de bas  de page sera créée suivant une
procédure différente.

@menu
* Notes de bas de page dans une expression musicale::
* Notes de bas de page dans du texte indépendant::
@end menu


@node Notes de bas de page dans une expression musicale
@unnumberedsubsubsec Notes de bas de page dans une expression musicale
@translationof Footnotes in music expressions

@cindex musique et note de bas de page
@funindex \footnote

@subsubsubheading Généralités sur l'annotation de musique
@c VO Music footnotes overview

Il existe deux catégories d'annotation concernant une expression
musicale :

@table @emph
@item Les annotations événementielles
se rattachent à des événements particuliers, comme une note individuelle,
un élément d'interprétation (doigté, accent ou nuance) ou des événements
postérieurs (liaison, ligature manuelle).  Une note de bas de page
événementielle se libelle généralement sous la forme :

@example
[@var{position}] \footnote [@var{marque}] @var{décalage} @var{annotation} @var{musique}
@end example

@item Les annotations temporelles
se rapportent à un point particulier du déroulement d'un contexte
musical.  Certaines commandes, telles @code{\time} et @code{\clef}, ne
reposent pas sur un événement pour la création de l'objet métrique ou
clef.  Il en va de même pour un accord : sa hampe ou ses crochets ne
sont créés qu'à la fin d'un moment (plus exactement au travers de l'un
des événements note qui le composent).  Il n'est pas possible de
connaître assurément lequel des événements note d'un accord est
plus particulièrement à l'origine de la hampe ou du crochet.  Il
est donc plus aisé, pour de tels éléments, d'utiliser des
annotations temporelles.

Une annotation temporelle permet d'annoter des objets de rendus
sans se référer à un événement.  Elle se libelle généralement sous
la forme :

@example
\footnote [@var{marque}] @var{décalage} @var{annotation} [@var{Contexte}.]@var{nom-grob}
@end example

@end table

Les arguments, quelle que soit la catégorie d'annotation, peuvent se
définir ainsi :

@table @var
@item position
Lorsque la commande @code{\footnote} s'applique à un élément
d'interprétation ou un événement rattaché, et uniquement dans ces cas,
elle doit être précédée d'un indicateur de positionnement (@code{-, _}
ou @code{^}) de façon à rattacher @var{musique} (avec sa marque) à
la note ou au silence qui précède.

@item marque
Un @emph{markup} ou une chaîne de caractères identifiant l'annotation
tant au niveau de l'appel que de la note qui apparaîtra au bas de la
page.  L'absence de cet élément -- ou une valeur de @code{\default} --
incrémentera automatiquement le compteur.  Ce compteur est réinitialisé
à chaque page comportant une annotation.

@item décalage
Une paire de nombres -- @samp{#(2 . 1)} par exemple -- spécifiant le
décalage de la marque, en abscisse et en ordonnée, par rapport au point
de référence.  Des valeurs positives décalent vers la droite ou le
haut, des valeurs négatives vers la gauche ou le bas ; des valeurs à
zéro centrent la marque sur le point de référence.  Le décalage
s'exprime en espace de portée.

@item Contexte
Le contexte auquel appartient l'objet à annoter.  Cet argument
peut être omis dès lors qu'il s'agit d'un contexte de bas niveau
tel que @code{Voice}.

@item nom-grob
Le type d'objet à annoter -- @samp{Flag} par exemple.  Lorsque cet
élément est spécifié, c'est l'objet en question qui servira de point de
référence, même s'il trouve son origine non pas directement dans
une expression musicale mais dans tout objet du type spécifié
intervenant à cet instant précis de la partition.

@item annotation
un @emph{markup} ou une chaîne de caractères qui sera reporté au bas de
la page.

@item musique
l'élément qui fait l'objet du commentaire, qu'il s'agisse d'un
événement musical, de l'un des constituants d'un accord ou d'un
événement rattaché.

@end table


@subsubsubheading Notes de bas de page événementielles
@c VO Event-based footnotes

@cindex événementielle, note de bas de page

Ce type de note de bas de page s'attache à un objet de rendu
généré directement par l'événement correspondant à @var{musique}.
Il répond à la syntaxe :

@example
\footnote [@var{décalage}] @var{décalage} @var{annotation} @var{musique}
@end example

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    \footnote #'(-1 . 3) "Une note" a4
    a4
    \footnote #'(2 . 2) "Un silence" r4
    a4
  }
}
@end lilypond

Un accord @emph{dans son intégralité} ne peut pas faire l'objet
d'une note de bas de page événementielle : un accord, même s'il ne
contient qu'une seule et unique note, ne génère aucun événement en
propre.  Une des notes @emph{au sein} de l'accord peut toutefois
se voir attribuer une annotation :

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    \footnote #'(2 . 3) "Résultat non probant" <a-3>2
    <\footnote #'(-2 . -3) "Résultat probant" a-3>4
    <a-3 \footnote #'(3 . 1/2) "Tout aussi probant" c-5>4
  }
}
@end lilypond

Lorsque l'annotation concerne un événement postérieur ou une
articulation, la commande @code{\footnote} @strong{doit} être
précédée d'un indicateur de position (@code{-, _} ou @code{^}) et
suivie de l'événement postérieur ou l'articulation comme argument
@var{musique}.  Dans ce cas, la commande @code{\footnote} peut se
considérer comme une copie de son dernier argument auquel on
attache une annotation.  La syntaxe consacrée est :

@example
@var{position} \footnote [@var{marque}] @var{décalage} @var{annotation} @var{musique}
@end example

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative {
    a'4_\footnote #'(0 . -1) "Une liaison arbitrairement en dessous" (
    b8^\footnote #'(1 . 0.5) "Une ligature manuelle forcée en haut" [
    b8 ]
    c4 )
    c-\footnote #'(1 . 1) "Tenuto" --
  }
}
@end lilypond

Les appels de note peuvent être personnalisés, et le trait reliant
l'objet à l'appel supprimé :


@subsubsubheading Notes de bas de page temporelles
@c VO Time-based footnotes

@cindex temporelle, note de bas de page

Lorsque la note de bas de page se réfère à un objet de rendu résultant
d'un événement -- @code{Accidental} ou @code{Stem} découlent d'un
@code{NoteHead} --, l'argument @var{nom-grob} de l'objet en question est
requis après le texte de l'annotation, en lieu et place de
@var{musique} :

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    \footnote #'(-1 . -3) "Un bémol" Accidental
    aes4 c
    \footnote #'(-1 . 0.5) "Un autre bémol" Accidental
    ees
    \footnote #'(1 . -2) "Une hampe" Stem
    aes
  }
}
@end lilypond

Notez bien que, lorsque @var{nom-grob} est spécifié, tous les objets de
ce type qui se trouvent à ce même instant se verront attacher une
annotation :

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c' {
    \footnote #'(-1 . 3) "Un bémol" Accidental
    <ees ges bes>4
    \footnote #'(2 . 0.5) "Une articulation" Script
    c'->-.
  }
}
@end lilypond

Une note incluse dans un accord peut individuellement se voir attribuer
une annotation événementielle.  Une tête de note (@code{NoteHead}) est
le @emph{seul} objet directement généré par un constituant d'accord ;
elle peut donc être affectée d'une annotation événementielle.  Tous les
autres objets constituant un accord sont générés indirectement.  La
commande @code{\footnote} ne dispose pas d'une syntaxe permettant de
spécifier @emph{à la fois} un type d'objet @emph{et} un événement
particulier auquel s'attacher.  De tels objets pourront toutefois faire
l'objet d'une annotation temporelle, préfixée d'un @code{\single} afin
d'annoter l'événement directement consécutif :

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    < \footnote #'(1 . -2) "Un la" a
      \single \footnote #'(-1 . -1) "Un dièse" Accidental
      cis
      \single \footnote #'(0.5 . 0.5) "Un bémol" Accidental
      ees fis
    >2
  }
}
@end lilypond

@warning{Lorsque plusieurs notes de bas de page se rapportent à un même
empilement vertical comme ci-dessus, elles sont numérotées et
apparaîtront selon l'ordre vertical des éléments présentés, autrement dit
celui positionné le plus haut en premier, non dans leur ordre
d'apparition dans le fichier source.}

Les objets de rendu tels que changement de clef ou d'armure tirent leur
origine dans la modification d'une propriété plutôt que d'un véritable
événement.  D'autres, comme les barres ou numéros de mesure, dépendent
directement de la temporisation.  C'est la raison pour laquelle de tels
objets doivent s'annoter en fonction de leur survenance au fil de la
musique.  Les notes de bas de page temporelles sont la solution à
privilégier lorsqu'il s'agit d'annoter les hampes ou ligatures affectant
des accords : bien qu'une telle fonctionnalité puisse s'appliquer à l'un
des événements constituant l'accord, rien ne laisse présager lequel
serait le plus approprié.

En matière de note de bas de page temporelle, l'objet de rendu considéré
doit toujours être mentionné explicitement, ainsi que le contexte si
l'objet est créé dans un autre contexte que celui du plus bas niveau.

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    r1 |
    \footnote #'(-0.5 . -1) "Changement de métrique" Staff.TimeSignature
    \time 3/4
    \footnote #'(1 . -1) "Hampe de l'accord" Stem
    <c e g>4 q q
    \footnote #'(-0.5 . 1) "Barre de mesure" Staff.BarLine
    q q
    \footnote #'(0.5 . -1) "Changement d'armure" Staff.KeySignature
    \key c \minor
    q
  }
}
@end lilypond

Les appels de note peuvent être personnalisés, et le trait reliant
l'objet à l'appel supprimé :

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c' {
    \footnote "*" #'(0.5 . -2) \markup { \italic "* La première note" }
    a'4 b8
    \footnote \markup { \super "$" } #'(0.5 . 1)
      \markup { \super "$" \italic " La deuxième note" }
    e c4
    \once \override Score.FootnoteItem #'annotation-line = ##f
    b-\footnote \markup \tiny "+" #'(0.1 . 0.1)
      \markup { \super "+" \italic " Éditorial" } \p
  }
}
@end lilypond

D'autres exemples de personnalisation des appels de note sont donnés à
la rubrique @ref{Notes de bas de page dans du texte indépendant}.


@node Notes de bas de page dans du texte indépendant
@unnumberedsubsubsec Notes de bas de page dans du texte indépendant
@translationof Footnotes in stand-alone text

@cindex texte indépendant et note de bas de page

De telles notes de bas de page affectent les @emph{markup} extérieurs
aux expressions musicales.  Il n'est pas nécessaire en pareil cas
d'indiquer un point de référence par un trait ; l'appel de note vient
juste s'accoler au @emph{markup} qui fait l'objet de l'annotation.  Les
appels de note peuvent être gérés automatiquement, auquel cas ils seront
numériques, ou bien manuellement en fournissant un indicateur
particulier.

Les notes de bas de page concernant du texte indépendant se gèrent
différemment selon qu'elles sont automatiques ou manuelles.


@subsubsubheading Notes de bas de page automatiques dans du texte
@c VO Footnotes in stand-alone text with automatic marks

La syntaxe consacrée dans le cas d'une gestion automatique des appels
de note est :

@example
\markup @{ @dots{} \auto-footnote @var{texte} @var{annotation} @dots{} @}
@end example

Ses les éléments sont :

@table @var

@item texte
le @emph{markup} ou la chaîne de caractères sur lequel porte
l'annotation ;

@item annotation
un @emph{markup} ou une chaîne de caractères constituant le texte de
l'annotation qui sera reportée en bas de page.

@end table

Par exemple :

@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
  \header { tagline = ##f }
  \markup {
    "A simple"
    \auto-footnote "tune" \italic " By me"
    "is shown below.  It is a"
    \auto-footnote "recent" \italic " Aug 2012"
    "composition."
  }
  \relative {
    a'4 b8 e c4 d
  }
}
@end lilypond


@subsubsubheading Notes de bas de page personnalisées dans du texte
@c VO Footnotes in stand-alone text with custom marks

La syntaxe consacrée dans le cas d'une gestion personnalisée des appels
de note est :

@example
\markup @{ @dots{} \footnote @var{appel} @var{annotation} @dots{} @}
@end example

Ses les éléments sont :

@table @var

@item appel
un @emph{markup} ou une chaîne de caractères représentant l'appel de
note affecté à ce point de référence.  Notez bien que cette marque ne
sera @strong{pas} reproduite automatiquement avant le texte proprement
dit de l'annotation.

@item annotation
un @emph{markup} ou une chaîne de caractères constituant le texte de
l'annotation qui sera reportée en bas de page, précédé de l'@var{appel}.

@end table

N'importe quel caractère simple tel que @code{*} ou @code{+} peut
s'utiliser en tant qu'appel de note, comme nous l'avons vu à la rubrique
@ref{Notes de bas de page dans une expression musicale}.  D'autres
caractères particuliers sont accessibles sous forme de raccourci -- voir
la rubrique @ref{Équivalents ASCII} :

@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
  \paper { #(include-special-characters) }
  \header { tagline = ##f }
  \markup {
    "A simple tune"
    \footnote "*" \italic "* By me"
    "is shown below.  It is a recent"
    \footnote \super &dagger; \concat {
      \super &dagger; \italic " Aug 2012"
    }
    "composition."
  }
  \relative {
    a'4 b8 e c4 d
  }
}
@end lilypond

Un appel de note peut aussi se libeller sous la forme d'un point de code
unicode -- voir la rubrique @ref{Unicode} :

@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
  \header { tagline = ##f }
  \markup {
    "A simple tune"
    \footnote \super \char##x00a7 \concat {
      \super \char##x00a7 \italic " By me"
    }
    "is shown below.  It is a recent"
    \footnote \super \char##x00b6 \concat {
      \super \char##x00b6 \italic " Aug 2012"
    }
    "composition."
  }
  \relative {
    a'4 b8 e c4 d
  }
}
@end lilypond

@seealso
Manuel d'initiation :
@rlearning{Objets et interfaces}.

Manuel de notation :
@ref{Commentaires textuels},
@ref{Équivalents ASCII},
@ref{Indications textuelles},
@ref{Info-bulle},
@ref{Liste des caractères spéciaux},
@ref{Unicode}.

Référence des propriétés internes :
@rinternals{FootnoteEvent},
@rinternals{FootnoteItem},
@rinternals{FootnoteSpanner},
@rinternals{Footnote_engraver}.

@knownissues
Les notes de bas de page ne peuvent que s'empiler l'une au-dessus de
l'autre ; elles ne seront jamais présentées à la queue leu leu.

Silences multimesures, ligatures automatiques et paroles ne peuvent se
voir affecter de note de bas de page.

Les notes de bas de page peuvent générer des chevauchements quand elles
sont trop nombreuses sur une même page.


@node Référencement des numéros de page
@subsection Référencement des numéros de page
@translationof Reference to page numbers

LilyPond vous permet, à l'aide de la commande @code{\label}, d'insérer
des points de référence dans un ouvrage, aussi bien en dehors qu'au fil
de la musique.  Ce point de référence pourra être ensuite repris à
l'intérieur d'un @emph{markup} ; vous pourrez même y ajouter le
numéro de page grâce à la commande de @emph{markup} @code{\page-ref}.

@c KEEP LY
@lilypond[verbatim,papersize=a8landscape]
\header { tagline = ##f }
\book {
  \label #'firstScore
  \score {
    {
      c'1
      \pageBreak \mark A \label #'markA
      c'1
    }
  }

  \markup { Le premier mouvement débute à la page \page-ref #'firstScore "0" "?" }
  \markup { Le repère A est à la page \page-ref #'markA "0" "?" }
}
@end lilypond

L'instruction @code{\page-ref} prend trois arguments :
@enumerate
@item
le point de référence, sous la forme d'un symbole Scheme, comme par
exemple @code{#'firstScore},

@item
un « emporte-pièce » afin d'estimer la longueur totale du @emph{markup},
et

@item
un texte de remplacement au cas où la référence ne serait pas retrouvée.
@end enumerate

La présence de l'emporte-pièce est rendue nécessaire par le fait que les
@emph{markups} sont générés avant que les sauts de page ne soient
positionnés.  Bien que le numéro de page en question ne soit pas encore
déterminé, LilyPond doit connaître les dimensions de ce @emph{markup}.
Vous pouvez, lorsque l'ouvrage contiendra plus de dix pages, stipuler un
emporte-pièce sur deux caractères -- soit @code{"00"}.

@predefined
@funindex \label
@code{\label},
@funindex \page-ref
@code{\page-ref}.
@endpredefined


@node Table des matières
@subsection Table des matières
@translationof Table of contents

La commande @code{\markuplist \table-of-contents} vous permettra de
générer une table des matières.  Les éléments qui la composeront sont
créés par la commande @code{\tocItem}, insérée indépendamment ou au sein
d'une expression musicale.

@verbatim
\markuplist \table-of-contents
\pageBreak

\tocItem \markup "Premier mouvement"
\score {
  {
    c'4  % @dots{}
    \tocItem \markup "Passage spécifique du premier mouvement"
    d'4  % @dots{}
  }
}

\tocItem \markup "Second mouvement"
\score {
  {
    e'4 % @dots{}
  }
}
@end verbatim

Les @emph{markups} dévolus à la mise en forme de la table des matières
se définissent dans le bloc @code{\paper}. LilyPond dispose de deux
@emph{markups} prédéfinis :

@itemize

@item
@code{tocTitleMarkup}

@noindent
Utilisé pour mettre en forme le titre de la table des matières.

@verbatim
tocTitleMarkup = \markup \huge \column {
  \fill-line { \null "Table of Contents" \null }
  \null
}
@end verbatim

@item
@code{tocItemMarkup}

@noindent
Utilisé pour mettre en forme les éléments au sein de la table des
matières.

@verbatim
tocItemMarkup = \markup \fill-line {
  \fromproperty #'toc:text \fromproperty #'toc:page
}
@end verbatim

@end itemize

@noindent
Ces variables sont adaptables.

Voici comment, par exemple, franciser le titre :

@verbatim
\paper {
  tocTitleMarkup = \markup \huge \column {
    \fill-line { \null "Table des matières" \null }
    \hspace #1
  }
@end verbatim

L'exemple suivant illustre la manière de modifier la taille des éléments
de la table des matières :

@verbatim
tocItemMarkup = \markup \large \fill-line {
  \fromproperty #'toc:text \fromproperty #'toc:page
}
@end verbatim

Notez bien la manière de référencer le libellé et le numéro de page dans
la définition de @code{tocItemMarkup}.

L'élément et son numéro de page peuvent se rejoindre par une ligne
pointillée :

@lilypond[verbatim,line-width=10.0\cm]
\header { tagline = ##f }
\paper {
  tocItemMarkup = \tocItemWithDotsMarkup
}

\book {
  \markuplist \table-of-contents
  \tocItem \markup { Allegro }
  \tocItem \markup { Largo }
  \markup \null
}
@end lilypond

N'hésitez pas à définir vous-même d'autres commandes et @emph{markups}
afin de construire une table plus élaborée.  Dans l'exemple qui suit,
nous créons un nouveau style d'élément dans le but de mentionner les
actes dans la table des matières d'un opéra :

@noindent
Commençons par définir une nouvelle variable de type @code{markup} --
appelée @code{tocActMarkup} -- au sein du bloc @code{\paper}.

@verbatim
\paper {
  tocActMarkup = \markup \large \column {
    \hspace #1
    \fill-line { \null \italic \fromproperty #'toc:text \null }
    \hspace #1
  }
}
@end verbatim

@noindent
Créons ensuite une fonction musicale (@code{tocAct}) utilisant la
nouvelle définition de @emph{markup} @code{tocActMarkup}.

@verbatim
tocAct =
  #(define-music-function (text) (markup?)
     (add-toc-item! 'tocActMarkup text))
@end verbatim

@noindent
Dans un fichier LilyPond, l'utilisation de cette définition
personnalisée pourrait ressembler à ceci :

@lilypond[line-width=10.0\cm]
\header { tagline = ##f }
\paper {
  tocActMarkup = \markup \large \column {
    \hspace #1
    \fill-line { \null \italic \fromproperty #'toc:text \null }
    \hspace #1
  }
}

tocAct =
  #(define-music-function (text) (markup?)
     (add-toc-item! 'tocActMarkup text))

\book {
  \markuplist \table-of-contents
  \tocAct \markup { Atto Primo }
  \tocItem \markup { Coro. Viva il nostro Alcide }
  \tocItem \markup { Cesare. Presti omai l'Egizia terra }
  \tocAct \markup { Atto Secondo }
  \tocItem \markup { Sinfonia }
  \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore }
  \markup \null
}
@end lilypond

Voici comment utiliser la commande @code{\fill-with-pattern} dans le
cadre d'une table des matières :

@verbatim
  tocItemMarkup = \markup { \fill-line {
    \override #'(line-width . 70)
    \fill-with-pattern #1.5 #CENTER . \fromproperty #'toc:text \fromproperty #'toc:page
    }
  }
@end verbatim

@predefined
@funindex \table-of-contents
@code{\table-of-contents},
@funindex \tocItem
@code{\tocItem}.
@endpredefined

@seealso
Fichiers d'initialisation :
@file{../ly/toc-init.ly}.


@node Travail sur des fichiers texte
@section Travail sur des fichiers texte
@translationof Working with input files

@menu
* Insertion de fichiers LilyPond::
* Différentes éditions à partir d'une même source::
* Caractères spéciaux::
@end menu


@node Insertion de fichiers LilyPond
@subsection Insertion de fichiers LilyPond
@translationof Including LilyPond files

@funindex \include
@cindex inclusion de fichiers

Lorsqu'un projet prend de l'importance en volume, il est judicieux de le
scinder en plusieurs fichiers, auxquels vous ferez référence avec un
simple

@example
\include "autrefichier.ly"
@end example

Une ligne @code{\include "autrefichier.ly"} dans un fichier revient à
recopier intégralement le contenu de @file{autrefichier.ly} à l'endroit
même ou est placée l'instruction @code{\include}.  Vous pouvez par
exemple écrire un fichier individuel par instrument, puis les regrouper
pour former le fichier @qq{conducteur}.  Les différentes variables
définies dans les fichiers séparés seront normalement reprises et
utilisables dans le fichier formant le conducteur.  Les sections
balisées dans les fichiers individuels peuvent être réutilisées en
différents endroit de la partition, comme expliqué à la rubrique
@ref{Différentes éditions à partir d'une même source}.

Lorsque le fichier auquel il est fait référence se trouve dans le même
répertoire, donner seulement son nom en argument à la commande
@code{\include} suffit.  S'il se trouve ailleurs, vous devrez indiquer
le chemin d'accès, absolu ou relatif, en respectant toutefois la syntaxe
UNIX -- autrement dit, le séparateur de répertoire est une oblique
normale @code{/} et non l'oblique inverse @code{\} de DOS ou Windows.
Par exemple, si le fichier @file{truc.ly} se trouve dans le répertoire
supérieur au répertoire de travail, la ligne devra être

@example
\include "../truc.ly"
@end example

@noindent
ou bien, si les fichiers correspondant aux parties d'orchestre se
trouvent dans le sous-répertoire @file{parties} relativement au
répertoire courant, vous devrez mentionner

@example
\include "parties/VI.ly"
\include "parties/VII.ly"
etc.
@end example

Les fichiers à inclure peuvent eux-mêmes contenir des instructions
@code{\include}.  Ces instructions @code{\include} de second niveau ne
pourront, par défaut, être interprétées qu'une fois intégrées dans le
fichier principal ; leur argument doit donc comporter le chemin
relativement au fichier principal et non par rapport au fichier dans
lequel cette inclusion est mentionnée.  Vous pouvez toutefois influer
sur ce comportement de manière globale à l'aide de l'option
@w{@code{-drelative-includes}} en ligne de commande ou en ajoutant une
clause @code{#(ly:set-option 'relative-includes #t)} en tête du fichier
principal.

Lorsque @code{relative-include} est valorisé à @code{#t}, le chemin à
suivre pour chacune des commandes @code{\include} sera pris relativement
au fichier qui la contient.  Cette option est vouée à être activée par
défaut dans une future version de LilyPond.

Selon l'endroit où @code{relative-includes} est valorisé à @code{#t} ou
@code{#f}, la commande @code{\include} permettra d'incorporer des
fichiers contenus dans l'arborescence du répertoire principal et des
fichiers situés ailleurs.  Si, par exemple, une biblothèque générale
libA a été créée pour utiliser des sous-fichiers à l'aide
d'inclusions dans un fichier catalogue, les clauses @code{\include}
devront être précédées d'un
@code{#(ly:set-option #relative-includes #t)}  de telle sorte
qu'elles soient interprétées correctement lorsque rapatriées dans
le fichier @file{.ly} principal.  Examinons cela dans les faits :

@example
libA/
  libA.ly
  A1.ly
  A2.ly
  @dots{}
@end example

@noindent
puis le fichier catalogue, @code{libA.ly}, qui contient

@example
#(ly:set-option 'relative-includes #t)
\include "A1.ly"
\include "A2.ly"
@dots{}
% retour au réglage par défaut
#(ly:set-option 'relative-includes #f)
@end example

Tout fichier @code{.ly} peut désormais consulter l'intégralité de cette
bibliothèque grâce à un simple

@example
\include "~/libA/libA.ly"
@end example

Un positionnement judicieux des commutateurs permet de gérer des
structures de fichiers plus complexes.

Vous pouvez inclure des fichiers dont vous spécifierez le chemin d'accès
sur la ligne de commande au moment de lancer la compilation.  L'appel à
ces fichiers ne mentionnera alors que leur nom.  Par exemple, si vous
voulez compiler avec cette méthode le fichier @file{principal.ly} qui
inclut des fichiers situés dans le sous-répertoire @file{parties},
placez vous dans le répertoire contenant @file{principal.ly}, puis tapez

@example
lilypond --include=parties principal.ly
@end example

tout en ayant bien dans @file{principal.ly}

@example
\include "VI.ly"
\include "VII.ly"
 etc.
@end example

Lorsqu'un fichier est voué à être inclus dans nombre de partitions, vous
pouvez le placer dans le répertoire de LilyPond @file{../ly}.
Attention : ce répertoire varie selon votre installation, comme
indiqué au chapitre @rlearning{Autres sources de documentation}.  Ce
fichier sera inclus dès lors que vous fournirez uniquement son nom en
argument à la fonction @code{\include}.  C'est par exemple le cas du
fichier de définition particulier @file{gregorian.ly}.

Au moment où vous lancez LilyPond, un certain nombre de fichiers se
retrouvent inclus par défaut ; il suffit d'activer le mode verbeux
en faisant @w{@code{lilypond --verbose}} pour s'en rendre compte.  Vous
verrez ainsi défiler, en plus de nombreuses informations, le nom d'un
certain nombre de fichiers et de chemins d'accès.  Les fichiers les plus
important sont mentionnés au chapitre
@rlearning{Autres sources de documentation}.  Si vous venez à les
modifier, rappelez-vous qu'ils seront écrasés à l'installation d'une
nouvelle version de LilyPond.

Vous trouverez quelques exemples simples d'utilisation de la commande
@code{\include} au chapitre @rlearning{Conducteurs et parties}.

@seealso
Manuel d'initiation :
@rlearning{Autres sources de documentation},
@rlearning{Conducteurs et parties}.

@knownissues
Lorsque vous incluez un fichier qui porte le même nom que l'un des
fichiers d'initialisation de LilyPond, le fichier de la distribution de
LilyPond aura préséance.


@node Différentes éditions à partir d'une même source
@subsection Différentes éditions à partir d'une même source
@translationof Different editions from one source

Plusieurs méthodes permettent de générer différentes versions d'une
partition à partir d'une même source.  Les variables -- ou
identificateurs -- sont sûrement le moyen le plus simple de combiner de
différente manière des passages relativement longs, alors que les
balises permettront de sélectionner de courts fragments selon leur
utilisation.

Quelle que soit la méthode utilisée, séparer la notation de la structure
de la partition vous donnera plus de liberté dans l'agencement de
l'ouvrage final, puisque vous ne reviendrez pas sur la musique qui le
compose.

@menu
* Utilisation de variables::
* Utilisation de balises::
* Globalisation des réglages::
@end menu


@node Utilisation de variables
@unnumberedsubsubsec Utilisation de variables
@translationof Using variables

@cindex variables, utilisation de

Un fragment musical identifié par une variable est réutilisable à divers
endroits de la partition, comme nous l'avons vu à la rubrique
@rlearning{Organisation du code source avec des variables}.  Par
exemple, une partition pour chœur @notation{a cappella} comporte souvent
une réduction pour piano reprenant toutes les voix ; il s'agit de
la même musique, et vous ne devrez donc la saisir qu'une seule fois.
D'autre part, la musique issue de deux variables peut se combiner sur
une seule portée, comme nous l'avons vu à la rubrique
@ref{Regroupement automatique de parties}.  Prenons l'exemple suivant :

@lilypond[verbatim,quote]
sopranoMusic = \relative { a'4 b c b8( a) }
altoMusic = \relative { e'4 e e f }
tenorMusic = \relative { c'4 b e d8( c) }
bassMusic = \relative { a4 gis a d, }
allLyrics = \lyricmode { King of glo -- ry }
<<
  \new Staff = "Soprano" \sopranoMusic
  \new Lyrics \allLyrics
  \new Staff = "Alto" \altoMusic
  \new Lyrics \allLyrics
  \new Staff = "Tenor" {
    \clef "treble_8"
    \tenorMusic
  }
  \new Lyrics \allLyrics
  \new Staff = "Bass" {
    \clef "bass"
    \bassMusic
  }
  \new Lyrics \allLyrics
  \new PianoStaff <<
    \new Staff = "RH" {
      \set Staff.printPartCombineTexts = ##f
      \partcombine \sopranoMusic \altoMusic
    }
    \new Staff = "LH" {
      \set Staff.printPartCombineTexts = ##f
      \clef "bass"
      \partcombine \tenorMusic \bassMusic
    }
  >>
>>
@end lilypond

Générer une partition chorale ou la réduction pour piano ne requiert que
de modifier la structure des éléments, sans aucunement toucher à la
musique.

Dans le cas d'une partition relativement longue, vous pouvez isoler la
définition des différentes variables dans des fichiers séparés que vous
rappellerez ensuite, comme indiqué à la rubrique
@ref{Insertion de fichiers LilyPond}.


@node Utilisation de balises
@unnumberedsubsubsec Utilisation de balises
@translationof Using tags

@funindex \tag
@funindex \keepWithTag
@funindex \removeWithTag
@cindex tag
@cindex balise
@cindex regroupement de balises

La commande @code{\tag #'@var{partieA}} affecte à une expression
musicale le nom @var{partieA}.  Les expressions ainsi balisées pourront
être filtrées par la suite, à l'aide de @code{\keepWithTag #'@var{nom}}
ou @code{\removeWithTag #'@var{nom}}.  Ces filtres fonctionnent de la
manière suivante :

@multitable @columnfractions .5 .5
@headitem Filtre
  @tab Résultat

@item
Musique balisée précédée de @code{\keepWithTag #'@var{nom}} ou
       @code{\keepWithTag #'(@var{nom1} @var{nom2}@dots{})}
@tab Musique non balisée et musique balisée par l'un des noms de
       balise fournis seront incluses ; la musique balisée
       autrement est exclue.

@item
Musique balisée précédée de @code{\removeWithTag #'@var{nom}} ou
       @code{\removeWithTag #'(@var{nom1} @var{nom2}@dots{})}
@tab Musique non balisée et fragments appelés autrement que par
       l'un des noms fournis seront inclus ; la musique balisée
       par autre chose que les noms mentionnés est exclue.

@item
Musique balisée non précédée de @code{\keepWithTag} ou
@code{\removeWithTag}
 @tab Musique balisée et non balisée seront incluses.

@end multitable

L'argument des commandes @code{\tag}, @code{\keepWithTag} et
@code{\removeWithTag} doit être un symbole ou une liste de symboles
(tel que @code{#'conducteur} ou @code{#'(violonI violonII)}), suivi
d'une expression musicale.  Si, @emph{et seulement si} les symboles sont
des indentifiants LilyPond valides (caractères alphabétiques uniquement,
sans chiffre, souligné ou tiret) qui ne peuvent se confondre avec des
notes, le @code{#'} peut s'omettre et, pour raccourcir, une liste de
symbole peut utiliser le point en séparateur -- autrement dit,
@code{\tag #'(violinI violinII)} peut s'écrire @code{\tag
violinI.violinII}.  Ceci s'applique aussi bien pour @code{\keepWithTag}
que pour @code{\removeWithTag}.

Dans l'exemple qui suit, nous obtenons deux versions du même extrait,
l'une pour le conducteur, l'autre pour l'instrumentiste qui, elle,
comportera les ornements développés.

@lilypond[verbatim,quote]
music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand { \repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \keepWithTag #'trills \music
}
\score {
  \keepWithTag #'expand \music
}
@end lilypond

@noindent
Il est parfois plus aisé d'exclure des fragments :

@lilypond[verbatim,quote]
music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand {\repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \removeWithTag #'expand
  \music
}
\score {
  \removeWithTag #'trills
  \music
}
@end lilypond

Ce principe de filtrage peut s'appliquer aux articulations, textes, etc.
Il suffit de positionner

@example
-\tag #@var{ma-balise}
@end example

@noindent
avant l'articulation ou le texte, comme ici :

@example
c1-\tag #'doigt ^4
c1-\tag #'gaffe ^"Attention !"
@end example

@noindent
Ceci définira une note avec une indication conditionnelle de doigté ou
un texte.

Vous pouvez baliser différemment la même expression musicale en
saisissant plusieurs @code{\tag} ou bien en combinant plusieurs
balises dans une liste :

@lilypond[quote,verbatim]
music = \relative c'' {
  \tag #'a \tag #'both { a4 a a a }
  \tag #'(b both) { b4 b b b }
}
<<
\keepWithTag #'a \music
\keepWithTag #'b \music
\keepWithTag #'both \music
>>
@end lilypond

L'application concomitante de plusieurs filtres @code{\removeWithTag} à
la même expression musicale permet d'exclure plusieurs balisages.
Une liste fournie en argument à un unique @code{\removeWithTag}
produira le même effet :

@lilypond[verbatim,quote]
music = \relative c'' {
  \tag #'A { a4 a a a }
  \tag #'B { b4 b b b }
  \tag #'C { c4 c c c }
  \tag #'D { d4 d d d }
}
\new Voice {
  \removeWithTag #'B
  \removeWithTag #'C
  \music
  \removeWithTag #'(B C)
  \music
}
@end lilypond

L'application de plus d'un filtre @code{\keepWithTag} à la même
expression musicale aboutit à l'exclusion de @b{tous} les balisages.
En effet, si le premier filtre exclut tous les autres balisages,
l'application du second exclura les effets du premier.
L'utilisation d'une unique commande @code{\keepWithTag} avec une
liste de balises est en pareil cas des plus pertinente : seront
exclus tous les fragments non concernés par l'une quelconque des
balises mentionnées.

@lilypond[verbatim,quote]
music = \relative c'' {
  \tag #'violinI { a4 a a a }
  \tag #'violinII { b4 b b b }
  \tag #'viola { c4 c c c }
  \tag #'cello { d4 d d d }
}

\new Staff {
  \keepWithTag #'(violinI violinII)
  \music
}
@end lilypond

@noindent
imprimera les @code{\tag}s @var{violinI} et @var{violinII}, mais ni
@var{viola} ni @var{cello}.

@cindex regroupements de balises
@cindex balises, regroupement
@funindex \tagGroup

Bien que @code{\keepWithTag} soit efficace pour gérer @emph{un} jeu
d'alternatives, le rejet de musique filtrée par des balises
@emph{étrangères} se révèle problématique lorsque les @code{\tag} sont
utilisés à plusieurs fins.  Des « groupements de balises » peuvent
alors être déclarés :

@example
\tagGroup #'(violinI violinII viola cello)
@end example

@noindent
Les différents filtres appartiennent désormais tous à un seul
regroupement.  Notez bien qu'une balise ne saurait être membre de
plusieurs regroupements.

@example
\keepWithTag #'violinI @dots{}
@end example

@noindent
ne prendra désormais en compte que la musique concernée par la balise
@code{violinI} du groupe de filtres : tout élément de la musique qui
serait balisé par l'un des autres filtres de ce jeu sera rejeté.

@lilypond[verbatim,quote]
music = \relative {
  \tagGroup #'(violinI violinII viola cello)
  \tag #'violinI { c''4^"violinI" c c c }
  \tag #'violinII { a2 a }
  \tag #'viola { e8 e e2. }
  \tag #'cello { d'2 d4 d }
  R1^"non balisé"
}

\new Voice {
  \keepWithTag #'violinI
  \music
}
@end lilypond

Dans le cadre de la commande @code{\keepWithTag}, seules les balises du
regroupement mentionnées dans la commande seront visibles.

@funindex \pushToTag
@funindex \appendToTag
@cindex raccordement dans une balise

Il peut arriver que vous ayez besoin de raccorder quelque chose en un
point particulier d'une expression musicale.  Les commandes
@code{\pushToTag} et @code{\appendToTag} permettent d'insérer du
matériau, qu'il soit antérieur ou postérieur, à des @code{éléments}
d'une construction musicale existante.  La musique séquentielle ou
simultanée comporte assurément des @code{éléments} :

@lilypond[verbatim,quote]
music = { \tag #'here { \tag #'here <<c''>> } }

{
  \pushToTag #'here c'
  \pushToTag #'here e'
  \pushToTag #'here g' \music
  \appendToTag #'here c'
  \appendToTag #'here e'
  \appendToTag #'here g' \music
}
@end lilypond

Ces deux instructions sont affectées d'une balise, le matériau à
raccorder à chaque instance de la balise, et l'expression balisée.

@seealso
Manuel d'initiation :
@rlearning{Organisation du code source avec des variables}.

Manuel de notation :
@ref{Insertion de fichiers LilyPond},
@ref{Regroupement automatique de parties}.

@knownissues
L'application d'un @code{\relative} à une expression musicale
obtenue par filtrage à l'aide de @code{\keepWithTag} ou
@code{\removeWithTag} peut générer des changements d'octave,
puisque seules les hauteurs récupérées dans ce filtre seront
prises en considération.  Une instruction @code{\relative} qui
précède les commandes @code{\keepWithTag} ou
@code{\removeWithTag} permet d'éviter ce risque, dans la mesure où
elle viendra « recaler » ces hauteurs récupérées.


@node Globalisation des réglages
@unnumberedsubsubsec Globalisation des réglages
@translationof Using global settings

@cindex include-settings

Vous pouvez regrouper dans un fichier indépendant vos réglages
personnels que vous inclurez au besoin :

@example
lilypond -dinclude-settings=MES_REGLAGES.ly MA_PARTITION.ly
@end example

Vous pouvez ainsi stocker dans un fichier séparé vos réglages en matière
de format de papier, de fontes utilisées ou vos définitions
particulières.  Selon le fichier de réglages que vous mentionnerez, vous
obtiendrez facilement différentes éditions à partir d'une même source
quelle qu'elle soit.

Cette technique peut s'utiliser en combinaison avec des feuilles de
styles, comme indiqué au chapitre @rlearning{Feuilles de style}.

@seealso
Manuel d'initiation :
@rlearning{Feuilles de style},
@rlearning{Organisation du code source avec des variables}.

Manuel de notation :
@ref{Insertion de fichiers LilyPond}.


@node Caractères spéciaux
@subsection Caractères spéciaux
@translationof Special characters

@cindex caractères spéciaux
@cindex non-ASCII, caractères

@menu
* Codage du texte::
* Unicode::
* Équivalents ASCII::
@end menu


@node Codage du texte
@unnumberedsubsubsec Codage du texte
@translationof Text encoding

@cindex UTF-8

LilyPond utilise le jeu de caractères défini par le consortium Unicode
et la norme ISO/CEI 10646.  Chaque caractère est identifié par un
nom unique et associé à un point de code, ce qui permet dans l'absolu de
couvrir tous les langages.  Unicode permet de coder tous les caractères
utilisés par toutes les langues écrites du monde.  LilyPond utilise le
codage UTF-8 (UTF pour @emph{Unicode Transformation Format}) qui permet
de représenter les caractères latins sur un octet et les autres sur une
longueur allant jusqu'à quatre octets.

L'apparence réelle des caractères est déterminée par les glyphes ou
graphèmes tels que définis dans les différentes polices disponibles.
Une police, ou une fonte, définit la mise en correspondance d'un
sous-ensemble de points de code unicode en glyphes.  LilyPond recourt à
la bibliothèque Pango pour assurer le rendu des textes multilingues.

LilyPond n'effectue aucune conversion d'encodage que ce soit.  Ceci
implique donc que tout texte -- un titre, des paroles ou même une
instruction musicale -- comportant des caractères non ASCII soit
codé en UTF-8.  Le plus sûr moyen de saisir du texte de la sorte
consiste à utiliser un éditeur supportant l'unicode et à enregistrer vos
fichier en UTF-8.  C'est le cas pour la plupart des éditeurs actuels,
que ce soit vim, Emacs, jEdit et Gedit.  Tous les systèmes Windows
postérieurs à NT utilisent Unicode en natif ; même Notepad est
capable d'éditer et sauvegarder un fichier en UTF-8 -- sans parler de
l'excellente alternative qu'est BabelPad.

La compilation d'un fichier LilyPond comportant des caractères non ASCII
qui n'aurait pas été enregistré dans l'encodage UTF-8 vous renverra
l'erreur

@example
FT_Get_Glyph_Name () erreur : invalid argument
@end example

Voici un exemple utilisant du texte en cyrillique, en hébreux et en
portugais.

@c NOTE: No verbatim in the following example as the code does not
@c display correctly in PDF Font settings for Cyrillic and Hebrew

@lilypond[quote]
% Linux Libertine fonts contain Cyrillic and Hebrew glyphs.
\paper {
  #(define fonts
    (set-global-fonts
     #:roman "Linux Libertine O,serif"
     #:sans "Linux Biolinum O,sans-serif"
     #:typewriter "Linux Libertine Mono O,monospace"
   ))
}

% Cyrillic
bulgarian = \lyricmode {
  Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
}

% Hebrew
hebrew = \lyricmode {
  זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.
}

% Portuguese
portuguese = \lyricmode {
  à vo -- cê uma can -- ção legal
}

\relative {
  c'2 d e f g f e
}
\addlyrics { \bulgarian }
\addlyrics { \hebrew }
\addlyrics { \portuguese }
@end lilypond


@node Unicode
@unnumberedsubsubsec Unicode
@translationof Unicode

@cindex Unicode

Lorsque vous avez besoin d'un caractère dont vous connaissez le point de
code mais que votre éditeur ne permet pas de saisir directement, vous
pouvez utiliser les instructions @code{\char ##xhhhh} ou
@code{\char #dddd} au sein d'un bloc @code{\markup} -- @code{hhhh}
et @code{dddd} correspondant respectivement à la valeur hexadécimale ou
décimale.  Même s'il est inutile de saisir les zéros superflus, il est
de bon ton de stipuler les quatre caractères formant la représentation
hexadécimale.  Évitez cependant l'encodage UTF-8 d'un point de code
après un @code{\char} ; les encodages UTF-8 comprennent un bit
supplémentaire indiquant le nombre d'octets.  Une table de
correspondance entre les codes Unicode et le nom des caractères ainsi
que leur code hexadécimal est disponible sur le site du consortium
Unicode, @uref{http://www.unicode.org/}.

Par exemple, @code{\char ##x03BE} et @code{\char #958} correspondent
tous deux au caractère unicode U+03BE, dénommé @qq{Greek Small Letter
Xi}.

Quel que soit le point de code spécifié de cette manière, il ne vous
sera alors pas nécessaire d'enregistrer votre fichier en UTF-8.  Vous
devrez toutefois disposer d'une fonte contenant ce caractère qui soit
accessible à LilyPond.

L'exemple suivant illustre la manière d'insérer un caractère sous sa
forme hexadécimale, à la fois dans un repère, dans une articulation,
dans des paroles et dans du texte indépendant.

@lilypond[quote,verbatim]
\score {
  \relative {
    c''1 \mark \markup { \char ##x03EE }
    c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
  }
  \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
}
\markup { "Copyright 2008--2015" \char ##x00A9 }
@end lilypond

@cindex copyright

Le signe @emph{copyright} dans le champ de titrage consacré s'inscrit de
la manière suivante :

@example
\header @{
  copyright = \markup @{ \char ##x00A9 "2008" @}
@}
@end example


@node Équivalents ASCII
@unnumberedsubsubsec Équivalents ASCII
@translationof ASCII aliases

Dès lors que vous aurez inclus la liste de leur équivalent ASCII,
LilyPond reconnaîtra un certain nombre de caractères spéciaux :

@lilypond[quote,verbatim]
\paper {
  #(include-special-characters)
}

\markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"

\score {
  \new Staff { \repeat unfold 9 a'4 }
  \addlyrics {
    This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
  }
}

\markup \column {
  "The replacement can be disabled:"
  "&ndash; &OE; &hellip;"
  \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
}
@end lilypond

L'extension de cette liste est possible aussi bien de manière globale :

@lilypond[quote,verbatim]
\paper {
  #(add-text-replacements!
    '(("100" . "hundred")
      ("dpi" . "dots per inch")))
}
\markup "A 100 dpi."
@end lilypond

qu'en un point particulier de votre source :

@lilypond[quote,verbatim]
\markup \replace #'(("100" . "hundred")
                    ("dpi" . "dots per inch")) "A 100 dpi."
@end lilypond

@seealso
Manuel de notation :
@ref{Liste des caractères spéciaux}.

Fichiers d'initialisation :
@file{ly/text-replacements.ly}.


@node Contrôle des sorties
@section Contrôle des sorties
@translationof Controlling output

@menu
* Extraction de fragments musicaux::
* Ignorer des passages de la partition::
* Formats de sortie alternatifs::
* Changement des fontes musicales::
@end menu


@node Extraction de fragments musicaux
@subsection Extraction de fragments musicaux
@translationof Extracting fragments of music

@cindex fragments, extraction

@funindex clip-regions

LilyPond permet d'extraire des fragments d'une partition, une fois
definis explicitement le ou les emplacements de la musique concernés au
sein du bloc @code{\layout} du fichier source, grâce à la fonction
@code{clip-regions}, puis en lançant @command{lilypond} avec l'option
@w{@code{-dclip-systems}}.

@example
\layout @{
  clip-regions
  = #(list
      (cons
       (make-rhythmic-location 5 1 2)
       (make-rhythmic-location 7 3 4)))
@}
@end example

@noindent
L'exemple ci-dessus permet d'extraire un seul fragment @emph{débutant}
après une blanche dans la cinquième mesure (@code{5 1 2}) et
@emph{finissant} après trois noires dans la septième
mesure (@code{7 3 4}).

D'autres fragments seront extraits dès lors que d'autres paires de
@w{@code{make-rhythmic-location}} auront été ajoutées à la liste de
@w{@code{clip-regions}} présente dans le bloc @code{\layout}.

Chaque fragment sera généré individuellement sous la forme d'un fichier
@code{EPS}, converti en @code{PDF} ou @code{PNG} selon le format que
vous aurez stipulé.  La musique extraite est rendue comme si elle avait
été littéralement « découpée » dans la partition.  Par voie de
conséquence, un fragment dépassant une ligne fera l'objet d'autant de
fichiers séparés que de lignes de la partition complète.

@seealso
Manuel de notation :
@ref{Le bloc layout}.

Manuel d'utilisation :
@rprogram{Utilisation en ligne de commande}.


@node Ignorer des passages de la partition
@subsection Ignorer des passages de la partition
@translationof Skipping corrected music

@funindex skipTypesetting
@funindex showFirstLength
@funindex showLastLength

Dans un travail de transcription ou de recopie de la musique, ce qui
vous intéresse plus particulièrement se situe à la fin, là même où vous
en êtes dans la notation.  Dans le but de gagner du temps dans le
processus de correction, vous pouvez @qq{escamoter} le reste et ne
générer que les dernières mesures en insérant

@example
showLastLength = R1*5
\score @{ @dots{} @}
@end example

@noindent
dans votre fichier source.  Ceci aura pour effet de ne générer que les
cinq dernières mesures -- si tant est que le morceau soit à 4/4 -- de
tous les @code{\score} de votre fichier.  Dans le cas d'un œuvre
conséquente, cette pratique s'avère fort utile puisqu'elle évite de tout
générer.  Vous pourriez aussi être amené à retravailler le début d'une
œuvre, pour y ajouter une partie par exemple, auquel cas c'est la
propriété @code{showFirstLength} que vous utiliserez.

Vous pouvez contrôler très finement les parties à escamoter, grâce au
commutateur @code{Score.skipTypesetting} : lorsqu'il est activé,
aucune gravure n'est réalisée.

Ce commutateur agit aussi sur la sortie MIDI.  Notez bien que tous les
événements seront escamotés, y compris les changements de tempo ou
d'instrument -- vous voilà prévenu !

@lilypond[quote,ragged-right,verbatim]
\relative c' {
  c1
  \set Score.skipTypesetting = ##t
  \tempo 4 = 80
  c4 c c c
  \set Score.skipTypesetting = ##f
  d4 d d d
}
@end lilypond

Dans le cadre de musique polyphonique, @code{Score.skipTypesetting}
s'applique à toutes les voix et portées.  Vous gagnerez donc encore plus
de temps.


@node Formats de sortie alternatifs
@subsection Formats de sortie alternatifs
@translationof Alternative output formats

@cindex scalable vector graphics
@cindex SVG, format de sortie
@cindex encapsulated postscript
@cindex EPS, format de sortie

En matière de partition imprimable, LilyPond génère par défaut des
documents au format PostScript (PS) et Portable Document Format (PDF).
Vous pouvez aussi obtenir des documents au format Scalable Vector
Graphics (SVG), Encapsulated PostScript (EPS) ou Portable Network
Graphics (PNG) dès lors que vous aurez lancé LilyPond en ligne de
commande avec l'option @i{ad hoc} -- voir
@rprogram{Utilisation en ligne de commande} à ce sujet.


@node Changement des fontes musicales
@subsection Changement des fontes musicales
@translationof Replacing the notation font

Gonville est une alternative à la fonte Feta que LilyPond utilise par
défaut.  Vous pouvez la télécharger à partir de
@example
@uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/}
@end example

Voici quelques mesures utilisant la police Gonville :

@c NOTE: these images are a bit big, but that's important
@c       for the font comparison.  -gp
@sourceimage{Gonville_after,15cm,,}

Et ces même mesures avec la police de LilyPond, Feta :

@sourceimage{Gonville_before,15cm,,}


@subsubheading Instructions d'installation pour MacOS
@translationof Installation Instructions for MacOS

Téléchargez puis décompressez l'archive zip.  Recopiez le répertoire
@code{lilyfonts} dans  @file{@var{SHARE_DIR}/lilypond/current} -- voir
@rlearning{Autres sources de documentation} à ce sujet.  Renommez le
répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis le
répertoire @code{lilyfonts} en @code{fonts}.  Il vous suffira, pour
retrouver la fonte Feta, de renommer @code{fonts_orig} en @code{fonts}.

@seealso
Manuel d'initiation :
@rlearning{Autres sources de documentation}.

@knownissues
Gonville ne permet pas de générer de la notation ancienne, et certains
glyphes ajoutés depuis lors aux jeux de caractères en soient absent.
Consultez le site de l'auteur pour de plus amples informations ainsi
qu'à propos des conditions d'utilisation.


@node Génération de fichiers MIDI
@section Génération de fichiers MIDI
@translationof Creating MIDI output

@cindex son
@cindex MIDI

LilyPond peut produire des fichiers conformes au standard MIDI (Musical
Instrument Digital Interface), ce qui permet de vérifier le rendu à
l'oreille grace à un logiciel ou un périphérique sachant interpréter le
MIDI.  L'écoute du rendu en MIDI permet de contrôler aisément ce que
vous avez saisi : octaves et altérations erronées heurteront votre
oreille avertie !

Les fichiers MIDI, contrairement aux fichiers AAC, MP3 ou Vorbis, ne
contiennent pas de son et nécessitent donc le recours à un logiciel
supplémentaire pour les écouter.

@menu
* Notation prise en compte dans le MIDI::
* Notation non prise en compte dans le MIDI::
* Le bloc MIDI::
* Gestion des nuances en MIDI::
* Gestion des instruments MIDI::
* Gestion des répétitions en MIDI::
* Affectation des canaux MIDI::
* Propriétés de contextes et effets MIDI::
* Amélioration du rendu MIDI::
@end menu

@node Notation prise en compte dans le MIDI
@subsection Notation prise en compte dans le MIDI
@translationof Supported notation for MIDI

@cindex MIDI, éléments pris en compte

LilyPond retranscrit par défaut dans un fichier MIDI les éléments de
notation suivant :

@itemize
@item les marques de respiration,
@item les accords nommés,
@item les crescendos et decrescendos s'étendant sur plusieurs notes --
le volume s'ajuste linéairement entre les deux extrêmes,
@item les indications de nuance, de @code{ppppp} à @code{fffff}, y compris
@code{mp}, @code{mf} et @code{sf},
@item les microtonalités mais @emph{pas} sous forme d'accord ; leur
rendu nécessite cependant un lecteur qui prenne en charge la
modulation,
@item les paroles,
@item les hauteurs,
@item le rythme sous forme de durée de note, y compris les n-olets,
@item les articulations « simples » comme staccato, staccatissimo,
accent, marcato et portato,
@item les changements de tempo indiqués par un @code{\tempo},
@item les liaisons de tenue,
@item les tremolos, excepté ceux utilisant la syntaxe
« @code{:}[@var{nombre}] ».
@end itemize

Spatialisation, balance, expression, réverbération et chorus peuvent se
contrôler à l'aide de propriétés de contexte -- voir
@ref{Propriétés de contextes et effets MIDI}.

En combinaison avec le script @file{articulate}, d'autres éléments
seront aussi reportés en MIDI :

@itemize
@item les appoggiatures -- celles-ci prendront la moitié de la valeur,
dépourvue de point, de la note qui les suit --  par exemple,

@example
\appoggiatura c8 d2.
@end example

@noindent
le do (noté @code{c}) prendra la valeur d'une noire.

@item les ornements (mordants, trilles et groupettos, etc.),
@item rallentando, accelerando, ritardando et a tempo,
@item les liaisons y compris de phrasé,
@item les tenutos.
@end itemize

@noindent
Voir @ref{Amélioration du rendu MIDI}.


@node Notation non prise en compte dans le MIDI
@subsection Notation non prise en compte dans le MIDI
@translationof Unsupported notation for MIDI

@cindex MIDI, éléments non pris en comte

Certains éléments de notation ne peuvent être retranscrits dans un
fichier MIDI :

@itemize
@item les articulations autres que staccato, staccatissimo, accent, marcato
et portato,
@item les crescendos et decrescendos sur @emph{une seule} note,
@item les points d'orgue,
@item la basse chiffrée,
@item les glissandos,
@item les chutes ou sauts,
@item les accords en microtonalité,
@item le rythme indiqué sous forme d'annotation, comme « swing »,
@item les changements de tempo indiqués sous forme d'annotation (sans
@code{\tempo}),
@item les trémolos indiqués par la syntaxe « @code{:}[@var{nombre}] ».
@end itemize


@node Le bloc MIDI
@subsection Le bloc MIDI
@translationof The MIDI block

@cindex MIDI, le bloc

LilyPond générera un fichier MIDI dès que vous ajouterez un bloc
@code{\midi}, même vide, au sein du bloc @code{\score} :

@example
\score @{
  @var{@dots{}musique@dots{}}
  \layout @{ @}
  \midi @{ @}
@}
@end example

@warning{Lorsque le bloc @code{@bs{}score} contient uniquement un bloc
@code{@bs{}midi} (autrement dit pas de bloc @code{@bs{}layout}),
LilyPond produira uniquement la sortie MIDI -- aucun support visuel ne
sera généré.}

L'extension par défaut des fichiers MIDI générés (@code{.midi}) peut se
modifier en ligne de commande :

@example
lilypond -dmidi-extension=mid MonFichier.ly
@end example

Une autre manière de procéder consiste à placer la ligne suivante au
début de votre fichier source, avant l'ouverture de tout bloc
@code{\book}, @code{\bookpart} ou @code{\score} -- voir
@ref{Structure de fichier} :

@example
#(ly:set-option 'midi-extension "mid")
@end example

@seealso
Manuel de notation :
@ref{Structure de fichier}.

Fichiers d'initialisation :
@file{scm/midi.scm}.

@knownissues
Le standard MIDI dispose de 15 canaux plus un (le numéro 10) affecté aux
percussions.  Les portées sont assignées l'une après l'autre à un canal.
Dans la mesure où une partition comporte plus de 15 portées, les portées
au-delà de la quinzième partageront un même canal MIDI, sans toutefois
l'écraser.  Ceci peut entraîner des conflits au niveau des canaux en
raison des propriétés MIDI, notamment l'instrument utilisé.

@node Gestion des nuances en MIDI
@subsection Gestion des nuances en MIDI
@translationof Controlling MIDI dynamics

@cindex MIDI, gestion des nuances

Le volume général de la sortie MIDI peut se définir, ainsi que ses
modulations, en fonction des indications de nuance et les volumes
relatifs entre les différents instruments.

Les indications de nuance se traduisent automatiquement en niveau de
volume dans l'amplitude disponible en MIDI alors que crescendos et
diminuendos auront une progression linéaire entre les extrêmes.

@menu
* Indication des nuances en MIDI::
* Réglage du volume en MIDI::
* Réglage de propriétés dans le bloc MIDI::
@end menu


@node Indication des nuances en MIDI
@unnumberedsubsubsec Indication des nuances en MIDI
@translationof Dynamic marks in MIDI

@cindex MIDI, indications de nuance

Les indications de nuance, de @code{ppppp} à @code{fffff} -- y compris
@code{mp}, @code{mf} et @code{sf} -- ont des valeurs prédéfinies.  Ce
coefficient est alors appliqué pour corriger le volume général de façon
à obtenir le niveau sonore qui sera retranscrit dans le fichier de
sortie pour la nuance considérée.  Nous allons, par défaut, de 0,25 pour
un @notation{ppppp} à 0,95 pour un @notation{fffff}.  Les
correspondances entre nuance et fraction de volume sont répertoriées
dans le fichier @file{scm/midi.scm}.

@snippets
@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{creating-custom-dynamics-in-midi-output.ly}

@seealso
Fichiers d'initialisation :
@file{ly/script-init.ly},
@file{scm/midi.scm}.

Morceaux choisis :
@rlsr{MIDI}.

Référence des propriétés internes :
@rinternals{Dynamic_performer}.

@node Réglage du volume en MIDI
@unnumberedsubsubsec Réglage du volume en MIDI
@translationof Setting MIDI volume

@cindex MIDI, réglage du volume

Les valeurs extrêmes du volume MIDI des nuances se contrôlent à l'aide
des propriétés @code{midiMinimumVolume} et @code{midiMaximumVolume} qui
agissent au niveau @code{Score}.  Ces propriétés sont effectives dès
lors qu'une nuance est indiquée ; une nuance de départ explicite est donc
requise pour que le volume soit ajusté dès le début de la partition.
Vous pouvez alors modifier la fraction correspondant à chaque nuance à
l'aide de la formule

@example
midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction
@end example

Voici comment ajuster les nuances tout en limitant l'amplitude du volume
entre 0,2 et 0,5 :

@example
\score @{
  <<
    \new Staff @{
      \set Staff.midiInstrument = #"flute"
      @var{@dots{} music @dots{}}
    @}
    \new Staff @{
      \set Staff.midiInstrument = #"clarinet"
      @var{@dots{} music @dots{}}
    @}
  >>
  \midi @{
    \context @{
      \Score
      midiMinimumVolume = #0.2
      midiMaximumVolume = #0.5
    @}
  @}
@}
@end example

La définition de l'amplitude du volume MIDI au niveau d'un contexte
@code{Staff} -- grace aux propriétés @code{midiMinimumVolume} et
@code{midiMaximumVolume} -- permet en quelque sorte d'égaliser un
instrument MIDI.

@example
\score @{
  \new Staff @{
    \set Staff.midiInstrument = #"flute"
    \set Staff.midiMinimumVolume = #0.7
    \set Staff.midiMaximumVolume = #0.9
    @var{@dots{} musique @dots{}}
  @}
  \midi @{ @}
@}
@end example

Dans le cas d'une partition à plusieurs portées et différents
instruments, les volumes relatifs entre les différents instruments se
gèrent individuellement :

@example
\score @{
  <<
    \new Staff @{
      \set Staff.midiInstrument = #"flute"
      \set Staff.midiMinimumVolume = #0.7
      \set Staff.midiMaximumVolume = #0.9
      @var{@dots{} music @dots{}}
    @}
    \new Staff @{
      \set Staff.midiInstrument = #"clarinet"
      \set Staff.midiMinimumVolume = #0.3
      \set Staff.midiMaximumVolume = #0.6
      @var{@dots{} music @dots{}}
    @}
  >>
  \midi @{ @}
@}
@end example

La clarinette de cet exemple jouera relativement moins fort que la
flûte.

En l'absence de tout réglage des propriétés de volume, LilyPond
appliquera cependant un léger degré d'égalisation pour certains
instruments -- voir @file{scm/midi.scm}.

@snippets
@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{replacing-default-midi-instrument-equalization.ly}

@seealso
Fichiers d'initialisation :
@file{scm/midi.scm}.

Manuel de notation :
@ref{Mise en forme de la partition}.

Référence des propriétés internes :
@rinternals{Dynamic_performer}.

@knownissues
Les modifications apportées au volume MIDI n'interviennent que sur
l'attaque d'une note, en conséquence de quoi crescendos et decrescendos
n'affecteront pas le volume s'ils se produisent sur une même et unique
note.


@node Réglage de propriétés dans le bloc MIDI
@unnumberedsubsubsec Réglage de propriétés dans le bloc MIDI
@translationof Setting MIDI block properties

Le bloc @code{\midi}  peut contenir des aménagements pour certains
contextes, la définition de contextes particuliers ou du code permettant
de déterminer la valeur de certaines propriétés.

@example
\score @{
  @var{@dots{} music @dots{}}
  \midi @{
    \tempo 4 = 72
  @}
@}
@end example

Le tempo est ici réglé à 72 noires par minute. Une indication de tempo
inscrite dans le bloc @code{\midi} ne sera pas reportée sur la partition
imprimable.  Cependant, tout @code{\tempo} mentionné dans le bloc
@code{\score} sera répercuté dans la sortie MIDI.

Placée au sein d'un bloc @code{\midi}, la commande @code{\tempo}
détermine des propriétés lors de la phase d'interprétation de la musique
et dans le contexte de définition des sorties.  Elle est alors
considérée comme une modification de contexte.

@cindex MIDI, définition de contexte
@cindex contexte, définition en MIDI

La syntaxe permettant de définir un contexte pour le @code{\midi} est en
tout point identique à celle que vous utilisez dans le bloc
@code{\layout} :

@example
\score @{
  @var{@dots{} musique @dots{}}
  \midi @{
    \context @{
      \Voice
      \remove "Dynamic_performer"
    @}
  @}
@}
@end example

Ces quelques lignes ont pour effet de supprimer l'application des
nuances à la sortie MIDI.  Vous aurez noté que les modules de traduction
de LilyPond en matière de son s'appelent @emph{performers} -- des
« interprètes ».

@seealso
Manuel d'initiation :
@rlearning{Autres sources de documentation}.

Manuel de notation :
@ref{Mise en forme de la partition},
@ref{Signes d'interprétation}.

Fichiers d'initialisation :
@file{ly/performer-init.ly}.

Morceaux choisis :
@rlsr{MIDI}.

Référence des propriétés internes :
@rinternals{Dynamic_performer}.

@knownissues
Certains lecteurs MIDI ne rendent pas correctement les changements de
tempo.

Les modifications de @code{midiInstrument} ou autres options MIDI en
début de portée peuvent se retrouver dédoublées dans la sortie MIDI.

@node Gestion des instruments MIDI
@subsection Gestion des instruments MIDI
@translationof Using MIDI Instruments

@cindex instrument, nom d'
@cindex MIDI, instruments
@funindex Staff.midiInstrument

L'instrument MIDI est déterminé par la propriété @code{midiInstrument},
au sein d'un contexte @code{Staff}.

@example
\score @{
  \new Staff @{
    \set Staff.midiInstrument = #"glockenspiel"
    @var{@dots{} music @dots{}}
  @}
  \midi @{ @}
@}
@end example

ou

@example
\score @{
  \new Staff \with @{midiInstrument = #"cello"@} @{
    @var{@dots{} music @dots{}}
  @}
  \midi @{ @}
@}
@end example

Lorsque l'instrument choisi ne correspond pas exactement à l'une des
dénominations consacrées, LilyPond le remplacera par un piano de concert
(@code{"acoustic grand"}) -- voir @ref{Instruments MIDI}.

@seealso
Manuel d'initiation :
@rlearning{Autres sources de documentation}.

Manuel de notation :
@ref{Instruments MIDI},
@ref{Mise en forme de la partition}.

Référence des propriétés internes :
@rinternals{Dynamic_performer}.

Fichiers d'initialisation :
@file{scm/midi.scm}.

@knownissues
Les percussions gérées par un contexte @code{DrumStaff} sont affectées
directement au canal 10 qui leur est réservé. Certains instruments, tels
le xylophone, le marimba, le vibraphone ou les timbales, se traitent
cependant comme des instruments « classiques » puisqu'ils sont capables
d'émettre des hauteurs différentes ; leur notation relève donc d'un
contexte @code{Staff} standard, et non d'un @code{DrumStaff} pour
pouvoir être rendus correctement en MIDI.  Une liste complète des
percussions affectées au canal 10 (@code{channel 10 drum-kits}) est
disponible dans le fichier @file{scm/midi.scm} -- voir
@rlearning{Autres sources de documentation}.


@node Gestion des répétitions en MIDI
@subsection Gestion des répétitions en MIDI
@translationof Using repeats with MIDI

@cindex reprises développées
@cindex MIDI et reprises
@funindex \unfoldRepeats

Les reprises de toutes sortes peuvent être rendues dans le fichier MIDI.
Il suffit pour cela de recourir à la fonction @code{\unfoldRepeats}, qui
développe toutes les reprises.

@example
\score @{
  \unfoldRepeats @{
    \repeat tremolo 8 @{ c'32 e' @}
    \repeat percent 2 @{ c''8 d'' @}
    \repeat volta 2 @{ c'4 d' e' f' @}
    \alternative @{
      @{ g' a' a' g' @}
      @{ f' e' d' c' @}
    @}
  @}
  \midi @{ @}
@}
@end example

Lorsque l'on veut utiliser @code{\unfoldRepeats} seulement pour le rendu
MIDI, il faut établir @b{deux} blocs @code{\score} : un pour le MIDI,
avec des reprises explicites, et l'autre pour la partition, avec des
reprises notées sous forme de barres de reprise, de trémolo ou de
symboles de pourcentage. Par exemple

@example
\score @{
  @var{@dots{} musique @dots{}}
  \layout @{ @}
@}
\score @{
  \unfoldRepeats @var{@dots{} musique @dots{}}
  \midi @{ @}
@}
@end example

Dans une partition comportant plusieurs voix, le développement des
reprises ne sera effectif en MIDI qu'à la condition que ces reprises
soient mentionnée correctement dans @strong{toutes} les voix.

@seealso
Manuel de notation :
@ref{Répétitions et reprises}.



@node Affectation des canaux MIDI
@subsection Affectation des canaux MIDI
@translationof MIDI channel mapping

@cindex MIDI, canaux
@cindex MIDI, pistes
@funindex midiChannelMapping

Lorsque LilyPond génère un fichier MIDI à partir d'une partition, chaque
note contenue dans cette partition sera automatiquement assignée à un
canal MIDI, celui sur lequel elle devrait être jouée quand elle est
transmise à un périphérique MIDI.  Chaque canal MIDI dispose d'un
certain nombre de contrôles pour, par exemple, sélectionner l'instrument
+qui jouera les notes de ce canal ou bien demander au périphérique MIDI
d'appliquer différents effets au son produit sur ce canal.  En tout état
de cause, chaque contrôle d'un canal MIDI ne peut se voir affecté que
d'une seule valeur à la fois -- celle-ci peut toutefois être modifiée
pour, par exemple, changer d'instrument au milieu du morceau.

Le standard MIDI ne dispose que de 16 canaux par périphérique MIDI.
Cette limite du nombre de canaux entraîne une limitation du nombre
d'instruments pouvant jouer de concert.

LilyPond crée une piste MIDI séparée pour chaque portée (ou chaque
instrument ou voix selon la valeur de @code{Score.midiChannelMapping})
ainsi que pour chaque contexte de paroles.  Il n'y a pas de limite au
nombre de pistes.

Afin de contourner la limitation du nombre de canaux MIDI, LilyPond
dispose de différents modes d'allocation d'un canal MIDI grâce à la
propriété de contexte @code{Score.midiChannelMapping}.  Dans tous les
cas, lorsque la limite au nombre de canaux est atteinte, LilyPond repart
du canal 0, ce qui peut affecter des notes au mauvais instrument.  Cette
propriété de contexte peut prendre les valeurs suivantes :

@table @var

@item @code{'staff}

Allocation d'un canal MIDI particulier à chacune des portées de la
partition (option par défaut).  Toutes les notes de toutes les voix
d'une même portée partageront le canal MIDI affecté à la portée qui les
englobe, et toutes seront encodées dans la même piste.

La limite des 16 canaux s'applique au nombre total de portées augmenté
des contextes de paroles même si les paroles MIDI n'occupent pas de
canal MIDI.

@item @code{'instrument}

Allocation d'un canal MIDI particulier à chaque instrument MIDI tel que
spécifié dans la partition.  En d'autre termes, des notes jouées par un
même instrument MIDI partageront le même canal MIDI (et la même piste),
même si elles proviennent de voix ou portées différentes.

Dans ce cas particulier, les contextes de paroles ne sont pas pris en
compte dans la limite des 16 canaux, puisqu'ils ne sont pas assignés à
un instrument MIDI, ce qui permet une meilleure allocation des canaux
MIDI lorsque le nombre de portées et de contextes de paroles dépasse 16.

@item @code{'voice}

Allocation d'un canal MIDI particulier à chaque voix de la partition
portant un nom unique parmi les voix de la portée considérée.  Des voix
appartenant à des portées différentes seront toujours affectées à des
canaux MIDI différents, mais deux voix partageant la même portée
partageront le même canal MIDI dès lors qu'elles porteront le même nom.
Dans la mesure où @code{midiInstrument} et les différents contrôles
d'effets MIDI sont des propriétés affectant le contexte de portée, ils
ne peuvent se déterminer individuellement pour une voix.  La première
voix adoptera l'instrument et les effets spécifiés pour cette portée, et
les voix dénommées différemment de la première se verront attribué
l'instrument et le effets par défaut.

Note : l'affectation d'instruments ou d'effets différents aux
differentes voix d'une même portée s'obtient dès lors que le
@code{Staff_performer} est déplacé du contexte @code{Staff} au contexte
@code{Voice} tout en maintenant le @code{midiChannelMapping} dans le
contexte @code{'staff} ou en le réglant sur @code{'instrument}.

@end table

Par exemple, l'affectation par défaut des canaux MIDI d'une partition
peut être réglée sur @code{'instrument} comme ceci :

@example
\score @{
  ...musique...
  \midi @{
    \context @{
      \Score
      midiChannelMapping = #'instrument
    @}
  @}
@}
@end example

@snippets
@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{changing-midi-output-to-one-channel-per-voice.ly}


@node Propriétés de contextes et effets MIDI
@subsection Propriétés de contextes et effets MIDI
@translationof Context properties for MIDI effects

@cindex effets MIDI
@cindex pan, MIDI
@cindex spatialisation (pan), MIDI
@cindex stéréo MIDI, balance
@cindex balance MIDI
@cindex expression MIDI
@cindex reverb MIDI
@cindex chorus MIDI
@funindex midiPanPosition
@funindex midiBalance
@funindex midiExpression
@funindex midiReverbLevel
@funindex midiChorusLevel

Les différentes propriétés de contexte qui suivent permettnt d'appliquer
différents effets MIDI aux notes contenues dans le canal MIDI associé à
la portée courante, à l'instrument ou à la voix, selon la valeur
affectée à la propriété de contexte @code{Score.midiChannelMapping} et
le contexte dans lequel le @code{Staff_performer} réside -- voir
@ref{Affectation des canaux MIDI}.

Une adaptation de ces propriétés de contexte affectera toutes les notes
jouées sur ce canal dès leur modification.  Certains effets pourront
même s'appliquer sur des notes déjà en cours, selon l'implémentation du
périphérique de sortie MIDI.

LilyPond dispose des propriétés de contexte suivantes :

@table @var

@item @code{Staff.midiPanPosition}

La spatialisation (@emph{pan position}) contrôle le positionnement d'un
canal MIDI entre les sorties stéréo droite et gauche.  Cette propriété
de contexte prend en argument une valeur entre -1.0 (@code{#LEFT})
et 1.0 (@code{#RIGHT}). Une valeur de -1.0 enverra toute la puissance
sonore sur le haut-parleur gauche (le droit sera silencieux), une
vaaleur de 0.0 (@code{#CENTER}) distribuera équitablement le son entre
les jaut-parleurs de gauche et de droite, et une valeur de 1.0 enverra
tout le son sur le haut-parleur de droite.  Des valeurs entre -1.0 et
1.0 permettent d'obtenir une répartition du son entre les sorties
gauche et droite d'un équipement stéréophonique.


@item @code{Staff.midiBalance}

La balance stéréo d'un canal MIDI.  Tout comme la spatialisation, cette
propriété de contexte prend en argument une valeur comprise entre -1.0
(@code{#LEFT}) et 1.0 (@code{#RIGHT}).  Elle permet de faire varier le
volume relatif envoyé aux deux haut-parleurs stéréo sans pour autant
affecter la distribution des signaux stéréo.

@item @code{Staff.midiExpression}

Le niveau d'expression, en tant que fraction du niveau maximum de volume
disponible, à appliquer à un canal MIDI.  Un périphérique MIDI combine
le niveau d'expression des canaux MIDI et le niveau de nuance de la voix
en cours (tel que défini par @code{\p} ou @code{\ff}) afin d'obtenir le
volume total de chacune des notes de la voix.  Un contrôle de
l'expression permet, par exemple, d'implémenter des effets de crescendo
ou decrescendo sur une note tenue, ce que LilyPond ne sait pas faire
automatiquement.

@c Issue 4059 contains an attached snippet which shows how this might
@c be done, but this is too large and complex for the NR, even as a
@c referenced snippet.  It could be added to the LSR.

Le niveau d'expression varie entre 0.0 (sans expression, autrement dit
volume à zéro) et 1.0 (volume au maximum).

@item @code{Staff.midiReverbLevel}

Le niveau de réverbération, en tant que fraction du niveau maximum
disponible, à appliquer à un canal MIDI.  Cette propriété prend en
argument une valeur entre 0.0 (pas d'écho) et 1.0 (effet maximal).

@item @code{Staff.midiChorusLevel}

Le niveau de chœur, en tant que fraction du niveau maximum disponible, à
appliquer à un canal MIDI.  Cette propriété prend en argument une valeur
entre 0.0 (pas de chorus) et 1.0 (effet maximal).

@end table

@knownissues

Dans la mesure où les fichiers MIDI ne comportent effectivement aucune
donnée audio, les modifications des propriétés de contexte ne se
traduisent qu'en requêtes de changement des contrôles du canal MIDI
lorsque ces fichiers MIDI sont joués.  La manière dont un périphérique
MIDI particulier, tel un synthétiseur MIDI logiciel, gérera ces
requêtes incluses dans un fichier MIDI dépend complètement de
l'implémentation du périphérique : certains d'entre eux pourront
simplement ignorer plusieurs, voire toutes ces requêtes.  Par ailleurs,
la manière dont un périphérique MIDI interprète les différentes valeurs
de ces contrôles (en règle générale, le standard MIDI ne fixe le
comportement qu'aux valeurs extrêmes de l'amplitude disponible pour
chacun des contrôles) et leur modification alors qu'une note sur un
canal est tenue, dépend de l'implémentation particulière à ce
périphérique.

Lors de la génération d'un fichier MIDI, LilyPond transforme simplement
les valeurs fractionnaires dans l'amplitude linéaire en valeurs entières
correspondantes (de 0 à 127 et sur 7 octets, ou de 0 à 32767 et sur 14
octets pour les contrôles MIDI supportant une résolution fine). Ces
valeurs entières converties sont  stockées telles quelles dans le
fichier MIDI généré.  Pour plus d'information sur la manière dont un
périphérique MIDI interprète ces valeurs, se reporter à sa
documentation.


@node Amélioration du rendu MIDI
@subsection Amélioration du rendu MIDI
@translationof Enhancing MIDI output

Le fichier MIDI généré par LilyPond est relativement brut.  Il peut
toutefois être amélioré en affectant des instruments MIDI, en réglant
des propriétés au sein du bloc @code{\midi} ou en utilisant le script
@file{articulate}.

@menu
* Le script articulate::
@end menu


@node Le script articulate
@unnumberedsubsubsec Le script @file{articulate}
@translationof The articulate script

@cindex MIDI, instruments
@cindex articulate, script
@funindex Staff.midiInstrument

L'utilisation du script @file{articulate} se fait après avoir ajouté en
tête de fichier la commande @code{\include} appropriée :

@example
\include "articulate.ly"
@end example

Le script créera une sortie MIDI dont les notes seront échelonées de
sorte à tenir compte de toute articulation ou changement de tempo.  La
sortie imprimable sera toutefois modifiée en profondeur, pour refléter
littéralement la sortie MIDI.

@example
\score @{
  \articulate <<
    @var{@dots{} musique @dots{}}
  >>
  \midi @{ @}
@}
@end example

Le script @file{articulate} tient compte des abréviations telles que les
trilles ou groupettos.  L'intégralité des éléments traités est
répertoriée dans le script lui-même -- voir @file{ly/articulate.ly}.

@seealso
Manuel d'initiation :
@rlearning{Autres sources de documentation}.

Manuel de notation :
@ref{Mise en forme de la partition}.

Fichiers d'initialisation :
@file{ly/articulate.ly}.

@warning{Dans la mesure où le script @file{articulate} tend à raccourcir
les accords, certaines musiques, notamment pour l'orgue, paraîtront de
moins bonne qualité.  Les notes dépourvues d'articulation peuvent aussi
se voir raccourcies ; pour pallier cet inconvénient, le recours à la
fonction @code{@bs{}articulate} devrait ne concerner que de courts
fragments, sauf à modifier les valeurs des variables contenues dans le
script @file{articulate}.}


@node Extraction d'informations musicales
@section Extraction d'informations musicales
@translationof Extracting musical information

En plus de générer du graphisme et du MIDI, LilyPond peut présenter
l'information musicale sous forme textuelle.

@menu
* Affichage de notation au format LilyPond::
* Affichage de la musique sous forme d'expression Scheme::
* Enregistrement d'événements musicaux dans un fichier::
@end menu


@node Affichage de notation au format LilyPond
@subsection Affichage de notation au format LilyPond
@translationof Displaying LilyPond notation

@funindex \displayLilyMusic

La fonction musicale @code{\displayLilyMusic} permet d'afficher en
notation LilyPond une expression musicale.  Le résultat défilera dans le
terminal après avoir lancé LilyPond en ligne de commande.  Par exemple,

@example
@{
  \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
@}
@end example

affichera

@example
@{ a,4 cis4 e4 fis4 g4 @}
@end example

LilyPond affichera le résultat sous forme de message en console, au
milieu de toutes les informations de compilation.  Afin d'isoler ces
messages et enregistrer le résultat de la fonction
@code{\displayLilyMusic}, pensez à rediriger la sortie vers un fichier.

@example
lilypond fichier.ly > affichage.txt
@end example

@funindex \void

Vous noterez que LilyPond ne se contente pas de simplement afficher
l'expression musicale, mais procède aussi à son interprétation -- du
fait que @code{\displayLilyMusic} renvoie l'expression tout en
l'affichant.  La simple insertion d'un @code{\displayLilyMusic} dans une
expression musicale permet d'obtenir l'information la concernant.

Si l'instruction @code{\displayLilyMusic} interprète et affiche des
informations sur un fragment, la faire précéder d'un @code{\void} aura
pour effet de l'exclure du fichier résultant.

@example
@{
  \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
  c1
@}
@end example


@node Affichage de la musique sous forme d'expression Scheme
@subsection Affichage de la musique sous forme d'expression Scheme
@translationof Displaying scheme music expressions

Voir @rextend{Affichage d'expressions musicales}.


@node Enregistrement d'événements musicaux dans un fichier
@subsection Enregistrement d'événements musicaux dans un fichier
@translationof Saving music events to a file

LilyPond vous permet de sauvegarder dans un fichier séparé, sur la base
de la portée, les événements musicaux.  Vous devrez pour ce faire
inclure dans votre fichier maître un fichier d'initialisation
spécifique :

@example
\include "event-listener.ly"
@end example

Pour chaque portée que comporte votre partition, vous obtiendrez un
fichier @file{NOMFICHIER-PORTÉENOMMÉE.notes} ou
@file{NOMFICHIER-unnamed-staff.notes}.  Notez bien que si plusieurs
portées ne sont pas explicitement nommées, tous leurs événements seront
regroupés et mélangés dans le même fichier.  Le résultat ressemblera à
ceci :

@example
0.000   note     57       4   p-c 2 12
0.000   dynamic  f
0.250   note     62       4   p-c 7 12
0.500   note     66       8   p-c 9 12
0.625   note     69       8   p-c 14 12
0.750   rest     4
0.750   breathe
@end example

Il s'agit d'un tableau dont les colonnes sont délimitées par une
tabulation.  Chaque ligne comporte deux champs fixes suivis d'un certain
nombre de paramètres optionnels.

@example
@var{temps} @var{type} @var{@dots{}paramètres@dots{}}
@end example

Ces informations peuvent faire l'objet d'un retraitement par d'autres
programmes, comme des scripts python, aux fins de recherche en analyse
musicologique ou des expériences à partir du rendu de LilyPond.

@knownissues
Tous les événements ne sont pas pris en charge par
@file{event-listener.ly}.  Il s'agit en premier lieu d'une
démonstration, un @qq{proof of concept} du potentiel de LilyPond.  Si
certains des éléments que vous cherchez à obtenir n'apparaissent pas,
recopiez le fichier @file{event-listener.ly} dans votre répertoire et
modifiez-le de telle sorte qu'il travaille selon vos attentes.