Outils pour utilisateurs

Outils du site


issue111:c_c

As a guitarist who is also a geek at heart, I’m always looking for a way to organise my various tab books alongside my PDF tabs. In preparation for my summer, I’ve therefore started collecting some of the tabs I like in an electronic format. At first, it was via scanning, but the quality of that was often less than overwhelming. Instead, I’ve begun writing the musical notation and tabs using LilyPond.

Comme un guitariste qui est aussi un geek de cœur, j'ai toujours cherché une façon d'organiser mes différents livres de tablatures à côté de mes PDF d'accords. Pour préparer mon été, j'ai donc commencé à collectionner quelques tablatures que j'aime dans un format électronique. D'abord, c'était par scanner, mais la qualité obtenue était souvent plus que navrante. À la place, j'ai commencé à écrire la partition et les accords en utilisant LilyPond.

What is LilyPond? For anyone who knows what LaTeX is, LilyPond is (in very basic terms) a typesetting language for music. In the music world, it’s not called typesetting, but engraving. LilyPond is a language where you describe the music, and it then takes the information (keys, notes, etc), and generates staffs and/or tabs. Quality-wise, I’ve found the PDFs it produces to be better quality (from font-size, to spacing in general) than things like TuxGuitar or Tab Pro. Best of all, it is cross-platform, and editable from anywhere (as the source files are just text).

Qu'est-ce que LilyPond ?

Pour tous ceux qui savent ce qu'est LaTeX, LilyPond est (en termes très simples) un langage de composition pour la musique. Dans le monde de la musique, on ne parle pas de composition, mais de gravure. LilyPond est un langage où vous décrivez la musique, puis il prend l'information (notes, clefs, etc.) et génère les portées et/ou les accords. Côté qualité, je trouve que les PDF qu'il produit sont de meilleure qualité (de la taille de la police à l'espacement en général) que des outils comme TuxGuitar et Tab Pro. Le meilleur, c'est qu'il est multi-plateforme et modifiable n'importe où (car les fichiers sources ne sont que du texte).

How does it Work? LilyPond uses *.ly files as source code. Once the code has been written, it is then compiled into a PDF using the lilypond CLI tool. The way the source code works is by defining a Staff - this is the normal musical notation, or TabStaff (tablature), or a variety of other options, none of which I have tried thus far. Each Staff can have multiple voices (for splitting up upper and lower registers, for example).

Comment ça marche ?

LilyPond utilise des fichiers .ly comme code source. Une fois le code écrit, il est compilé en PDF en utilisant l'outil CLI (Command Line Interface - Interface en ligne de commande) de LilyPond. La façon dont le code source fonctionne est en définissant une portée (Staff), c'est la notation musicale habituelle, ou tablature (appelée TabStaff), ou toute une variété d'autres options, dont je n'ai essayé aucune jusqu'à présent. Chaque portée peut disposer de plusieurs voix (pour séparer les registres haut et bas, par exemple).

How can I get started? The website is http://lilypond.org, although the odds are the CLI tools are already in your local repository. The Manuals section of the site (http://lilypond.org/manuals.html) offers a good place to start. Once you’ve gotten comfortable with the syntax (or have run into a use case that doesn’t seem officially supported), then the user repository of snippets is an excellent spot to look: http://lsr.di.unimi.it/LSR/Search. For anyone who wants some actual examples, jump to the section called “The Basics”, as I will walk you through some examples.

Comment commencer ?

Le site Web est http://lilypond.org, bien qu'avec un peu de chance les outils CLI soient déjà dans votre dépôt local. La section Manuels du site (http://lilypond.org/manuals.fr.html) est un bon endroit pour commencer. Une fois que vous êtes à l'aise avec la syntaxe (ou que vous rencontrez un cas d'emploi qui ne paraît pas officiellement supporté), alors le dépôt utilisateur de fragments est un excellent endroit à visiter : http://lsr.di.unimi.it/LSR/Search. Pour qui veut quelques exemples réels, passez à la section appelée Les bases, car je vous détaillerai quelques exemples.

It seems complicated - why can’t I just drag and drop? If you want to edit visually, you’ll need to look for other software to work with. Instead, I recommend LilyPond for anyone who prefers having total control (and finds a keyboard to be faster and more efficient than a mouse). I also highly recommend this approach to anyone who wants to learn to read musical notation better (as you’ll learn the note names, and therefore the location on the staff), or for anyone who wants to learn the locations of the notes on their instrument (specifically, guitar). This is because in thinking about the music in terms of notes (instead of string or fret numbers), you’ll learn which note is where - especially as you move on to more complex songs.

Ça paraît compliqué - pourquoi ne pas faire un glisser-déposer ?

Si vous voulez juste éditer visuellement, vous devrez chercher et utiliser un autre logiciel. À l'inverse, je recommande LilyPond à qui préfère avoir une maîtrise totale (et qui trouve qu'un clavier est plus rapide et plus efficace qu'une souris). Je recommande aussi cette approche pour celui qui veut apprendre à mieux lire la notation musicale (car vous apprendrez le nom des notes, et, en plus, leur position sur la portée), ou à toute personne qui veut apprendre l'emplacement des notes sur son instrument (particulièrement la guitare). C'est en pensant la musique en termes de notes (plutôt qu'en numéros de cordes ou de frettes), que vous apprendrez l'emplacement de telle ou telle note - particulièrement si vous passez à des morceaux plus compliqués.

The Basics The template for the file can be found here: http://pastebin.com/pyJS56zj. Copy and save the template as FCM-example.ly (or any other name you may want). A single Voice, on a normal musical staff (no Tab): • Add the following between \pointAndClickOff and \score scale= \relative c { a ais b c cis d dis e f fis g gis \bar “|.” } • As you can see, you’re simply defining the notes that are to appear (and terminating with a closing bar). In LilyPond is stands for sharp (#), and es is flat (b). Keep in mind that a# is also bb (hence why no flats are present in the example above).

Les bases

Le modèle du fichier peut être trouvé ici : http://pastebin.com/pyJS56zj. Copiez et sauvez le modèle dans FCM-example.ly (ou tout autre nom que vous souhaitez).

Une seule voix, sur une portée musicale normale (sans tablatures) : • Ajoutez ce qui suit entre \pointAndClickOff et \score scale= \relative c {

a ais b c cis d dis e f fis g gis
\bar "|."

} • Comme vous le voyez, nous définissons simplement les notes qui doivent apparaître (en terminant par une accolade fermante). Dans LilyPond, is veut dire dièse (#) et es, bémol (b). Gardez en tête que La# est équivalent à Sib (c'est pourquoi aucun bémol n'est présent dans l'exemple ci-dessus).

• Before you can compile it, you’ll need to add a Staff to the score. Inserting a Staff into the score is done by placing the following between the « and » inside the \score{} \new Staff = “guitar” \with { } « \time 4/4 \context Voice = “guitar” { \clef “G_8” \voiceOne \scale } » • The \new Staff should be self-explanatory. The “guitar” simply assigns a name (in case you have multiple instruments on one page, for example). The \with{} is used for settings, and I leave it in my template so that I can more easily change settings for a Staff. If you prefer to leave it out, you can do so (but leave the «). The \time is the time signature. Then comes the important step - defining a Voice. I’ve defined it as “guitar”, with a G_8 clef (the clef is the symbol right at the beginning of the Staff), and defined VoiceOne using the variable scale we created earlier (step 1).

Avant de pouvoir le compiler, vous devez ajouter une portée à la partition. L'insertion d'une portée dans la partition est faite en plaçant ce qui suit entre « et » à l'intérieur de \score{} \new Staff = “guitar” \with {

} <<
  \time 4/4
  \context Voice = "guitar" { \clef "G_8" \voiceOne \scale }
>>

• Le \new Staff devrait se comprendre de lui-même. « guitar » assigne simplement un nom (au cas où vous auriez plusieurs instruments sur une page, par exemple). Le \with{} est utilisé pour les réglages et je le laisse dans mon modèle de sorte que je peux facilement modifier les réglages d'une partition. Si vous préférez l'enlever, vous pouvez le faire (mais gardez les «). Le \time est la valeur de mesure. Puis vient l'étape importante : définir une voix (Voice). Je l'ai définie comme « guitar », avec une clef de sol (la clef est le symbole à droite au début de la portée), et défini VoiceOne en utilisant la variable scale que nous avons créée plus tôt (étape 1).

• Compilation time! Be sure to replace FCM-example.ly with whatever you called your file. lilypond FCM-example.ly • This should result in a PDF, showing a scale of the notes. If this is the case, move on. If not, double-check the steps and the error messages. • What if we want to add in another octave? To do so, you can use ‘ and , to increase, and lower, the octave of a note. See the example below. scale= \relative c { a ais b c cis d dis e f fis g gis a’ ais b c cis d dis e f fis g gis \bar “|.” }

Et maintenant, la compilation ! Pensez à remplacer FCM-example.ly par le nom de fichier que vous avez choisi. lilypond FCM-example.ly • Le résultat de ceci devrait être un fichier PDF, montrant une gamme de notes. Si c'est le cas, continuez. Sinon, vérifiez deux fois chaque étape et les messages d'erreur. • Que se passe-t-il si nous ajoutons une autre octave ? Pour faire cela, vous pouvez utiliser ' et , pour hausser ou baisser l'octave d'une note. Voyez l'exemple ci-dessous. scale= \relative c {

  a ais b c cis d dis e f fis g gis
  a’ ais b c cis d dis e f fis g gis
  \bar "|."

}

• If you look at this example, you’ll see that I’ve inserted only one apostrophe. This is because it is a toggle, and not a one-time modifier. Meaning if you use two, your second note will be two octaves higher. Also, most people will notice that this actually skipped an octave. This is due to the fact that LilyPond is smart enough to realise that, after an increasing scale like above, that a new a should probably be an octave higher. You can disable this feature, but I find it quite useful. So to get the first 3 octaves, you can do this instead: scale= \relative c { a ais b c cis d dis e f fis g gis a ais b c cis d dis e f fis g gis a ais b c cis d dis e f fis g gis \bar “|.” }

Si vous regardez cet exemple, vous verrez que je n'ai inséré qu'une apostrophe. C'est parce que c'est une bascule, et non une modification pour une seule note. Ce qui signifie que si vous en utilisez deux, votre seconde note sera deux octaves plus haute. Ainsi, la plupart des gens remarqueront qu'en fait ceci a fait sauter une octave. C'est dû au fait que LilyPond est assez intelligent pour réaliser que, après une montée de la gamme comme ci-dessus, le nouveau la devrait être plus haut d'une octave. Vous pouvez désactiver cette fonction, mais je la trouve très utile. Ainsi, pour obtenir les 3 premières octaves, vous pouvez faire ceci à la place : scale= \relative c {

  a ais b c cis d dis e f fis g gis
  a ais b c cis d dis e f fis g gis
  a ais b c cis d dis e f fis g gis
  \bar "|."

}

• This should result in a single scale, covering three octaves. LilyPond does offer a \repeat unfold option, to avoid having to type the same line multiple times. However, it would not work in this case, as there is an implied difference between each line (their octave). The below will repeat the same scale 3 times, in the same octave. This is useful to keep in mind. scale= \relative c { \repeat unfold 3 { a ais b c cis d dis e f fis g gis } \bar “|.” }

Une gamme unique couvrant trois octaves devrait en être le résultat. LilyPond offre une option \repeat unfold, pour éviter d'avoir à saisir la même ligne plusieurs fois. Cependant, ça ne marcherait pas dans ce cas, car il y a une différence implicite entre les deux lignes, leur octave. Ci-dessous, vous voyez que la même gamme sera répétée 3 fois, sur la même octave. C'est utile de le garder en mémoire. scale= \relative c {

  \repeat unfold 3 {
      a ais b c cis d dis e f fis g gis
 }
  \bar "|."

}

• Prettying up the source code is useful, especially when you write whole songs. A bar division is indicated with “|”, and LilyPond will track the number of notes in a bar (to ensure you keep the time signature). It will throw warnings, but still compile, if this is wrong. See below: scale= \relative c { a ais b c | cis d dis2 | e f | fis | g gis \bar “|.” }

Enjoliver le code source est utile, particulièrement si vous écrivez des chansons entières. Une barre de mesure est indiquée par « | » et LilyPond suivra le nombre de notes dans chaque mesure (pour s'assurer de suivre le tempo). Des avertissements seront lancés, en cas d'erreur, mais la compilation continuera. Voyez ci-dessous : scale= \relative c {

  a ais b c |
  cis d dis2 |
  e f |
  fis |
  g gis
  \bar "|."

}

• This example will result in the warning “barcheck failed at 1/2”. This is because I changed the d# into a half note (2 beats), and this change is automatically carried through to all following notes. By placing the f# in a bar by itself (and therefore being only 2/4), it results in the warning. In the PDF, there is no noticeable issue, but this will cause problems if using multiple voices (or if the song were longer). Instead, we need either a rest, or to adjust the duration of the notes. Correct the bar to read: fis r2 | • This adds a 2 beat rest into the bar, and fixes the timing issue. • Lastly, let us add a TabStaff, in order to create actual tablature. To do so, insert the following after the first » (following the closing bracket of \context Voice). \new TabStaff = “guitar” « \time 4/4 \context TabVoice = “guitar” { \clef “G_8” \voiceOne \scale } » • As you can see, it’s a similar approach. We’re even reusing the same variable with the notes. Compiling at this time will yield a typical guitar tablature

Cet exemple donnera l'avertissement « échec du contrôle de mesure (barcheck) à 1/2 ». C'est parce que j'ai changé le Ré# en blanche (2 temps) et c'est automatiquement transmis à toutes les notes suivantes. En plaçant le Fa# seul dans une mesure (et donc en étant seulement en 2/4), un avertissement est émis. Dans le PDF, il n'y a pas de problème visible, mais des problèmes apparaîtront si vous utilisez plusieurs voix (ou si le morceau est plus long). À la place, nous avons besoin d'un silence ou d'ajuster la durée des notes. Corrigez la mesure pour lire : fis r2 | • Ceci ajoute un silence de 2 temps dans la mesure, et résout l'erreur de rythme. • En dernier, ajoutons un Tabstaff, de façon à créer une vrai tablature. Pour cela, insérez ce qui suit après le premier » (suivant la parenthèse fermante de \context Voice).

\new TabStaff = "guitar" <<
  \time 4/4
  \context TabVoice = "guitar" { \clef "G_8" \voiceOne \scale }
>>

• Comme vous pouvez le voir, c'est une approche similaire. Nous réutilisons même la même variable pour les notes. Une compilation lancée à cet instant donnera une tablature typique pour guitare.

There are many other things you can do - chords, multiple voices, arpeggios, repeats, etc. But for a basic example, this will have to do. If you want to see what my file looked like at the end of this tutorial, it can be found here: http://pastebin.com/eqBwrkX9 If you have any issues, or questions, feel free to contact me. For some more examples, I highly recommend the snippets and documentation page. Or just simply creating a tab you already know. As always, I can be reached at lswest34+fcm@gmail.com.

Il y a beaucoup d'autre choses possibles : accords, voix multiples, arpèges, répétitions, etc. Mais pour un exemple de base, il faudra vous contenter de ceci. Si vous voulez voir à quoi ressemble mon fichier à la fin de ce tutoriel, il se trouve à : http://pastebin.com/eqBwrkX9

Si vous avez des problèmes, ou des questions, n'hésitez pas à me contacter. Pour des exemples supplémentaires, je vous recommande les bribes (snippets) et la page de documentation. Ou juste de créer une tablature que vous connaissez déjà. Comme toujours, je suis joignable à lswest34+fcm@gmail.com.

issue111/c_c.txt · Dernière modification : 2016/08/23 19:06 de andre_domenech