Aller au menu - Aller au contenu

Icône TP : Au clair de la lune | V1

Avatar
Mise à jour : 17/05/2011
Difficulté : Facile Facile Creative Commons BY-SA
360 visites depuis 7 jours, dont 30 sur ce chapitre classé 294/786
Si vous êtes pressés, curieux ou que vous n'avez tout simplement envie de faire ce TP bien que vous aimeriez entendre le résultat final, le fichier audio est disponible à cette adresse : http://sanglier-codeur.org/misc/clairLune/clairLune1.wav
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Le concept

Une excellente manière d'illustrer tout ce que nous voyons dans ce tutoriel est de le mettre en pratique dans la réplique d'un morceau de musique existant. En l'occurrence nous allons reprendre un classique parmi les classiques : Au clair de la lune. J'imagine que la plupart d'entre vous ont entendu cette chanson dans leur enfance et s'en souviennent très bien, mais pour les autres voici une session de rattrapage en vidéo :






Au clair de la lune est dans le domaine public. Ce qui signifie que sa partition est libre de droit (contrairement aux interprétations qui en sont faites). C'est pour cette raison que vous pouvez très facilement trouver cette partition sur le net en plusieurs versions différentes.

L'idée de cette série de TP accompagnant le tutoriel est que nous allons toujours reproduire le même morceau mais en ajoutant à chaque fois les connaissances que nous venons d'acquérir pour le rendre plus complexe et plus intéressant. Pour cette première version nous nous contenterons de faire "bip bip biiip" étant donné que nous n'en sommes vraiment qu'au début. ;)




Musique et droits d'auteur


Ce petit interlude sur le droit d'auteur n'a pas pour but d'être exhaustif mais plutôt d'éclaircir quelques points qui sont parfois mal compris. Si vous avez besoin de plus d'informations sur la législation, je vous renvoie aux liens indiqués dans les références [44-X].

Contrairement à une idée reçue, en France le droit d'auteur s'applique automatiquement dès la création d'une oeuvre de l'esprit (musique, peinture, roman, programme informatique, etc...), tant que celle-ci est originale (qu'il ne s'agit pas d'un plagiat). Il est donc inutile la plupart du temps de préciser "tous droits réservés" ou d'apposer le symbole copyright (©) un peu partout. Tant qu'une oeuvre ne comporte pas de mention particulière, elle est soumise au droit d'auteur.
Image utilisateur

Ce tutoriel au contraire est placé sous licence CC-by-sa, comme indiqué dans le bloc "informations sur le tutoriel" en haut à droite. Ce qui permet d'en disposer plus librement, tant que les conditions de la licence sont respectées. Vous pouvez trouver plus d'informations sur les licences et le droit d'auteur dans ce très bon tutoriel : Choisir une licence pour son tutoriel.

Une autre chose importante à retenir est que l'oeuvre est différente de son support. Par exemple si vous achetez un CD de musique, vous êtes propriétaire du CD, pas de la musique qu'il y a dessus. Dans le même ordre d'idée, il y a une différence entre la partition d'une musique et l'interprétation qui en est faite. Tout le monde peut jouer au clair de la lune, mais on ne fait pas ce qu'on veut d'un enregistrement d'au clair de la lune pour autant.

Attention aussi à ne pas confondre partition au sens d'ensemble des notes qui composent la musique et partition au sens de document sur lequel se trouve la partition. Une partition peut très bien être libre de droit tandis que le document ne l'est pas !

La partition solfège

Attaquons les choses sérieuses sans plus attendre. Voici la partition que nous allons programmer :

partition_au_clair_de_la_lune


Les paroles du début de la chanson sont là pour faire joli, mais en revanche le nom des notes devrait aider les personnes peu habituées au solfège. Ce n'est pas indiqué ci-dessus, mais le tempo est de 120 pour une noire. Ce qui signifie qu'une noire durera 0,5 seconde.

Un chapitre d'introduction au solfège est disponible en annexe du tutoriel.



Notation de la hauteur d'une note


Jusqu'à maintenant nous avons spécifié la hauteur des notes que nous voulions jouer via leur fréquence. Ce qui en code Csound se traduit par :

Code : Csound
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; ==============================================================
; quelque part dans l'orchestre
; ==============================================================

ifreq =      p4               ; frequency
aout  oscil  10000, ifreq, 1  ; basic oscillator
      out    aout             ; output the sound


; ==============================================================
; quelque part dans la partition
; ==============================================================

;iid | sta  | dur  | freq
i 1    0      .5     440   ; la frequence est de 440
i 1    +      .5     220   ; la frequence est de 220


C'est d'autant plus pénible que la plupart des notes de musique ont des fréquences qui ne tombent pas "juste" et qui sont tout simplement impossibles à retenir. Par exemple la fréquence du do3 est de 261.626 Hz... Heureusement le problème peut être résolu en utilisant un opcode qui va convertir une fréquence en une notation musicale classique, ou plutôt l'inverse. Cet opcode est cpspch. En voici un exemple :


Code : Csound
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; ==============================================================
; quelque part dans l'orchestre
; ==============================================================

ifreq =      cpspch(p4)       ; frequency
aout  oscil  10000, ifreq, 1  ; basic oscillator
      out    aout             ; output the sound


; ==============================================================
; quelque part dans la partition
; ==============================================================

;iid | sta  | dur  | freq
i 1    0      .5     8.09   ; note : la3 | frequence : 440
i 1    +      .5     7.09   ; note : la2 | frequence : 220


Dans cet exemple, le quatrième paramètre d'une note (P4) va être converti par l'opcode cpspch avant d'être envoyé à l'oscillateur. Cet opcode prend en entrée un nombre de type "x.xx" et sort la fréquence correspondante en sortie. De prime abord, cela ne semble pas beaucoup plus simple que de taper la fréquence correspondante directement, mais en réalité cette notation est plus facile à retenir car le premier nombre correspond à l'octave de la note, et les deux derniers à la note proprement dite. Comme vous pouvez le voir dans le tableau récapitulatif des correspondances en annexe du tutoriel.


Pour conclure si nous reprenons les quatre premières mesures de la partition que voici :

debut_partition_clair_lune


La transcription est la suivante :
  • 9.00 (do4) pendant 1 temps
  • 9.00 (do4) pendant 1 temps
  • 9.00 (do4) pendant 1 temps
  • 9.02 (re4) pendant 1 temps
  • 9.04 (mi4) pendant 2 temps
  • 9.02 (re4) pendant 2 temps
  • 9.00 (do4) pendant 1 temps
  • 9.04 (mi4) pendant 1 temps
  • 9.02 (re4) pendant 1 temps
  • 9.02 (re4) pendant 1 temps
  • 9.00 (do4) pendant 3 temps

Les macros de partition

Vous l'aurez sûrement remarqué, les quatre premières mesures sont les mêmes que les quatre suivantes et que les quatre dernières. Ce qui veut dire qu'on devrait écrire la même chose trois fois dans la partition. Heureusement non, ce n'est obligatoire grâce aux macros de partition.

Une macro de partition est en fait un bout de partition auquel on va associer un nom. À chaque fois qu'on voudra écrire ce bout de partition, on écrira le nom associé à la place, et Csound comprendra qu'il faut utiliser le bout de partition au moment de la compilation. Voyons un exemple concret :

Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
#define REPEAT          ; le nom de la macro
#                       ; debut de la macro
i 1    +    .      .    ; contenu
#                       ; fin de la macro


;iid | sta  | dur  | pitch
i 1    0      0.75   9.00
$REPEAT
$REPEAT
$REPEAT
e


Comme l'indiquent les commentaires, il faut utiliser la syntaxe "#define nomMacro # contenu #" pour déclarer une macro. On utilise généralement des noms de macro entièrement en majuscules pour bien les distinguer du reste, mais ce n'est pas une obligation. Le contenu de la macro doit être situé entre deux #, et peut être tout et n'importe quoi. L'exemple ci-dessus revient donc exactement au même que le code suivant :

Code : Autre
1
2
3
4
5
6
;iid | sta  | dur  | pitch
i 1    0      0.75   9.00
i 1    +      .      .
i 1    +      .      .
i 1    +      .      .
e


Grâce à cette technique, nous allons pouvoir taper le code correspondant aux quatre premières mesures d'au clair de la lune puis l'utiliser trois fois en tapant simplement trois lignes. Pour plus d'informations sur les macros de partition, reportez-vous à la page de manuel correspondante : http://www.csounds.com/manual/html/ScoreMacros.html

La transcription Csound

Et bien voilà, nous avons vu tout ce qu'il fallait pour écrire cette première version d'au clair de la lune. Essayez de le faire par vous-même pour tester vos compétences puis lorsque vous aurez réussi (ou que vous en aurez marre de chercher ^^ ), comparez votre fichier avec celui qui suit :

Code : Csound
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
<CsoundSynthesizer>

<CsOptions>
-odac                             ; real time render
;-o clairLune.wav -W              ; file render
</CsOptions>

<CsInstruments>

sr = 44100                        ; CD sample-rate
ksmps = 10
nchnls = 1                        ; mono sound

instr 1 
iAmp     =       6000             ; amplitude
iFreq    =       cpspch(p4)       ; frequency in pitch-class
aout     oscil   iAmp, iFreq, 1   ; basic oscillator
         out     aout             ; output the sound
endin

</CsInstruments>
<CsScore>

f 1 0 4096 10 1            ; sine wave
t 0 120                    ; 2 beats per second


#define PATTERN1
#
;iid | sta  | dur  | pitch
i 1    ^+4    0.75   9.00  ; 1st bar
i 1    ^+1    .      .
i 1    ^+1    .      .
i 1    ^+1    .      9.02
i 1    ^+1    1.75   9.04  ; 2nd bar
i 1    ^+2    .      9.02
i 1    ^+2    0.75   9.00  ; 3rd bar
i 1    ^+1    .      9.04
i 1    ^+1    .      9.02
i 1    ^+1    .      .
i 1    ^+1    2.75   9.00  ; 4th bar
#


#define PATTERN2
#
;iid | sta  | dur  | pitch
i 1    ^+4    0.75   9.02  ; 1st bar
i 1    ^+1    .      .
i 1    ^+1    .      .
i 1    ^+1    .      .
i 1    ^+1    1.75   8.09  ; 2nd bar
i 1    ^+2    .      .
i 1    ^+2    0.75   9.02  ; 3rd bar
i 1    ^+1    .      9.00
i 1    ^+1    .      8.11
i 1    ^+1    .      8.09
i 1    ^+1    2.75   8.07  ; 4th bar
#


$PATTERN1
$PATTERN1
$PATTERN2
$PATTERN1
e

</CsScore>
</CsoundSynthesizer>


Rien de nouveau ni de compliqué si vous avez bien suivi jusqu'ici. Notez tout de même que nous imposons à chaque fois un petit silence entre les notes étant donné qu'on n'entendrait pas la transition entre deux mêmes notes dans le cas contraire. Vous aurez également remarqué qu'il y a des "clics" à chaque début de note. Autant de problèmes qui seront réglés dès la prochaine version. ;)
Chapitre précédent Sommaire Chapitre suivant

Partager

1 commentaire pour "TP : Au clair de la lune | V1"
Note moyenne : 3.68 / 4 (22 votes)
Pseudo Commentaire
Hors ligne RedGuff # Posté le 09/02/2012 à 00:58:15
Fumer tue.

Avis : Très bon

Bonjour.
Veuillez corriger "oeuvre" (2 fois). Merci.

Voir tous les commentaires