-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrealtime.xml
185 lines (169 loc) · 11.8 KB
/
realtime.xml
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<!--translated=yes
authors=Francois Pinot
english cvs version=1.20
// translated field can be yes, no or partially
// Add your name to the existing list of authors
// Add the version number of the file you are translating from the english version number on cvs
// *** Please remember to keep this information up to date! ***
-->
<section id="SpectralRealTime">
<title>Outils pour le traitement spectral en temps réel (opcodes pvs)</title>
<para>
Avec ces opcodes, deux nouvelles facilités fondamentales sont ajoutées à Csound. Ils offrent une
qualité audio améliorée, et une exécution rapide, permettant une analyse et une resynthèse de grande
qualité (avec les transformations) à appliquer en temps réel aux signaux instantanés. Le vocodeur de
phase original de Csound n'est pas changé ; les nouveaux opcodes utilisent un ensemble de fonctions
complètement séparé basé sur <quote>pvoc.c</quote> dans la distribution CARL, écrite par Mark Dolson.
</para>
<para>
Les utilitaires de Csound <link linkend="dnoise"><citetitle>dnoise</citetitle></link> et
<link linkend="src_conv"><citetitle>src_conv</citetitle></link> (également par Dolson, de CARL) utilisent
aussi ce moteur pvoc. pvoc de CARL est aussi la base pour le vocodeur de phase inclu dans le
Composer's Desktop Project. Quelques petites modifications, mais importantes, ont été apportées au code
CARL original pour supporter les flots de données en temp réel.
</para>
<para>
<orderedlist>
<listitem><para>Support du nouveau format de fichier d'analyse PVOC-EX. C'est un format totalement
portable et ouvert (multi plates-formes), supportant trois formats d'analyse, et les signaux
multi-canaux. Actuellement seul le format standard amplitude+fréquence a été implémenté dans les
opcodes, mais le format de fichier lui-même supporte les formats amplitude+phase et le format complexe
(réel-imaginaire). En plus des nouveaux opcodes, les opcodes pvoc originaux de Csound ont été
étendus (avec pour conséquence une qualité audio améliorée dans certains cas) pour lire les
fichiers PVOC-EX aussi bien que le format original (non portable).</para>
<para>Les détails complets de la structure d'un fichier PVOC-EX son disponibles sur le site web :
<ulink url="http://www.cs.bath.ac.uk/~jpff/NOS-DREAM/researchdev/pvocex/pvocex.html"><citetitle>http://www.cs.bath.ac.uk/~jpff/NOS-DREAM/researchdev/pvocex/pvocex.html</citetitle></ulink>.
Ce site donne aussi les détails des programmes de console disponibles librement
<emphasis>pvocex</emphasis> et <emphasis>pvocex2</emphasis> qui peuvent être utilisés pour créer
des fichiers PVOC-EX dans tous les formats supportés.</para></listitem>
<listitem><para>Un nouveau type de signal du domaine fréquentiel, totalement transportable par flot de données,
avec <emphasis>f</emphasis> comme premier caractère. Dans ce document on y fait
référence par <emphasis>fsig</emphasis>. Le support principal des fsigs est fourni par les opcodes
<emphasis>pvsanal</emphasis> et <emphasis>pvsynth</emphasis>, qui effectuent l'analyse et la
resynthèse traditionnelles par recouvrement-addition avec un vocodeur de phase, indépendamment du
taux de contrôle de l'orchestre. La seule obligation est que le taux de contrôle
<emphasis>kr</emphasis> soit supérieur ou égal au taux d'analyse, ce qui peut s'exprimer par
<emphasis>ksmps</emphasis> <= <emphasis>overlap</emphasis>, où <emphasis>overlap</emphasis> est
la distance en échantillons entre deux trames d'analyse, comme spécifié pour
<emphasis>pvsanal</emphasis>. Comme <emphasis>overlap</emphasis> vaut typiquement au moins 128, et
le plus souvent 256, ce n'est pas une restriction coûteuse en pratique. L'opcode
<emphasis>pvsinfo</emphasis> peut être utilisé au moment de l'initialisation pour acquérir les
propriétés d'un fsig.</para>
<para>Le fsig permet la séparation nominale entre les étapes d'analyse et de resynthèse du
vocodeur de phase pour une mise à disposition du programmeur Csound, ce qui permet non seulement
d'employer des alternatives pour l'une ou les deux de ces étapes (pas seulement la resynthèse par
banc d'oscillateur, mais aussi la génération synthétique de flots de données fsig), mais les opcodes
opérant sur le flot fsig peuvent être eux-mêmes plus élémentaires. Ainsi le fsig permet la
création d'un véritable environnement de greffon de flots de données pour les signaux du domaine fréquentiel.
Avec les vieux opcodes pvoc, chaque opcode doit pouvoir agir comme un resynthétiseur, si bien que
des facilités comme la transposition de hauteur sont dupliquées dans chaque opcode ; et dans
la plupart des cas les opcodes ont beaucoup de paramètres. La séparation des étapes d'analyse et
de synthèse au moyen du fsig encourage le développement d'une grande variété d'opcodes qui sont
des briques élémentaires implémentant une ou deux fonctions, et avec lesquelles on peut construire
des processus plus élaborés.</para></listitem>
</orderedlist>
</para>
<para>
Cette réalisation en est encore à ses débuts et présente un caractère expérimental, et il est possible
que la définition précise des opcodes change en réponse aux avis des utilisateurs. De plus, de
nombreuses nouvelles possibilités d'opcode sont ouvertes ; ces facteurs peuvent aussi avoir une
influence rétrospective sur les opcodes présentés ici.
</para>
<para>
Noter que certains paramètres d'opcode ont actuellement une implémentation restreinte ou manquante.
Ceci, au moins en partie, afin de préserver la simplicité des opcodes à ce niveau, et aussi parce qu'ils
concernent d'importantes questions de conception pour lesquelles aucun décision n'a encore été prise,
et pour lesquelles l'opinion des utilisateurs est souhaitée.
</para>
<para>
Un point important au sujet de ce nouveau type de signal est que, parce que le taux d'analyse est
typiquement très inférieur à <emphasis>kr</emphasis>, les nouvelles trames d'analyse ne sont pas
disponibles à chaque k-cycle. En interne, les opcodes tracent <emphasis>ksmps</emphasis>, et
maintiennent également un compteur de trames, afin que les trames soient lues et écrites aux bons
moments ; ce processus est généralement transparent pour l'utilisateur. Cependant, cela signifie
que les signaux de taux-k n'agissent sur un fsig qu'au taux d'analyse, pas à chaque k-cycle. L'opcode
<emphasis>pvsftw</emphasis> retourne un drapeau au taux-k qui est positionné lorque de nouvelles
données fsig sont disponibles.
</para>
<para>
A cause de la nature du système de recouvrement-addition, l'utilisation des ces opcodes infère un
délai, ou latence, petit mais significatif déterminé par la taille de la fenêtre (max(ifftsize,iwinsize)).
Il vaut typiquement 23ms. Dans cette première réalisation, le délai dépasse légèrement le minimum
théorique, et l'on espère qu'il pourra être réduit, lorsque les opcodes seront optimisés pour le
transport par flot de données en temps réel.
</para>
<para>
Les opcodes pour le traitement spectral en temps réel sont
<link linkend="pvsadsyn"><citetitle>pvsadsyn</citetitle></link>,
<link linkend="pvsanal"><citetitle>pvsanal</citetitle></link>,
<link linkend="pvscross"><citetitle>pvscross</citetitle></link>,
<link linkend="pvsfread"><citetitle>pvsfread</citetitle></link>,
<link linkend="pvsftr"><citetitle>pvsftr</citetitle></link>,
<link linkend="pvsftw"><citetitle>pvsftw</citetitle></link>,
<link linkend="pvsinfo"><citetitle>pvsinfo</citetitle></link>,
<link linkend="pvsmaska"><citetitle>pvsmaska</citetitle></link>,
<link linkend="pvsynth"><citetitle>pvsynth</citetitle></link>.
</para>
<para>
De plus il y a un certain nombre d'opcodes disponibles sous forme de
greffons dans Csound 5 et dans le noyau de Csound6. Ce sont
<link linkend="pvstanal"><citetitle>pvstanal</citetitle></link>,
<link linkend="pvsdiskin"><citetitle>pvsdiskin</citetitle></link>,
<link linkend="pvscent"><citetitle>pvscent</citetitle></link>,
<link linkend="pvsdemix"><citetitle>pvsdemix</citetitle></link>,
<link linkend="pvsfreeze"><citetitle>pvsfreeze</citetitle></link>,
<link linkend="pvsbuffer"><citetitle>pvsbuffer</citetitle></link>,
<link linkend="pvsbufread"><citetitle>pvsbufread</citetitle></link>,
<link linkend="pvsbufread2"><citetitle>pvsbufread2</citetitle></link>,
<link linkend="pvscale"><citetitle>pvscale</citetitle></link>,
<link linkend="pvshift"><citetitle>pvshift</citetitle></link>,
<link linkend="pvsifd"><citetitle>pvsifd</citetitle></link>,
<link linkend="pvsinit"><citetitle>pvsinit</citetitle></link>,
<link linkend="pvsin"><citetitle>pvsin</citetitle></link>,
<link linkend="pvsout"><citetitle>pvsout</citetitle></link>,
<link linkend="pvsosc"><citetitle>pvsosc</citetitle></link>,
<link linkend="pvsbin"><citetitle>pvsbin</citetitle></link>,
<link linkend="pvsdisp"><citetitle>pvsdisp</citetitle></link>,
<link linkend="pvsfwrite"><citetitle>pvsfwrite</citetitle></link>,
<link linkend="pvsmix"><citetitle>pvsmix</citetitle></link>,
<link linkend="pvsmooth"><citetitle>pvsmooth</citetitle></link>,
<link linkend="pvsfilter"><citetitle>pvsfilter</citetitle></link>,
<link linkend="pvsblur"><citetitle>pvsblur</citetitle></link>,
<link linkend="pvstencil"><citetitle>pvstencil</citetitle></link>,
<link linkend="pvsarp"><citetitle>pvsarp</citetitle></link>,
<link linkend="pvsvoc"><citetitle>pvsvoc</citetitle></link>,
<link linkend="pvsmorph"><citetitle>pvsmorph</citetitle></link>,
<link linkend="pvsbandp"><citetitle>pvsbandp</citetitle></link>,
<link linkend="pvsbandr"><citetitle>pvsbandr</citetitle></link>,
<link linkend="pvsbandwidth"><citetitle>pvsbandwidth</citetitle></link>,
<link linkend="pvswarp"><citetitle>pvswarp</citetitle></link>,
<link linkend="pvsgain"><citetitle>pvsgain</citetitle></link>,
<link linkend="pvs2tab"><citetitle>pvs2tab</citetitle></link>,
<link linkend="pvstrace"><citetitle>pvstrace</citetitle></link>,
<link linkend="pvsceps"><citetitle>pvsceps</citetitle></link>,
<link linkend="tab2pvs"><citetitle>tab2pvs</citetitle></link>.
</para>
<para>
Un certain nombre d'opcodes sont conçus pour générer et traiter des flots de données de pistes de
partiels. Ce sont
<link linkend="binit"><citetitle>binit</citetitle></link>
<link linkend="partials"><citetitle>partials</citetitle></link>,
<link linkend="part2txt"><citetitle>part2txt</citetitle></link>,
<link linkend="trcross"><citetitle>trcross</citetitle></link>,
<link linkend="trfilter"><citetitle>trfilter</citetitle></link>,
<link linkend="trsplit"><citetitle>trsplit</citetitle></link>,
<link linkend="trmix"><citetitle>trmix</citetitle></link>,
<link linkend="trscale"><citetitle>trscale</citetitle></link>,
<link linkend="trshift"><citetitle>trshift</citetitle></link>,
<link linkend="trlowest"><citetitle>trlowest</citetitle></link>,
<link linkend="trhighest"><citetitle>trhighest</citetitle></link>
<link linkend="tradsyn"><citetitle>tradsyn</citetitle></link>,
<link linkend="sinsyn"><citetitle>sinsyn</citetitle></link>,
<link linkend="resyn"><citetitle>resyn</citetitle></link>,
<link linkend="tabifd"><citetitle>tabifd</citetitle></link>.
</para>
<para>
Voir la section <link linkend="ControlStacks"><citetitle>Piles</citetitle></link> pour une information
sur les opcodes qui peuvent empiler les signaux de type f.
</para>
</section>