Académique Documents
Professionnel Documents
Culture Documents
• Research reports
• Musical works
• Software
OpenMusic
Om2Csound
Biblioth•que de modules de gŽnŽration de scores pour Csound
version 1
Ircam
1, place Igor-Stravinsky
F-75004 Paris
Tel. 01 44 78 49 62
Fax 01 44 78 15 40
E-mail ircam-doc@ircam.fr
OpenMusic - Om2Csound - 1
Groupe d'utilisateurs IRCAM
DŽpartement de la Valorisation
Ircam
1, Place Stravinsky
F-75004 Paris
France
TŽl. 01 44 78 49 62
Fax 01 44 78 15 40
Courrier Žlectronique: bousac@ircam.fr
OpenMusic - Om2Csound - 2
Contenu
Introduction................................................................................................................. 4
Structure de la biblioth•que Om2Csound.................................................................... 5
Structure gŽnŽrale du Score de Csound ....................................................................................7
Les tables ...................................................................................................................................................7
Les notes ....................................................................................................................................................7
La dŽclaration e .........................................................................................................................................8
instr...............................................................................................................................................15
instrument0 ..............................................................................................................................................15
instrument1 ..............................................................................................................................................18
make-obj-snd ...........................................................................................................................................19
edit ................................................................................................................................................22
Editsco .....................................................................................................................................................22
Change-col...............................................................................................................................................23
bpf-utilities...................................................................................................................................27
transfer .....................................................................................................................................................27
sampler.....................................................................................................................................................28
bpf-interpol ..............................................................................................................................................34
bpf-yx-interpol.........................................................................................................................................35
utilities ..........................................................................................................................................40
list-interpol...............................................................................................................................................40
inharm-ser ................................................................................................................................................41
Annexe ...................................................................................................................... 43
Bibliographie............................................................................................................. 44
Index ......................................................................................................................... 46
OpenMusic - Om2Csound - 3
Introduction
1
Csound/Edit-sco est une biblioth•que pour la gŽnŽration de ÇÊscoresÊÈ de Csound Žcrite par Laurent
Pottier et Mikhail Malt.
2
Csound - A Manual for the Audio Processing System and Supporting Programms with Tutorials,
Barry Vercoe, Media Lab, MIT.
OpenMusic - Om2Csound - 4
Structure de la
biblioth•que Om2Csound
Csound nŽcessite deux fichiersÊ: ÇÊorchestraÊÈ et ÇÊscoreÊÈ, le premier Žtant pour
la description sous forme dÕalgorithme des instruments de synth•se, le second est une
partition (une succession dÕordres) fournissant les param•tres nŽcessaires ˆ lÕexŽcution
de la synth•se.
Dans cette livraison3 de la biblioth•que, on trouvera la section score qui ne traite
que le fichier ÇÊscoreÊÈ. Cette section est organisŽe en 6 sous-menus dŽcrits plus bas.
3
La partie ÇÊorchestraÊÈ est en cours de dŽveloppement et sera disponible
ultŽrieurement.
OpenMusic - Om2Csound - 5
_
OpenMusic - Om2Csound - 6
Structure gŽnŽrale du Score de Csound
Le fichier score prŽsente trois parties majeuresÊ: les tables, les notes et la
dŽclaration finale du score. La dŽclaration de chacune de ces parties est caractŽrisŽe par
un opcode (un caract•re rŽservŽ)Ê: f pour les tables, i pour les notes, et e pour la fin du
score.
Les tables
f p1 p2 p3 p4É, pn
p1 numŽro de table
p2 moment (onset) de la disponibilitŽ de la table
p3 taille de la table
p4 numŽro de la GEN subroutine
É
les autres param•tres dŽpendent de p4 (i.e., de la Gen utilisŽe).
Les notes
OpenMusic - Om2Csound - 7
i p1 p2 p3ÊÉ, pn
La dŽclaration e
f1 0 512 9 1 1 0
f2 0 513 5 512 512 1 tables
;p1 p2 p3 p4 p5 p6 p7 commentaires
i1 0 10 4000 273 1 2
i1 0 7.5000 2000 455 1 2
i1 0 4.5000 2000 576 1 2 notes
i1 0 6.5000 1500 648 1 2
i1 0 4 1501 864 1 2
e
fin de fichier
OpenMusic - Om2Csound - 8
M•me exemple sous forme de patch :
OpenMusic - Om2Csound - 9
Modules du menu Score
ftable
table
formatage de donnŽes pour les fonctions
entrŽes
table (number) numŽro de table (p1)
ttab (number) temps en secondes pour dŽclencher la table (p2)
points (number) nombre de points dans la table (p3)
gen (number) numŽro de la GEN subroutine (p4)
pargen (list) liste contenant les param•tres auxiliaires (p5, p6,
p7,É) spŽcifiques ˆ la GEN subroutine.
Le module table est utilisŽ pour gŽnŽrer les param•tres des fonctions de Csound.
Ces tables sont des donnŽes destinŽes aux GEN subroutines. Selon la GEN utilisŽe,
lÕentrŽe pargen nŽcessite un format particulier (voir le manuel de Csound). Ce format
peut aussi •tre entrŽ via les modules ÇÊpargenÊÈ dŽcrits plus loin. Ce module ne
concerne donc que les dŽclarations de type ÇÊfÊÈ.
ExÊ:
OM->((f 1 0 4096 10 1 2))
OpenMusic - Om2Csound - 10
pargen57
entrŽes
bpf (bpf) un objet bpf
points (number) nombre de points de la table (p3)
y-min (number) valeur minimale des y
y-max (number) valeur maximale des y
ndec (number) nombre des dŽcimales
OpenMusic - Om2Csound - 11
Prenons une bpf et dessinons 9 points en sÕassurant que les points du dŽbut et de
la fin sont bien ancrŽs au point 0 des ordonnŽes.
OpenMusic - Om2Csound - 12
pargen09
entrŽes
pn (t) proportions des harmoniques par rapport au premier
str (t) intensitŽs relatives des harmoniques
phs (t) valeurs des phases
npart (number) nombre des dŽcimales pour les nouveaux param•tres
OpenMusic - Om2Csound - 13
pargen15
entrŽes
xint (number) limite infŽrieure de lÕintervalle dŽfinissant
le polyn™me (-xint)
xamp (number) limite supŽrieure de lÕintervalle dŽfinissant
le polyn™me (+xint)
ho (list) une liste d'intensitŽs relatives des harmoniques
phs (list) une liste de phases
Le module pargen15 est utilisŽ pour gŽnŽrer une table utilisant la GEN15 qui
crŽe deux tables de polyn™mes.
OpenMusic - Om2Csound - 14
instr
instrument0
entrŽes
instr (number) numŽro de lÕinstrument
onset (list) la date de chaque Žv•nement (en secs.)
durs (list) les durŽes en secondes
add lst (list) param•tres supplŽmentaires
(entrŽes extensibles)
Le module instrument0 est un module extensible qui gŽn•re un score pour •tre
imprimŽ ˆ partir de la bo”te editsco et ne concerne que les dŽclarations de donnŽes de
type ÇÊiÊÈ.
Dans lÕexemple ci-dessous, nous avons pris ˆ partir dÕun fichier Midi une ligne
mŽlodique (sans accords) que nous entrons dans une chord-seq par lÕentrŽe <object>.
Ainsi nous obtenons un objet contenant lÕinformation nŽcessaire ˆ la rŽalisation dÕun
score pour CsoundÊ: les hauteurs, exprimŽes en midicents, les onsets et les durŽes en
millisecondes et la vŽlocitŽ exprimŽe linŽairement de 0 ˆ 100.
La deuxi•me Žtape consiste ˆ convertir ces donnŽesÊ: les midicents en Hz, les
onsets et les durŽes en secondes (les diviser par 1000).Ê
OpenMusic - Om2Csound - 15
On entre ces donnŽes converties dans le module instrument0 selon lÕordre des
param•tres, sachant que le premier param•tre p1 est rŽservŽ au nom de lÕinstrument, le
deuxi•me param•tre p2 aux ÇÊonsetsÊÈ et le troisi•me pram•tre p3 aux durŽes, le reste
Žtant relatif ˆ lÕinstrument donnŽ.
La sortie du module instrument0 est reliŽe au module editsco qui formatera le
texte pour Csound.
OpenMusic - Om2Csound - 16
ScoreÊ:
f1 0 4096 10 1
f2 0 2048 7 0.0650 205 0.4570 205 1.0000 204 0.9780 205 0.8910 205 0.7170
205 0.6090 205 0.4130 204 0.1520 410 0.0000
;p1 p2 p3 p4 p5
i1 0.0000 1.0420 10000 293.6648
i1 1.0420 1.0460 10000 440.0000
i1 2.0880 1.0410 10000 349.2282
i1 3.1290 1.0460 10000 293.6648
i1 4.1750 1.0420 10000 277.1826
i1 5.2170 0.5210 10000 293.6648
i1 5.7380 0.5240 10000 329.6276
i1 6.2620 1.3050 10000 349.2282
i1 7.5670 0.2580 10000 391.9954
i1 7.8250 0.2630 10000 349.2282
i1 8.0880 0.2620 10000 329.6276
i1 8.3500 0.6620 10000 293.6648
e
OpenMusic - Om2Csound - 17
instrument1
entrŽes
instr (number) numŽro de lÕinstrument
onset (list) la date de chaque ŽvŽnement (en secondes)
si ce param•tre est un atome et non une liste,
toutes les notes seront jouŽes simultanŽment
durs (list) les durŽes en secondes
p4 (list) param•tre 4
p4 (list) param•tre 5
others (list) param•tres supplŽmentaires donnŽs
sous forme de liste ou de liste de liste
OpenMusic - Om2Csound - 18
make-obj-snd
entrŽes
lins (list) numŽro de lÕinstrument
lonsets (list) liste des onsets (en secondes)
ldurs (list) liste des durŽes (en secondes)
lp4 (list) param•tre p4
lp5 (list) param•tre p5 (rŽservŽ aux notes)
args (list) param•tres supplŽmentaires
OM->((5900 6600 7400 7800) (6400 7400 7900) (6900 7300 7800) (7600) (7800 6200
7400) (7600) (7400) (7300) (7100 6700) (7600) (7400 6400) (7300) (7400 6500)
(7100) (7000 6600) (6700) (6600) (6400) (6200 6600 7100))
OpenMusic - Om2Csound - 21
qui seront convertis en HzÊ:
OM->((247 370 587 740) (330 587 784) (440 554 740) (659) (740 294 587) (659)
(587) (554) (494 392) (659) (587 330) (554) (587 349) (494) (466 370) (392)
(370) (330) (294 370 494))
Les accords seront sous le format dÕune liste ˆ n notes comme par exemple (247
370 587 740). Les notes jouŽes seules seront aussi dans une liste ˆ un ŽlŽment
seulement comme (659). Ceci permet le formatage des autres param•tres comme celui
des onsets (p2) qui reprŽsente une liste simple. Dans le cas o• on entre une liste simple
dans <lmidic > on obtiendra une succession de notes simples.
edit
Editsco
Ždition du score
entrŽes
OpenMusic - Om2Csound - 22
args (list) prend en entrŽe les sorties des modules
table instrument0, instrument1 et
make-obj-snd.
Ce module est extensible. Il est possible
aussi
dÕinclure des commentaires (Ê;) ou autres
ÇÊopcodesÊÈ comme ( s), (a) ou ( t), et ceci
toujours sous forme de liste (entre
parenth•ses).
Change-col
entrŽes
op (symbol) nature de lÕopŽration arithmŽtique
scal (number) facteur
col (number) numŽro de la colonne (1 = p2)
lig-b (number) numŽro de la premi•re ligne
lig-e (number) numŽro de la derni•re ligne
OpenMusic - Om2Csound - 23
Dans cet exemple nous modifions le fichier score de lÕexemple ÇÊsimple scoreÊÈ
en multipliant le temps dÕattaque de chaque Žv•nement (les onsets) par 2.
OpenMusic - Om2Csound - 24
Remarquons quÕˆ lÕentrŽe <col > la valeur 1 est assignŽe, Žtant donnŽ que les
onsets se trouvent dans le champs de param•tres de lÕinstrument en p2. A LÕentrŽe <lig-
e >, on a assignŽ la valeur 3 car nous commen•ons ˆ modifier ˆ partir de la ligne 3 du
fichier, les deux premi•res lignes ne comportant que des tables.
f1 0 4096 10 1
f2 0 2048 7 0.0000 205 0.4570 205 1.0000
204 0.9780 205 0.8910 205 0.7170 205
0.6090 205
0.4130 204 0.1520 410 0.0000
;p1 p2 p3 p4 p5
OpenMusic - Om2Csound - 25
f1 0 4096 10 1
f2 0 2048 7 0 205 0.457 205 1 204 0.978 205
0.891 205 0.717 205 0.609 205 0.413 204 0.152 410 0
;p1 p2 p3 p4 p5
i1 0 1.042 80 293.6648
i1 2.084 1.046 80 440
i1 4.176 1.041 80 349.2282
i1 6.258 1.046 80 293.6648
i1 8.35 1.042 80 277.1826
i1 10.434 0.521 80 293.6648
i1 11.476 0.524 80 329.6276
i1 12.524 1.305 80 349.2282
i1 15.134 0.258 80 391.9954
i1 15.65 0.263 80 349.2282
i1 16.176 0.262 80 329.6276
i1 16.7 0.662 80 293.6648
e
OpenMusic - Om2Csound - 26
bpf-utilities
transfer
fonction de transfert
entrŽes
bpf (bpf) prend une bpf en entrŽe
x-val (t) un nombre ou une liste de valeurs de x
OpenMusic - Om2Csound - 27
sampler
Žchantillonnage de bpf
entrŽes
bpf (bpf) prend en entrŽe une bpf
mode (menu) mode de mise ˆ lÕechelle (xfact, max, sum)
nsamp (number) nombre dÕŽchantillons
xmin (number) valeur minimale de x
xmax (number) valeur maximale de x
oper (number) facteur de mise ˆ lÕŽchelle des y
ndec (number) nombre des dŽcimales
menu
xfact les Žchantillons y seront multipliŽs par la valeur <oper>
max les Žchantillons y seront mis ˆ lÕŽchelle tel que la valeur
maximale est Žgale ˆ <oper>
sum les Žchantillons y seront mis ˆ lÕŽchelle tel que leur somme
est Žgale ˆ <oper>
OpenMusic - Om2Csound - 28
xfact
Quand le mode xfact est activŽ, lÕŽchantillonnage sÕeffectue avec un facteur
multipliant les y par <oper >.
Dans lÕexemple ci-dessous nous avons gŽnŽrŽ un sinus en utilisant le module
sample-fun. LÕŽchantillonnage sÕeffectue sur 100 points allant de x=21 ˆ x=50 avec un
facteur multiplicatif de 0.5 rŽduisant les valeurs y de moitiŽ.
OpenMusic - Om2Csound - 29
OpenMusic - Om2Csound - 30
max
Le mode max permet lÕŽchantillonnage avec une mise ˆ lÕŽchelle des y sur un
plafond (maximum) <oper>. Ceci est utile quand on veut charger des valeurs ne
dŽpassant pas une certaine limite dans la GEN02 qui sert en gŽnŽral de rŽservoir de
donnŽes numŽriques.
OpenMusic - Om2Csound - 31
sum
Le mode sum est destinŽ ˆ Žchantillonner les y tel que leurs somme soit Žgale ˆ
<oper>. Nous prŽsentons un exemple dÕŽchantillonnage pour la GEN09Ê:
Dans cet exemple, nous utiliserons deux modules pour spŽcifier dÕune part le rang de 24
partiels et leur rapport qui est rendu inharmonique ˆ lÕaide du module inharm-ser
dŽcrit plus loin, et dÕautre part, le rapport dÕintensitŽ relatif de ces partiels par une bpf (
ces deux donnŽes sont destinŽes aux deux premi•res entrŽes de pargen09).
Le module sampler est utilisŽ ici en mode sum. Dans lÕentrŽe <nsamp > nous
entrons 24 afin dÕobtenir 24 Žchantillons. Dans les deux entrŽes qui suivent, <xmin > et
<xmax > nous dŽterminons la section dÕŽchantillonnage par rapport ˆ lÕaxe des x, qui ici
va de 0 ˆ 100. Ces param•tres sont importants car ils dŽpendent directement des
donnŽes de la bpf. Il faut sÕassurer que les segments dessinŽs ou entrŽs numŽriquement
couvrent bien cet espace sur lÕaxe des x afin dÕŽviter un Žchantillonnage de valeurs
nulles.
Dans lÕentrŽe <oper> nous avons mis la valeur 1 car nous voulons obtenir les
proportions des intensitŽs relatives qui sont reprŽsentŽs sur lÕaxe des y. Ces valeurs
devant •tre des nombres fractionnaires nous entrons 3 dans <ndec > afin de rŽduire le
nombre de chiffres apr•s la virgule et de ne pas charger inutilement le fichier.
OpenMusic - Om2Csound - 32
OpenMusic - Om2Csound - 33
bpf-interpol
entrŽes
OpenMusic - Om2Csound - 34
bpf-yx-interpol
entrŽes
bpfa (bpf) bpf 1
bpfb (bpf) bpf 2
nvals (number) nombre de rŽsultats voulus (2 Žtant la valeur par
dŽfaut qui donne les 2 bpfs sans interpolation)
sorties
sortie1 (list) donne une liste des x communs aux deux bpfs
sortie2 (list) donne une liste de liste des y interpolŽs correspondants
aux x de la premi•re sortie
OpenMusic - Om2Csound - 36
Courbe positive (curve = 1)Ê:
OpenMusic - Om2Csound - 37
conversion
lin->db
entrŽes
amps (t) nombre ou liste de valeur dÕamplitude lin•aire
OpenMusic - Om2Csound - 38
db->lin
entrŽes
amps (t) nombre ou liste de valeur dÕamplitude en dŽcibels
OpenMusic - Om2Csound - 39
utilities
list-interpol
entrŽes
list1 (list) liste 1 (doit •tre une liste simple)
list2 (list) liste 2 (doit •tre une liste simple)
nvals (number) nombre de rŽsultats voulus (2 Žtant la valeur par
dŽfaut qui donne les 2 listes sans interpolation)
curve (number) courbe dÕinterpolation (0 = linŽaire)
exÊ:
(om::list-interpol '(100 75 50 25) '(25 50 75 100) 6 0)
- ((100.0 75.0 50.0 25.0) (85.0 70.0 55.0 40.0) (70.0 65.0 60.0 55.0)
(55.0 60.0 65.0 70.0) (40.0 55.0 70.0 85.0) (25.0 50.0 75.0 100.0))
OpenMusic - Om2Csound - 40
inharm-ser
entrŽes
begin (number) frŽquence fondamentale
distortion (number) taux de distortion (1 = pas de distortion)
npartls (number) nombre de partiels voulu
OpenMusic - Om2Csound - 41
OpenMusic - Om2Csound - 42
Annexe
LÕorchestre ÇÊsimple.orcÊÈ utilisŽ dans les exemplesÊ:
sr= 44100
kr= 441
ksmps= 100
nchnls= 1
instr 1
iamp = ampdb(p4)
idur = p3
ifq1 = p5
a2 oscili iamp,1/idur,2
a1 oscili a2,ifq1,1
out a1
endin
OpenMusic - Om2Csound - 43
Bibliographie
DODGE, C., et T.A. Jerse, Computer Music: Synthesis, Composition, and Performance,
Schirmer Books, 1985.
OpenMusic - Om2Csound - 44
Index
add lst,15 Interpolation de deux bpfs,34,35
Agon C.,1 Interpolation de deux listes,40
Amplitude,38,39 ldurs,19
amps,38,39 lin->db,38
args,19,23 lins,19
Assayag G.,1 list1,40
begin,41 list2,40
bpf,11,12,27,28,32,34,35 list-interpol,40
bpfa,34,35 lonsets,19
bpfb,34,35 lp4,19
bpf-interpol,34 lp5,19
bpf-utilities,27 make-obj-snd,19,23
bpf-yx-interpol,35 Malt M.,1
Change-col,23 max,28,31
chordseq,19,21 mode,28,29,31,32
chord-seq,15,19 Modification,23
Conversion,38 ndec,11,28,32
curve,34,35,36,37,40 npart,13
db->lin,39 npartls,41
DŽcibel,38,39 nsamp,28,32
Distorsion de sŽrie harmonique,41 nvals,34,35,40
distortion,41 onset,7,8,15,18
durs,15,18 oper,28,29,31,32
Echantillonnage de bpf,28 others,18
edit,22 p4,7,8,10,12,17,18,19,25,26,43
Edition,22 pargen,10
editsco,15,16,22 pargen09,13,32
Fonction de transfert,27 pargen15,14
ftable,10 pargen57,11,12
gen,10 phs,13,14
GEN02,31 pn,7,8,13
GEN05,11,12 points,10,11,12,29
GEN07,11 Pottier L.,1
GEN08,12 sampler,13,28,32
GEN09,13,32 Score,10
GEN15,14 simple score.sco,25
Haddad K.,1 Simple.orc,43
ho,14 str,13
inharm-ser,32,41 sum,28,32
instr,15,18,43 table,7,10,11,12,14,23
instrument0,15,16,18,23 transfer,27
instrument1,18,23 ttab,10
OpenMusic - Om2Csound - 46
utilities,40 xmin,28,32
xamp,14 x-val,27
xfact,28,29 y-max,11
xint,14 y-min,11
xmax,28,32
OpenMusic - Om2Csound - 47