Skip to content

Commit ec49e48

Browse files
committed
Légendes images, traitement problème des listes et diverses corrections essentiellement de mise en forme.
1 parent 462d615 commit ec49e48

File tree

10 files changed

+320
-122
lines changed

10 files changed

+320
-122
lines changed

book/15-e-GS-fr-01.md

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,17 @@
99
- Qu’est-ce qu’une **partition/score** Csound
1010

1111
## Qu’est-ce qu’un oscillateur sinusoïdal / sine oscillator
12-
1312
Une onde sinusoïdale peut être considérée comme l’élément sonore le plus élémentaire au monde. Quand nous dessinons une onde sinusoïdale comme un graphique montrant son amplitude au cours du temps, elle ressemble à ça :
1413

15-
![alt text](../resources/images/01-GS-01-sine.png)
14+
![Onde sinusoïdale serpent](../resources/images/01-GS-01-sine.png)
15+
1616

17-
_Onde sinusoïdale serpent_
1817

1918
Pour produire une onde sinusoïdale, Csound utilise un oscillateur. Un oscillateur nécessite certaines entrées pour fonctionner :
2019
1. Une amplitude maximum de sortie. Ce qui résultera en un son plus ou moins fort.
2120
2. Le nombre de périodes (cycles) par seconde à générer. Ce qui résultera en un son plus ou moins aigüe ou grave. L’unité est le _Hertz(Hz)_. 1000 Hz signifie qu’une sinusoïde comporte 1000 périodes par seconde.
2221

2322
## Un oscillateur sinusoïdal dans Csound : Opcode et Arguments
24-
2523
Csound dispose de nombreux oscillateurs différents. (vous pouvez trouver [ici](https://flossmanual.csound.com/how-to/opcodes) quelques descriptions et comparaisons.) Dans cet exemple, nous utilisons l’opcode `poscil`, qui signifie _precise oscillator_.
2624

2725
Un **opcode** est une unité de traitement dans Csound, comparable à un _object_ dans PureData ou Max, ou un _UGen_ dans SuperCollider. Si vous êtes familier des langages de programmation, vous pouvez considérer un opcode comme une _building fonction / fonction intégrée_.
@@ -33,7 +31,7 @@ Les entrées d’un opcode sont appelées **arguments** et sont écrites entre p
3331
La signification des arguments en entrée dépend de la façon dont l’opcode a été implémenté. Pour `poscil`, la première entrée est l’amplitude et la seconde entrée est la fréquence. Le [Manuel de Référence Csound](https://csound.com/docs/manual-fr/index.html) contient toutes les informations à son sujet. Nous apporterons quelques éclaircissements dans notre [Tutoriel 08](15-l-GS-fr-08.md) pour aider à son utilisation.
3432

3533
Cette manière d’écrire du code est commune à de nombreux langages de programmation, comme `range(13)` en Python, ou `printf("no no")` en C, ou `Date.now()` en JavaScript (dans ce cas les parenthèses sont vides, ce qui signifie : pas d’argument en entrée).
36-
> Note : Il existe une autre manière d’écrire du code Csound. Si vous voulez en apprendre plus sur ce sujet, voyez la section "Deux façons d’écrire du code dans Csound" à la fin de ce tutoriel.
34+
Note : Il existe une autre manière d’écrire du code Csound. Si vous voulez en apprendre plus sur ce sujet, voyez la section "Deux façons d’écrire du code dans Csound" à la fin de ce tutoriel.
3735

3836
## Le flux d’un signal et son code
3937
Nous créons maintenant une onde sinusoïdale d’une amplitude de 0.2 et de 400 cycles par seconde (Hz).
@@ -56,8 +54,7 @@ Notez que le signal _aSine_ est d’abord la sortie de l’oscillateur, puis dev
5654

5755
Nous pouvons dessiner le flux de ce programme comme ceci :
5856

59-
![alt text](../resources/images/01-GS-01-a.png){width=80%}
60-
_Flux de signal et code Csound pour un oscillateur sinusoïdal et une sortie._
57+
![Flux de signal et code Csound pour un oscillateur sinusoïdal et une sortie.](../resources/images/01-GS-01-a.png){width=80%}
6158

6259
Au milieu, vous voyez le flux du signal, avec des symbols pour l’oscillateur et la sortie. Vous pouvez les imaginer comme les modules d’un synthétiseur, connectés par un cable nommé _aSine_.
6360

@@ -66,7 +63,6 @@ Sur le côté gauche, vous voyez la chaine entre les entrées, l’opcode et la
6663
À droite, vous voyez le code Csound correspondant. Chaque ligne de code représente une chaine _entrée -> opcode -> sortie_, dans la forme _sortie = opcode(entrée)_. La ligne `outall(aSine)` n’a pas de sortie vers Csound, car elle envoie l’audio au matériel (comme l’objet `dac~` dans PD ou Max).
6764

6865
## Votre premier instrument Csound
69-
7066
Dans Csound, tous les oscillateurs, filtres, lecteurs d’échantillons / sample players, et autres unités de traitement sont encapsulés dans un **instrument**. Un instrument comporte les mots-clé :
7167
- `instr` à son début
7268
- et `endin` à sa fin.
@@ -124,15 +120,23 @@ C’est la section **Partition / Score** du fichier .csd. Elle commence par la b
124120
i "Bonjour" 0 2
125121
```
126122
Chaque colonne (champ de paramètre / parameter field) spécifie une certaine information :
123+
127124
- `"Bonjour"` : L’instrument auquel cette ligne de partition se réfère.
125+
128126
- `0` : L’heure de départ de cet instrument : `0` (= départ immédiat).
127+
129128
- `2` : La durée du son venant de l’instrument : `2` (secondes).
130129

131130
#### Essayez vous-même
131+
132132
(Vous pouvez éditer l’exemple juste en tapant à l’intérieur)
133+
133134
- Changez la durée de l’instrument
135+
134136
- Changez l’heure de départ de l’instrument
137+
135138
- Changez la fréquence de l’oscillateur
139+
136140
- Changez l’amplitude de l’oscillateur
137141

138142
## Opcodes, Mots-Clés et termes que vous avez appris dans ce tutoriel
@@ -152,7 +156,8 @@ Avec le tutoriel suivant : [02_Bonjour Fréquences](15-f-GS-fr-02.md)
152156

153157
## Ou lisez quelques informations supplémentaires ici
154158

155-
### Pourquoi le sinus est-il « le son le plus élémentaire au monde » ?
159+
### Pourquoi l’onde sinusoïdale est-elle « le son le plus élémentaire au monde » ?
160+
156161
Pour être honnête, j'aime les sons sinusoïdaux. Je sais que beaucoup de gens les trouvent ennuyeux. J'aime leur simplicité, alors contre tous les bons conseils, je vais consacrer les dix premiers tutoriels uniquement aux sons sinusoïdaux. Désolé de vous en faire subir les conséquences...
157162

158163
Mais revenons à la question : qu'y a-t-il d'élémentaire dans les ondes sinusoïdales ?
@@ -181,7 +186,7 @@ Vous pouvez sans problème continuer d’écrire le code Csound ainsi. Les raiso
181186
3. Le style fonctionnel d’écrire du code Csound a toujours existé dans des expressions comme `ampdb(-10)` ou `ftlen(giTable)`. Ce n’est donc pas totalement nouveau, mais plutôt une extension.
182187
4. Chaque fois que nous voulons utiliser une expression comme argument (vous en apprendrez plus à ce sujet dans le [tutoriel 6](15-j-GS-fr-06.md)), nous devons écrire le code de cette manière. Il est donc bon de l’utiliser en permanence pour plus de cohérence.
183188

184-
> NOTE DU TRADUCTEUR pour les francophones : Sauf dans le commentaires où ça ne pose aucun problème, n’utilisez que des caractères ASCII dans vos programmes. J’ai essayé et chez moi ça plante. Donc pas de lettres accentuées, pas de œ et autres signes propres au français.
189+
NOTE DU TRADUCTEUR pour les francophones : Sauf dans les commentaires où ça ne pose aucun problème, n’utilisez que des caractères ASCII dans vos programmes. J’ai essayé et chez moi ça plante. Donc pas de lettres accentuées, pas de œ et autres signes propres au français.
185190

186191
## Au sujet de ces tutoriels
187192
Ce _Guide de démarrage_ a été écrit par Joachim Heintz en 2023. Il est basé sur de nombreuses expériences d’enseignement de Csound auprès de jeunes compositeurs.

book/15-f-GS-fr-02.md

Lines changed: 57 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,57 @@
11
# 02 Bonjour Fréquences
22

33
## Ce que vous apprendrez dans ce tutoriel
4+
45
- Comment créer un glissement/sliding de fréquence, ou **glissando**.
6+
57
- Ce que **k-rate** ou **control rate / fréquence de contrôle** signifient, et
68
- que sont les **k-variables** dans Csound.
9+
710
- Comment un **document .csd** Csound est structuré :
11+
812
- Que sont les **CsOptions** et
13+
914
- Qu’est-ce que la section **CsInstruments** ou **orchestra**.
1015

1116
## Une ligne pour la fréquence
1217

1318
Dans les sons naturels, la fréquence est rarement fixe. Habituellement, par exemple quand nous parlons, la hauteur de notre voix varie constamment à l’intérieur d’une certaine plage.
1419

1520
Le cas le plus simple de ce genre de mouvement est une ligne. Nous avons besoin de trois valeurs pour construire cette ligne :
21+
1622
1. Une valeur de commencement.
23+
1724
2. Une durée pour nous déplacer de cette valeur vers une valeur cible.
25+
1826
3. La valeur-cible elle-même.
1927

2028
Voici une ligne qui se déplace de 500 à 400 en 0.5 secondes, et qui reste à 400 pendant 1.5 secondes :
2129

22-
![alt text](../resources/images/01-GS-02-a.png)
23-
_Ligne de fréquence._
30+
![Ligne de fréquence.](../resources/images/01-GS-02-a.png)
31+
2432

25-
> Note : Acoustiquement, cette façon d’appliquer un _glissando_ est discutable. Nous en parlerons dans le [Tutoriel 05](15-i-GS-fr-05.md).
33+
Note : Acoustiquement, cette façon d’appliquer un _glissando_ est discutable. Nous en parlerons dans le [Tutoriel 05](15-i-GS-fr-05.md).
2634

27-
> Note 2 : Ne devrions-nous pas dire : "Voici une ligne qui se déplace depuis 500 Hz jusqu’à 400 Hz, en 0.5 secondes", plutôt que "Voici une ligne qui se déplace depuis 500 jusqu’à 400 en 0.5 secondes" ? Non. La ligne produit des nombres. Ces nombres peuvent être utilisés pour des fréquences, mais peuvent avoir une signification différente dans un autre contexte.
35+
Note 2 : Ne devrions-nous pas dire : "Voici une ligne qui se déplace depuis 500 Hz jusqu’à 400 Hz, en 0.5 secondes", plutôt que "Voici une ligne qui se déplace depuis 500 jusqu’à 400 en 0.5 secondes" ? Non. La ligne produit des nombres. Ces nombres peuvent être utilisés pour des fréquences, mais peuvent avoir une signification différente dans un autre contexte.
2836

2937
## Une ligne Dessinée avec l’opcode 'linseg'
3038

31-
Dans Csound, nous créons ce genre de ligne avec l’opcode `linseg`, qui signifie "linear segments / segments linéaires". Ici, nous n’avons besoin que d’un seul segment qui se déplace de 500 à 400 en 0.5 secondes.
39+
Dans Csound, nous créons ce genre de ligne avec l’opcode `linseg`, qui signifie "linear segments / segments linéaires". Ici, nous n’avons besoin que d’un seul segment qui se déplace de 500 à 400 en 0.5 secondes.
3240

3341
Voici le code Csound pour ce mouvement linéaire :
3442
```
3543
kFreq = linseg:k(500, 0.5, 400)
3644
```
37-
## Signal k-rate, à la fréquence de contrôle
45+
## Signal k-rate (à la fréquence de contrôle)
46+
3847
Un signal est quelque chose dont les valeurs changent au cours du temps. Mais qu’est-ce que le temps dans une application audio comme Csound ?
3948

4049
Le temps fondamental est donné par la **sample rate / fréquence d’échantillonnage**. Elle détermine le nombre d’échantillons/samples que nous avons par seconde. Nous avons vu le signal _aSine_ dans le premier tutoriel, dont les valeurs changent à la **fréquence d’échantillonnage / audio rate** ; calculant une nouvelle valeur à chaque sample/échantillon.
4150

4251
La seconde résolution temporelle possible dans Csound est moins fine. Elle ne calcule pas une nouvelle valeur à chaque échantillon, mais seulement par **groupe d’échantillons**. Cette résolution temporelle est appelée **control rate / fréquence de contrôle**.
4352

44-
![alt text](../resources/images/01-GS-02-b.png)
45-
_audio rate vs control rate_
53+
![audio rate vs control rate](../resources/images/01-GS-02-b.png)
54+
4655

4756
Les variable Csound qui comportent un **k** comme premier caractère, utilisent la fréquence de contrôle / control rate. Leurs valeurs sont mises à jour à la fréquence de contrôle. C’est la raison pour laquelle nous écrivons _**k**Freq_.
4857

@@ -93,10 +102,10 @@ i "Bonjour" 0 2
93102

94103
Si vous examinez le code de notre instrument, vous constaterez qu’il existe un schéma commun :
95104

96-
![alt text](../resources/images/01-GS-02-c.png)
97-
_Input output insertions_
105+
![Input output insertions](../resources/images/01-GS-02-c.png)
98106

99107
- La première ligne produit un signal et le stocke dans la variable _kFreq_. Cette variable est ensuite utilisée comme entrée dans la seconde ligne.
108+
100109
- La seconde ligne produit un signal et le stocke dans la variable _aSine_. Cette variable est ensuite utilisée comme entrée dans la troisième ligne.
101110

102111
## La structure d’un document Csound (.csd)
@@ -107,28 +116,41 @@ Le document Csound complet consiste en trois parties :
107116

108117
2. Entre les balises \<CsInstruments> et \</CsInstruments>. C’est le lieu où sont placés tous les instruments. Le code Csound réside à cet emplacement, qu’on appelle également "Orchestra".
109118

110-
2. Entre les balises \<CsScore> et \</CsScore>, partie qui a été discutée dans la section précédente.
119+
3. Entre les balises \<CsScore> et \</CsScore>, partie qui a été discutée dans la section précédente.
111120

112121
Comme vous pouvez le voir, ces trois paires de balises sont englobées entre une autre paire de balises :
122+
113123
```
114124
<CsoundSynthesizer>...</CsoundSynthesizer>
115125
```
116126
Cette dernière paire de balises définit les limites d’écriture pour le programme Csound. En d’autre termes : Ce que nous écrivons hors de ces limites est ignoré par Csound.
117127

118128
## Essayez-le vous-même
129+
119130
- Rendez la ligne de fréquences ascendante plutôt que descendante.
131+
120132
- Utilisez `linseg` pour créer une fréquence constante de 400 ou de 500 Hz.
133+
121134
- Rendez la durée de la rampe du glissando plus longue ou plus courte.
135+
122136
- Ajoutez un autre segment en ajoutant une valeur supplémentaire de durée, et une valeur supplémentaire pour la seconde valeur-cible.
137+
123138
- Restaurez les arguments originaux de linseg. Puis remplacez `linseg` par `line`, et écoutez la différence.
124139

125140
## Opcodes, balises et termes que vous avez appris dans ce tutoriel
141+
126142
### Opcodes
143+
127144
- `linseg:k(Value1,Duration1,Value2,Duration2,…)` génère des segments de lignes droites.
145+
128146
### Balises
147+
129148
- \<CsoundSynthesizer>...\</CsoundSynthesizer> déterminent le début et la fin du fichier Csound.
149+
130150
- \<CsOptions>...\</CsOptions> déterminent le début et la fin des [Options Csound]().
151+
131152
- \<CsInstruments>... \</CsInstruments> déterminent le début et la fin de l’espace réservé à la définition des instruments Csound.
153+
132154
- \<CsScore>...\</CsScore> déterminent le début et la fin de la partition Csound.
133155

134156
### Termes
@@ -146,6 +168,7 @@ Avec le tutoriel suivant : [03 Bonjour Amplitude](15-g-GS-fr-03.md)
146168
Csound a un opcode `line` que nous pouvons utiliser à la place de `linseg`.
147169

148170
Nous pouvons remplacer `linseg` dans notre code par `line` :
171+
149172
```
150173
instr Bonjour
151174
kFreq = line:k(500,0.5,400)
@@ -156,63 +179,83 @@ endin
156179

157180
Si vous exécutez ce code, vous entendrez que `line` comporte une importante différence par rapport à `linseg` : il ne s’arrête pas à la valeur-cible, mais continue son mouvement :
158181

159-
![alt text](../resources/images/01-GS-02-d.png)
160-
_line vs linseg_
182+
![line vs linseg](../resources/images/01-GS-02-d.png)
161183

162184
Les cas d’utilisation de `line` ne sont pas courants. Je recommande donc toujours d’utiliser `linseg`, sauf exception.
163185

164186
### Conventions de codage
187+
165188
Quand vous appuyez sur le bouton _Run/Exécuter_, Csound "lit" le code que vous avez écrit. Peut-être avez-vous déjà expérimenté avoir écrit quelque chose qui aboutit à une erreur, parce que quelque chose est "illégal".
166189

167190
Par exemple, ce code :
191+
168192
```
169193
kFreq = linseg:k(500 0.5 400)
170194
```
195+
171196
Qu’est-ce qui est illégal ici ? Nous avons séparé les trois argument pour `linseg` avec des espaces plutôt que des virgules. Csound attend des virgules, et s’il n’y en a pas, il retourne une erreur de syntaxe, et le code ne peut pas être compilé :
197+
172198
```
173199
error: syntax error, unexpected NUMBER_TOKEN,
174200
expecting ',' or ')' (token "0.5")
175201
```
202+
176203
Ceci n’est pas une convention. C’est une syntaxe que nous **devons** respecter si nous voulons que notre code soit compilé et exécuté par Csound.
177204

178205
Par contre, dans la syntaxe, il existe de nombreuses façons d’écrire du code d’une manière ou d’une autre.
179206

180207
Voyons quelques exemples :
181208

182209
1. `kFreq = linseg:k(500,0.5,400)`
210+
183211
2. `kFreq=linseg:k(500,0.5,400)`
212+
184213
3. `kFreq = linseg:k(500, 0.5, 400)`
214+
185215
4. `kFreq = linseg:k(500,.5,400)`
216+
186217
5. `kFreq = linseg:k(500, 0.5, 400)`
187218

188219
Explications :
220+
189221
1. C’est la manière dont j’écris le code ici dans ces tutoriels. Je mets un espace à gauche et à droite du signe `=`, mais je ne mets pas d’espace après la virgule.
222+
190223
2. On peut le faire, mais je pense que vous serez d’accord pour dire que cette façon est moins facile à lire.
191224
3. C’est autant utilisé que la manière (1.), voire plus. Je me souviens que lorsque j’ai lu pour la première fois le tutoriel Python de Guido van Rossum, dans lequel il recommande d’écrire comme dans (1.), je n’ai pas aimé du tout. Il m’a fallu vingt ans pour être d’accord.
225+
192226
4. C’est une abréviation commune qui est possible dans Csound et quelques autres langages de programmation : Plutôt qu’écrire `0.5`, on peut juste écrire `.5`. Je l’utilise pour mes programmes, mais je ne l’utiliserai pas dans ces tutoriels car c’est un peu moins clair.
227+
193228
5. Vous êtes autorisés à utiliser des tabulations plutôt que des espaces, ainsi que n’importe quelle combinaison des deux, et autant de tabulations ou d’espaces que vous voulez. Mais habituellement, nous ne souhaitons pas qu’une ligne soit plus longue que nécessaire.
194229

195-
Une autre convention est d’écrire les mots-clé `instr` et `endin` au début de la ligne, puis le code indenté par deux espaces :
230+
Une autre convention consiste à écrire les mots-clé `instr` et `endin` au début de la ligne, puis le code indenté par deux espaces :
231+
196232
```
197233
instr Bonjour
198234
kFreq = linseg:k(500,0.5,400)
199235
aSine = poscil:a(0.2,kFreq)
200236
outall(aSine)
201237
endin
202238
```
239+
203240
La raison de cette convention est à nouveau de formater le code en faveur d’un maximum de clarté. Dans _Csound Book_, nous utilisions un espace, mais je pense que deux espaces sont préférables.
204241

205242
Pour résumer : Vous avez de nombreuses différentes options pour écrire du code Csound. Vous pouvez adopter celle que vous voulez, mais il est sage de respecter quelques conventions qui permettent une compréhension optimale. Le but est la lisibilité et la transparence du code.
206243

207244
### Quand choisir a-rate ou k-rate ?
245+
208246
La principale raison de l’introduction de _k-rate_ est une économie de puissance pour le CPU. C’était essentiel dans les premières années de la musique sur ordinateur. Aujourd’hui c’est différent. Pour des instruments courants en musique électronique, on peut omettre les variable _k-rate_, et n’utiliser que les variables _a-rate_. Dans notre cas, nous pourrions écrire :
247+
209248
```
210249
aFreq = linseg:a(500,0.5,400)
211250
aSine = poscil:a(0.2,aFreq)
212251
outall(aSine)
213252
```
214253

254+
215255
Un simple avis :
256+
216257
- Utilisez toujours _a-rate_ quand ça améliore le son.
258+
217259
- Utilisez _k-rate_ plutôt que _a-rate_ quand vous voulez économiser de la puissance de calcul au CPU.
260+
218261
- Certains opcodes n’acceptent que des entrées _k-rate_, mais pas les entrées _a-rate_. Dans ce cas, vous devez utiliser des variables _k-rate_.

0 commit comments

Comments
 (0)