adsyn — La sortie est la somme d'un ensemble de sinusoïdes contrôlées individuellement, jouées par un banc d'oscillateurs.
La sortie est la somme d'un ensemble de sinusoïdes contrôlées individuellement, jouées par un banc d'oscillateurs.
ifilcod -- entier ou chaîne de caractères dénotant un fichier de contrôle issu de l'analyse d'un signal audio. Un entier dénote le suffixe d'un fichier adsyn.m ou pvoc.m ; une chaîne de caractères (entre doubles apostrophes) donne un nom de fichier, optionnellement un nom de chemin complet. S'il ne s'agit pas d'un chemin complet, le fichier est d'abord recherché dans le répertoire courant, puis dans celui qui est indiqué par la variable d'environnement SADIR (si elle est définie). Le fichier de contrôle adsyn contient les valeurs des points charnière des enveloppes d'amplitude et de fréquence, tandis que le fichier de contrôle pvoc contient des données similaires organisées pour une resynthèse par tfr. L'utilisation de la mémoire dépend de la taille des fichiers impliqués, qui sont lus et maintenus entièrement en mémoire durant le calcul tout en étant partagés par les appels multiples (voir aussi lpread).
kamod -- facteur d'amplitude des partiels additionnés.
kfmod -- facteur de fréquence des partiels additionnés. C'est un facteur de transposition au taux de contrôle : une valeur de 1 signifie pas de transposition, 1,5 transpose d'un quinte juste ascendante, et 0,5 d'une octave descendante.
ksmod -- facteur de vitesse des partiels additionnés.
adsyn synthétise des timbres dynamiques complexes par la méthode de synthèse additive. N'importe quel nombre de sinusoïdes, contrôlées individuellement en fréquence et en amplitude, peuvent être additionnées par une unité arithmétique très rapide pour produire un résultat de grande qualité.
Les composantes sinusoïdales sont décrites dans un fichier de contrôle qui contient des pistes d'amplitude et de fréquence définies par des points charnière. Les pistes sont des séquences de nombres entiers sur 16 bit :
-1, date, amp, date, amp,...
-2, date, fréq, date, fréq,...
telles que celles qui sont produites par l'analyse d'un fichier audio au moyen d'un filtre hétérodyne. (Pour des détails, voir hetro.) Les valeurs instantanées d'amplitude et de fréquence sont utilisées par un oscillateur interne en virgule fixe qui additionne chaque partiel actif dans un signal de sortie accumulé. Bien qu'il y ait une limite pratique (limite supprimée dans la version 3.47) du nombre de partiels mis à contribution, il n'y a aucune restriction quant à leur comportement dans le temps. Un son quelconque que l'on peut décrire en termes d'évolution de sinusoïdes sera synthétisable par adsyn seul.
On peut aussi modifier un son décrit par un fichier de contrôle adsyn pendant la resynthèse. Les signaux kamod, kfmod et ksmod modifieront l'amplitude, la fréquence et la vitesse des partiels. Ce sont des facteurs multiplicatifs, avec kfmod modifiant la fréquence et ksmod modifiant la vitesse avec laquelle les segments en millisecondes définis par les points charnière sont parcourus. Ainsi, 0,7, 1,5 et 2 produiront un son plus doux, plus haut d'une quinte juste, mais deux fois moins long. Les valeurs 1, 1, 1 laisseront le son inchangé. Chacune de ces entrées peut être un signal de contrôle.
Voici un exemple de l'opcode adsyn. Il utilise le fichier adsyn.csd.
Exemple 49. Exemple de l'opcode adsyn.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;RT audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o adsyn.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; by Menno Knevel - 2021 ires system_i 1,{{ hetro -f100 -h100 stereoJungle.wav Jungle.het }} ; start at 100 Hz, harmonics up to 10kHz instr 1 ; play original sample aL,aR diskin "stereoJungle.wav", 1 outs aL, aR endin instr 2 kamod = 3 ; scale amplitude kfmod = p4 ksmod = p5 asig adsyn kamod, kfmod, ksmod, "Jungle.het" outs asig, asig endin </CsInstruments> <CsScore> s i1 0 7 ; original sample s ; frqmod speed i2 0 20 1 .2 ; 5 x slower i2 20 5 2 1 ; 2 x higher i2 25 15 .3 1.5 ; lower & faster e </CsScore> </CsoundSynthesizer>