Skip to content

Commit 14bf027

Browse files
committed
some changes
2 parents 4f7572e + c957689 commit 14bf027

17 files changed

+596
-352
lines changed

book/14-b-methods-of-writing-csound-scores.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ written:
184184

185185
To test this, first save this file as _print.py_ in the same folder
186186
where your .csd examples are:
187+
187188
```python
188189

189190
from sys import argv
@@ -219,7 +220,7 @@ And again a complaint about the invalid score file:
219220

220221
To get rid of the complaints we must write the score file. This is a simple example, saved as _test.py_:
221222

222-
``` python
223+
```python
223224
from sys import argv
224225
print("Script = '%s'" % argv[0])
225226
print("File to read = '%s'" % argv[1])
@@ -230,7 +231,7 @@ with open(argv[2], 'w') as out:
230231

231232
Which is called in this Csound file:
232233

233-
``` csound-csd
234+
```csound-csd
234235
<CsoundSynthesizer>
235236
<CsInstruments>
236237
instr 1

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

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# 01 Bonjour Csound
22

33
## Ce que vous apprendrez dans ce tutoriel
4+
45
- Comment créer et émettre un son sinusoïdal
56
- Que sont les **opcodes** dans Csound
67
- Quelle est la signification de l’**audio rate / fréquence d’échantillonnage** dans Csound
@@ -9,22 +10,24 @@
910
- Qu’est-ce qu’une **partition/score** Csound
1011

1112
## Qu’est-ce qu’un oscillateur sinusoïdal / sine oscillator
13+
1214
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 :
1315

1416
![Onde sinusoïdale serpent](../resources/images/01-GS-01-sine.png)
1517

16-
17-
1818
Pour produire une onde sinusoïdale, Csound utilise un oscillateur. Un oscillateur nécessite certaines entrées pour fonctionner :
19+
1920
1. Une amplitude maximum de sortie. Ce qui résultera en un son plus ou moins fort.
2021
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.
2122

2223
## Un oscillateur sinusoïdal dans Csound : Opcode et Arguments
24+
2325
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_.
2426

2527
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_.
2628

2729
Les entrées d’un opcode sont appelées **arguments** et sont écrites entre parenthèses immédiatement après le nom de l’opcode. Donc `poscil(0.2,400)` signifie : L’opcode `poscil` prend deux arguments en entrée :
30+
2831
- Le premier argument est le nombre `0.2`.
2932
- Le second argument est le nombre `400`.
3033

@@ -34,7 +37,8 @@ Cette manière d’écrire du code est commune à de nombreux langages de progra
3437
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.
3538

3639
## Le flux d’un signal et son code
37-
Nous créons maintenant une onde sinusoïdale d’une amplitude de 0.2 et de 400 cycles par seconde (Hz).
40+
41+
Nous créons maintenant une onde sinusoïdale d’une amplitude de 0.2 et de 400 cycles par seconde (Hz).
3842
Nous nommerons ce signal _aSine_ car il s’agit d’un signal **a**udio. Le caractère **a** au début du nom de la variable signifie exactement ça.
3943

4044
Un signal audio est un signal qui produit une nouvelle valeur à chaque sample/échantillon. (Apprenez-en davantage [ici](https://flossmanual.csound.com/basics/digital-audio) sur les samples et les _sample rates / taux d’échantillonnage_).
@@ -46,6 +50,7 @@ aSine = poscil:a(0.2,400)
4650
Cela signifie : Le signal _aSine_ est créé par l’opcode `poscil` au taux audio / audio rate (`:a`), et les entrées pour `poscil` sont 0.2 pour l’amplitude, et 400 pour la fréquence.
4751

4852
Pour sortir le signal (pour que nous puissions l’entendre), nous introduisons l’opcode `outall`. Cet opcode envoie un signal audio à tous les canaux de sortie disponibles.
53+
4954
```
5055
outall(aSine)
5156
```
@@ -54,7 +59,7 @@ Notez que le signal _aSine_ est d’abord la sortie de l’oscillateur, puis dev
5459

5560
Nous pouvons dessiner le flux de ce programme comme ceci :
5661

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

5964
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_.
6065

@@ -63,11 +68,14 @@ Sur le côté gauche, vous voyez la chaine entre les entrées, l’opcode et la
6368
À 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).
6469

6570
## Votre premier instrument Csound
71+
6672
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é :
73+
6774
- `instr` à son début
6875
- et `endin` à sa fin.
6976

7077
Après le mot-clé `instr`, séparé par un espace, nous assignons un nombre (1, 2, 3, …) ou un nom à l’instrument. Nommons notre instrument "Hello", et tapons le code que nous venons de discuter :
78+
7179
```
7280
instr Hello
7381
aSine = poscil:a(0.2,400)
@@ -76,6 +84,7 @@ endin
7684
```
7785

7886
### Exemple
87+
7988
Nous somme maintenant prêt à exécuter notre code. Tout ce qui nous reste à faire est d’inclure le code de notre instrument dans un fichier Csound complet.
8089

8190
Regardez le code de l’exemple. Pouvez-vous repérer le code de l’instrument ?
@@ -107,18 +116,23 @@ i "Bonjour" 0 2
107116
</CsScore>
108117
</CsoundSynthesizer>
109118
```
119+
110120
#### La partition / score Csound
111121

112122
En bas de notre exemple de code, vous voyez ceci :
123+
113124
```
114125
<CsScore>
115126
i "Bonjour" 0 2
116127
</CsScore>
117128
```
129+
118130
C’est la section **Partition / Score** du fichier .csd. Elle commence par la balise \<CsScore> et se termine par la balise \</CsScore>. Entre ces deux balises, il y a cette ligne de partition :
131+
119132
```
120133
i "Bonjour" 0 2
121134
```
135+
122136
Chaque colonne (champ de paramètre / parameter field) spécifie une certaine information :
123137

124138
- `"Bonjour"` : L’instrument auquel cette ligne de partition se réfère.
@@ -142,16 +156,20 @@ Chaque colonne (champ de paramètre / parameter field) spécifie une certaine in
142156
## Opcodes, Mots-Clés et termes que vous avez appris dans ce tutoriel
143157

144158
### Opcodes
159+
145160
- `poscil:a(Amplitude,Frequence)` : oscillateur au taux audio, avec entrées d’amplitude et de fréquence.
146161
- `outall(aSignal)` : envoie _aSignal_ vers les canaux de sortie physiques.
147162

148163
### Mots-clés
164+
149165
- `instr ... endin` sont les mots-clés qui commencent et finissent une définition d’instrument.
150166

151167
### Termes
168+
152169
- Un signal à la _fréquence audio / audio rate_ ou _a-rate_ est mis à jour à chaque sample/échantillon.
153170

154171
## Avançons…
172+
155173
Avec le tutoriel suivant : [02_Bonjour Fréquences](15-f-GS-fr-02.md)
156174

157175
## Ou lisez quelques informations supplémentaires ici
@@ -175,33 +193,45 @@ Bien que la réalité sonore soit un peu plus complexe, cela montre que les onde
175193
Vous trouverez plus d'informations à ce sujet dans le chapitre [Synthèse additive](https://flossmanual.csound.com/sound-synthesis/additive-synthesis) et dans le chapitre [Résynthèse spectrale](https://flossmanual.csound.com/sound-modification/fourier-analysis-spectral-processing) de ce livre.
176194

177195
### Deux façons d’écrire du code dans Csound : la façon Traditionnelle, et la façon fonctionnelle
196+
178197
Vous êtes peut-être surpris de voir le code Csound écrit de la façon décrite ci-dessus. En fait, la façon classique d’écrire du code Csound ressemble à ceci :
198+
179199
```
180200
aSine poscil 0.2, 400
181201
outall aSine
182202
```
203+
183204
Vous pouvez sans problème continuer d’écrire le code Csound ainsi. Les raisons pour lesquelles j’utilise l’écriture fonctionnelle dans ce tutoriel sont :
205+
184206
1. Nous sommes tous familiarisés avec cette manière de déclarer une variable `y` à gauche comme étant la somme d’une autre variable `x` plus deux : `y = x + 2`.
185207
2. Comme mentionné plus haut, la plupart des langages de programmation utilisent une syntaxe similaire, dans la forme `sortie = fonction(arguments)`. Donc pour les personnes ayant quelques connaissances en programmation, c’est une aide à l’apprentissage de Csound.
186208
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.
187209
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.
188210

211+
<<<<<<< HEAD
189212
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.
190213
J’ai essayé et chez moi ça plante. Donc pas de lettres accentuées, pas de œ et autres signes propres au français.
214+
=======
215+
NOTE DU TRADUCTEUR pour les francophones : Sauf dans les commentaires où ça ne pose aucun
216+
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.
217+
>>>>>>> c9576890a19c871cb299cf2796c5d68c80ef27f0
191218
192219
## Au sujet de ces tutoriels
220+
193221
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.
194222

195223
J’espère que ce tutoriel permettra à davantage de musiciens de réaliser à quel point il était et reste admirable et fructueux de transformer le plus ancien langage de programmation audio en un langage moderne, sans perdre aucune composition réalisée avec Csound, même écrite il y a de nombreuses années.
196224

197225
Chaque tutoriel comporte une première partie à lire _impérativement_, suivie d’une partie facultative (dans laquelle se trouvent bien sûr les choses les plus intéressantes). Pour que quelque chose au moins dans ce monde soit stable, chaque partie à lire _impérativement_ comporte cinq rubriques, et chaque partie à lire _facultativement_ en comporte trois. En fait, j’avais prévu 4+3, mais j’ai demandé à Csound qui m’a répondu :
226+
198227
```
199228
if 4+3 == 7 then
200229
"Écrivez ce Tutoriel!\n"
201230
else
202231
8!
203232
endif
204233
```
234+
205235
J’ai pris cela comme une révélation et j’ai opté pour 5+3 entêtes, afin de satisfaire également l’exigence `8!`. D’après mon expérience, il vaut toujours mieux satisfaire les deux dieux d’une branche conditionnelle.
206236

207237
Les parties "À lire absolument" comprennent également une section "À faire absolument". Tout d’abord un exemple central, oui très central, substantiel, opportun, agréable et bien sûr très instructif. Puis une section "Essayez vous-même" qui représente en quelque sorte le revers de la médaille : Autant il est facile d’appuyer sur le bouton "Exécuter/Run", autant il sera peut-être difficile de résoudre ces maudits exercices. Mais, pour citer John Ffitch : "Nous sommes tous passés par là…".

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

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
- Comment un **document .csd** Csound est structuré :
1111

12-
- Que sont les **CsOptions** et
12+
- Que sont les **CsOptions** et
1313

14-
- Qu’est-ce que la section **CsInstruments** ou **orchestra**.
14+
- Qu’est-ce que la section **CsInstruments** ou **orchestra**.
1515

1616
## Une ligne pour la fréquence
1717

@@ -27,21 +27,36 @@ Le cas le plus simple de ce genre de mouvement est une ligne. Nous avons besoin
2727

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

30-
![Ligne de fréquence.](../resources/images/01-GS-02-a.png)
30+
![Ligne de fréquence.](../resources/images/01-GS-02-a.png)
3131

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

35+
<<<<<<< HEAD
3336
Note : Acoustiquement, cette façon d’appliquer un _glissando_ est discutable. Nous en parlerons dans le [Tutoriel 05](15-i-GS-fr-05.md).
3437

3538
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.
39+
=======
40+
Note 2 : Ne devrions-nous pas dire : "Voici une ligne qui se déplace
41+
depuis 500 Hz jusqu'à 400 Hz,
42+
en 0.5 secondes",
43+
plutôt que "Voici une ligne qui se déplace depuis 500 jusqu'à 400
44+
en 05 secondes" ?
45+
Non. La ligne produit des nombres. Ces nombres peuvent être utilisés
46+
pour des fréquences,
47+
mais peuvent avoir une signification différente dans un autre contexte.
48+
>>>>>>> c9576890a19c871cb299cf2796c5d68c80ef27f0
3649
3750
## Une ligne Dessinée avec l’opcode 'linseg'
3851

3952
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.
4053

4154
Voici le code Csound pour ce mouvement linéaire :
55+
4256
```
4357
kFreq = linseg:k(500, 0.5, 400)
4458
```
59+
4560
## Signal k-rate (à la fréquence de contrôle)
4661

4762
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 ?
@@ -50,14 +65,14 @@ Le temps fondamental est donné par la **sample rate / fréquence d’échantill
5065

5166
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**.
5267

53-
![audio rate vs control rate](../resources/images/01-GS-02-b.png)
54-
68+
![audio rate vs control rate](../resources/images/01-GS-02-b.png)
5569

5670
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_.
5771

5872
Après l’opcode, avant la parenthèse, nous plaçons `:k` pour signifier que cet opcode utilise la fréquence de contrôle comme résolution temporelle.
5973

6074
Je recommande toujours d’utiliser **k** ou **a** aux deux positions :
75+
6176
- À gauche de la variable, et aussi
6277
- à droite, juste après le opcode.
6378

@@ -70,7 +85,7 @@ Vous en apprendre plus sur _k-rate_ dans le prochain tutoriel.
7085

7186
## Exemple
7287

73-
Appuyez sur le bouton "Play". Vous entendrez un son dont la hauteur descend.
88+
Appuyez sur le bouton "Play". Vous entendrez un son dont la hauteur descend.
7489
Pouvez-vous voir comment la ligne mobile est introduite dans l’oscillateur ?
7590

7691
```
@@ -102,7 +117,7 @@ i "Bonjour" 0 2
102117

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

105-
![Input output insertions](../resources/images/01-GS-02-c.png)
120+
![Input output insertions](../resources/images/01-GS-02-c.png)
106121

107122
- 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.
108123

@@ -123,6 +138,7 @@ Comme vous pouvez le voir, ces trois paires de balises sont englobées entre une
123138
```
124139
<CsoundSynthesizer>...</CsoundSynthesizer>
125140
```
141+
126142
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.
127143

128144
## Essayez-le vous-même
@@ -179,7 +195,7 @@ endin
179195

180196
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 :
181197

182-
![line vs linseg](../resources/images/01-GS-02-d.png)
198+
![line vs linseg](../resources/images/01-GS-02-d.png)
183199

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

@@ -251,7 +267,6 @@ aSine = poscil:a(0.2,aFreq)
251267
outall(aSine)
252268
```
253269

254-
255270
Un simple avis :
256271

257272
- Utilisez toujours _a-rate_ quand ça améliore le son.

0 commit comments

Comments
 (0)