L'environnement de bureau K

9.2. Manuel de référence des modules de synthèse

9.2.1. Arithmétique + Mixage

9.2.1.1. Synth_ADD

Ajoute deux signaux.

9.2.1.2. Synth_MUL

Multiplie un signal par un facteur. Vous pouvez l'utiliser pour atténuer des signaux (0 < facteur < 1), pour les amplifier (facteur > 1) ou pour les inverser (facteur < 0). Notez que le facteur peut être un signal et peut ne pas être constant (comme une enveloppe ou un signal réel).

9.2.1.3. Synth_MULTI_ADD

Ajoute un nombre arbitraire de signaux. Si vous devez effectuer la somme des formes d'ondes produites par quatre oscillateurs différents, vous pouvez par exemple connecter toutes leurs sorties à un module Synth_MULTI_ADD. C'est plus efficace que d'utiliser trois modules Synth_ADD.

9.2.1.4. Synth_XFADE

Mélange deux signaux. Si le taux entré est -1, seul le canal de gauche sera entendu, et si c'est 1, seul le canal de droite sera entendu. Lorsqu'il vaut zéro, les deux signaux ont le même volume.

Ceci permet de vous assurer que le signal restera dans une certaine plage bien définie. Si vous aviez deux signaux qui étaient entre -1 et 1 avant le mélange, ils seront dans la même plage après.

9.2.1.5. Synth_AUTOPANNER

Il prend un signal mono et crée un signal stéréo : ceci est utilisé pour régler automatiquement la panoramique du signal d'entrée entre les sorties droite et gauche. Cela rend les mixages plus vivants. On applique cet effet par exemple sur une guitare ou un son solo.

Connectez un LFO (NdT Low Frequency Oscillator : oscillateur basse fréquence), une onde sinusoïdale ou en dents de scie par exemple au port "inlfo" et sélectionnez une fréquence entre 0.1 et 5 Hz pour un effet traditionnel ou même pour un effet spécial.

9.2.2. Bus

9.2.2.1. Synth_BUS_UPLINK

Lien vers un bus. Envoyez les signaux sur les ports gauche et droit, et le nom d'un bus où les données doivent aller sur le port "bus". Le signal constitué de tous les uplink avec ce nom apparaitra sur chaque downlink sur ce "bus".

9.2.2.2. Synth_BUS_DOWNLINK

Collecte (la somme de) toutes les données qui sont placées sur un certain bus (avec le nom que vous spécifiez sur le port "bus").

9.2.3. Délais

9.2.3.1. Synth_DELAY

Retarde le signal d'entrée d'une certaine quantité. Cette durée doit être spécifiée entre 0 et 1 pour un retard entre 0 et 1 seconde.

Ce genre de retard ne devrait pas être utilisé dans les structures avec des boucles de contre-réaction. Ceci est dû au fait que c'est un retard variable. Vous pouvez modifier sa longueur alors qu'il est en fonctionnement, et même mis à zéro. Mais comme dans une structure en boucle la sortie est nécessaire pour calculer l'échantillon suivant, un délai avec une valeur qui tombe à zéro lors de la synthèse peut aboutir à une situation où plus rien ne se passe.

Utilisez alors plutôt CDELAY dans ce cas, combinez peut-être une valeur constante petite (de l'ordre de 0.001 seconde) avec une valeur variable.

Vous pouvez aussi combiner un CDELAY et un DELAY pour obtenir un retard de durée variable avec une valeur minimale dans une boucle à contre-réaction. Assurez vous que vous avez un CDELAY.

9.2.3.2. Synth_CDELAY

Retarde le signal d'entrée d'une certaine durée. Cette durée doit être comprise entre 0 et 1 pour un délai allant de 0 seconde à 1 seconde. Le délai est constant lors du calcul, ce qui signifie qu'il ne peut pas être modifié.

Il permet de gagner en temps de calcul puisqu'aucune interpolation n'est effectuée, et il est utile dans les structures récursives. Voir la description précédente (Synth_DELAY).

9.2.4. Enveloppes

9.2.4.1. Synth_ENVELOPE_ADSR

C'est une enveloppe ADSR classique. Vous devez spécifier :

active

si la note est pressée par l'utilisateur

invalue

signal d'entrée

attack

durée entre le moment où l'utilisateur presse une note et celui où le signal atteind son amplitude maximale (secondes)

decay

durée entre le moment où le signal atteind son amplitude maximale et où le signal revient à un niveau constant (en secondes)

sustain

niveau constant auquel le signal est maintenu après, jusqu'à ce que l'utilisateur relâche la touche

release

durée entre le moment où l'utilisateur relâche la note et celui où le signal atteind une valeur nulle (en secondes)

Vous obtiendrez le signal alors modulé par l'enveloppe sur le port "outvalue". Si l'enveloppe ADSR est terminée, le port "done" passera à 1. Vous pouvez utiliser ceci pour fournir la sortie "done" d'un instrument (qui entraînera la suppression de la structure par le routeur midi une fois que la phase "release" est terminée).

9.2.4.2. Synth_PSCALE

Le module Synth_PSCALE va échelonner le signal audio qui lui est envoyé d'une valeur 0 (silence) jusqu'à 1 (volume original) puis 0 (silence), en tenant compte de la position (récupérée à partir d'un module Synth_SEQUENCE). La position où le pic survient est donnée par le paramètre pos.

Exemple : placer le maximum à 0.1 signifie que lorsque 10% de la note ont été joués, le volume a atteind son maximum, et commence à diminuer.

9.2.5. Effets

9.2.5.1. Synth_FREEVERB

C'est un effet de réverbération. Dans l'implantation actuelle, il est conçu pour passer un signal stéréo dans la réverbération, et il ajoute le signal réverbéré au signal initial (note : ceci signifie qu'il peut aussi être utilisé dans un StereoEffectStack). Le signal d'entrée doit être connecté à (inleft,inright), le signal de sortie se trouve sur (outleft, outright).

Les paramètres de configuration sont :

roomsize

Taille de la pièce simulée par la réverbération (plage : 0..1 où 1 est la plus grande pièce possible)

damp

Ceci spécifie un filtre qui simule l'absorption des hautes fréquences par la pièce (plage : 0..1, où 1 correspond à une absorption des hautes fréquences plutôt agressive)

wet

quantité de sigal réverbéré (c'est-à-dire la quantité de signal qui devrait être modifié par les filtres, résultant en un "son réverbéré"

dry

quantité de signal pur transmis, résultant d'un écho (ou délai combiné) plutôt que d'un effet de révebération (plage : 0..1)

width

quantité de magie stéréo que l'algorithme de réverbération ajoute à l'effet, rendant le son réverbéré plus ample dans l'espace stéréo (plage : 0..1)

mode

[ TODO: I think if mode is 1, the reverb holds the current image of the sound, whereas 0 is normal operation ]

9.2.5.2. Synth_TREMOLO

Il module l'amplitude du son avec un LFO. En général, vous utilisez une onde sinusoïdale, mais pourquoi vous limiter à ça ? Vous obtenez un effet intense qui ressort des arrangements à cause de sa dynamique élevée. L'effet de trémolo est toujours un des effets préférés des guitaristes, bien qu'il ne soit pas aussi populaire que dans les années 60.

[ TODO: currently this is implemented as invalue + abs(inlfo) - maybe it would make more sense to implement it as invalue * (1+inlfo*depth), where depth would be a parameter between 0..1 - decide this after KDE2.1 ; if you have a comment, send a mail to the aRts list ;). ]

9.2.5.3. Synth_FX_CFLANGER

Un flanger est un effet de retard variable dans le temps. Pour simplifier, ce module est fourni et contient le code d'un flanger sur un seul canal.

Il a les ports suivants :

invalue

Le signal que vous voulez traiter.

lfo

De préférence une onde sinusoïdale qui module le retard dans le flanger (-1 .. 1).

mintime

La valeur minimale du retard dans le flanger en millisecondes. Valeurs suggérées : essayez quelque chose comme 1 ms. Utilisez des valeurs < 1000 ms.

maxtime

La valeur maximale pour le retard dans le flanger en millisecondes. Valeurs suggérées : essayez quelque chose comme 5 ms. Utilisez des valeurs < 1000 ms.

outvalue

Le signal de sortie. Il est important que vous le mélangiez avec le signal d'origine (non flangé) pour obtenir l'effet désiré.

Conseil : vous pouvez l'utilisez comme base pour un effet de chorus.

9.2.6. Filtres

9.2.6.1. Synth_PITCH_SHIFT

L'effet de pitch modifie la fréquence du signal d'entrée sans en modifier la vitesse. Par exemple, vous pouvez changer la hauteur de votre voix lors de l'enregistrement (et lors de la lecture) en temps réel.

Le paramètre vitesse est la vitesse relative avec laquelle le signal sera rejoué. Une vitesse de deux rend le son deux fois plus haut (par exemple, une fréquence d'entrée de 440 Hz résultera en une sortie à 880 Hz).

Le paramètre fréquence est utilisé de manière interne pour changer le grain du signal. Il est accordable, et selon votre choix, le changement de hauteur semblera plus ou moins réaliste. Une bonne valeur de départ est quelque chose comme 5 ou 10.

9.2.6.2. Synth_SHELVE_CUTOFF

Filtre toutes les fréquences supérieures à la fréquence de coupure.

9.2.6.3. Synth_BRICKWALL_LIMITER

Ce module écrète un signal pour le faire entrer dans la plage [-1;1]. Il ne fait rien pour éviter les distorsions dues à l'écrètage de signaux trop forts. Vous pouvez l'utiliser comme effet (par exemple pour créer une onde sinusoïdale un peu écrétée). Cependant, il est préférable d'envoyer ensuite le signal dans un filtre passe-bas pour rendre le son moins agressif.

9.2.6.4. Synth_STD_EQUALIZER

Un égaliseur paramétrique sympathique. Ses paramètres sont

invalue, outvalue

Signal filtré par l'égaliseur.

low

Comment sont modifiées les basses fréquences. La valeur est en dB, et 0 signifie pas de changement sur les basses fréquences, -6 les atténue de 6 dB et +6 les amplifie de 6 dB.

mid

Comment sont modifiées les fréquences médium par l'égaliseur en dB (voir plus haut).

high

Comment sont modifiées les fréquences aiguës par l'égaliseur en dB (voir plus haut).

frequency

Fréquence centrale de l'égaliseur en Hz, les fréquences médium se situent autour de cette valeur, les graves et les aiguës sont respectivement avant et après cette fréquence. Notez que cette fréquence ne doit pas être supérieure à la moitié de la fréquence d'échantillonnage, habituellement 22050 Hz, et ne doit pas être inférieure à 1 Hz.

q

Influence la largeur du spectre des médiums. Ce doit être une valeur strictement positive. 1 est une valeur raisonnable, des valeurs supérieures signifient un spectre de fréquences médium plus fin. Des valeurs inférieures à 1 signifient un spectre plus large.

9.2.6.5. Synth_RC

Filtre résonant amorti : il filtre toutes les fréquences autour d'une valeur centrale. Il n'y a aucun moyen de spécifier la fréquence centrale (qui ne sera pas coupée), puisque les entrées sont deux constantes étranges f et b. Le code est très vieux, il doit dater de l'époque des premiers synthétiseurs, et sera probablement remplacé par un nouveau filtre qui aura deux paramètres : fréquence et résonance.

Essayez quelque chose comme b=5, f=5 ou b=10, f=10 ou b=15, f=15.

9.2.6.6. Synth_MOOG_VCF

Filtre toutes les fréquences supérieures à la fréquence de coupure (c'est un filtre 24 dB, 4 pôles, qui filtre avec une pente de -24 dB par octave au dessus de la fréquence de coupure), mais offre un paramètre supplémentaire pour régler la résonance du filtre, 0 signifie pas de résonance, et 4 correspond à des oscillations auto-entretenues (self oscillation).

9.2.7. Midi + Séquenceur

9.2.7.1. Synth_MIDI_TEST

Ce module charge une structure d'instrument depuis un fichier, et s'enregistre comme sortie midi après du gestionnaire midi de aRts. Les notes envoyées vers cette sortie entraineront la création de voix avec cet instrument. Note : vous pouvez faire la même chose mais de manière beaucoup plus facilement dans artscontrol que manuellement dans artsbuilber.

9.2.7.2. Synth_SEQUENCE

Joue une séquence de notes en boucle. Les notes sont données en notation "tracker", et sont séparées par des point-virgules, par exemple A-3;C-4;E-4;C-4;. La vitesse est donnée en secondes par note, donc si vous voulez un tempo de 120, choisissez 0.5 seconde/note, puisque 60 secondes/0.5 seconde par note = 120 bpm (NdT : bpm = beat per minute = pulsations par minute ou tempo).

Vous pouvez donner à chaque note une durée relative à la vitesse en utilisant le symbole deux points après la note, suivi de la durée, par exemple A-3:2;C-4:0.5;D-4:0.5;E-4;. Comme vous pouvez le voir, les séquenceurs midi sont beaucoup plus confortables ;)

Le module Synth_SEQUENCE donne des informations supplémentaires sur la position de la note qu'il joue, 0 signifie juste démarrée, et 1 signifie terminée. Vous pouvez utiliser cette information avec Synth_PSCALE (voir plus bas).

9.2.8. Échantillons

9.2.8.1. Synth_PLAY_WAV

Interprète un fichier wav. Il ne sera présent que si vous avez installé libaudiofile. La lecture de l'échantillon débutera dès la création de la structure. Elle s'arrêtera à la fin de l'échantillon, et le paramètre "finished" passera alors à 1. Le paramètre "speed" est utilisé pour jouer le fichier plus ou moins vite, où 1.0 est la vitesse normale.

9.2.9. Entrées/sorties son

9.2.9.1. Synth_PLAY

Vous n'aurez normalement pas besoin de ce module, tant que vous écrivez des applications autonomes. Dans artsd, il y a normalement déjà un module Synth_PLAY, et en créer un nouveau ne fonctionnera pas..

Le module Synth_PLAY dirige vos données audio vers la carte son. Les canaux droit et gauche devraient contenir les entrées normalisées. Si votre entrée n'est pas entre -1 et 1, le signal sera écrété.

Comme mentionné précédemment, on ne peut utiliser qu'un module Synth_PLAY, puisqu'il accède directement à la carte son. Utilisez des bus si vous voulez mélanger plusieurs sources audio avant de les jouer. Utilisez un module Synth_AMAN_PLAY pour obtenir une sortie dans artsd.

Notez que Synth_PLAY joue aussi le rôle de référence temporelle pour toute la structure. Cela signifie : pas de module Synth_PLAY = pas de référence temporelle = pas de son. Vous avez donc besoin d'(exactement) un objet Synth_PLAY.

9.2.9.2. Synth_RECORD

Vous n'aurez normalement pas besoin de ce module, tant que vous écrivez des applications autonomes. Dans artsd, il y a normalement déjà un module Synth_RECORD, et en créer un nouveau ne fonctionnera pas..

Le module Synth_RECORD enregistre un signal depuis la carte son. Les canaux droit et gauche devraient contenir l'entrée pour les canaux (entre -1 et 1).

Comme mentionné précédemment, on ne peut utiliser qu'un module Synth_RECORD, puisqu'il accède directement à la carte son. Utilisez des bus si vous voulez enregistrer plusieurs sources audio. Utilisez un module Synth_AMAN_RECORD pour obtenir une entrée dans artsd. Pour que ça fonctionne, artsd doit fonctionner en mode full duplex

9.2.9.3. Synth_AMAN_PLAY

Le module Synth_AMAN_PLAY constitue une sortie audio. Il est préférable (mais pas obligatoire) que votre sortie soit normalisée (entre -1 et 1).

Ce module utilise le gestionnaire audio pour déterminer où le signal sera joué. Le gestionnaire audio peut être contrôlé depuis artscontrol. Pour le rendre encore plus intuitif à utiliser, il est préférable de donner un nom au signal. Vous pouvez le faire avec title. Une autre caractéristique du gestionnaire audio est qu'il se souvient où a été joué un signal pour la dernière fois. Pour cela, il doit pouvoir distinguer les signaux. C'est pourquoi vous devez aussi assigner quelque chose d'unique à autoRestoreID.

9.2.9.4. Synth_AMAN_RECORD

Le module Synth_AMAN_RECORD enregistre le signal audio depuis une source extérieure (ligne/microphone) à travers artsd. La sortie est normalisée (entre -1 et 1).

Ce module utilise le gesionnaire audio pour déterminer où le signal sera joué. Le gestionnaire audio peut être contrôlé depuis artscontrol. Pour le rendre encore plus intuitif à utiliser, il est préférable de donner un nom au signal enregistré. Vous pouvez le faire avec title. Une autre caractéristique du gestionnaire audio est qu'il se souvient où a été enregistré un signal pour la dernière fois. Pour cela, il doit pouvoir distinguer les signaux. C'est pourquoi vous devez aussi assigner quelque chose d'unique à autoRestoreID.

9.2.9.5. Synth_CAPTURE

Le module Synth_CAPTURE enregistre un signal audio dans un fichier. Le fichier s'appelera toujours /tmp/mcop-usename/capture.wav

9.2.10. Tests

9.2.10.1. Synth_NIL

Ne fait rien. Il est juste utile à des fins de test.

9.2.10.2. Synth_DEBUG

Vous pouvez l'utiliser pour déboguer. Il affiche les valeurs en entier à intervalles réguliers (par exemples une seconde), combiné avec un commentaire que vous avez spécifié. Vous pouvez ainsi vérifier que votre signal reste confiné dans une certaine plage, ou tout simplement s'il est présent.

9.2.10.3. Synth_MIDI_DEBUG

Vous pouvez l'utiliser pour déboguer l'arrivée des événements midi dans aRts.

Lorsqu'un MIDI_DEBUG fonctionne, artsserver affichera une ligne comme
 201 100753.837585 on 0 42 127
 202 101323.128355 off 0 42
La première ligne vous dirait que 100753 ms (c'est-à-dire 100 secondes) après le démarrage de MIDI_DEBUG, un événement midi est arrivé sur le canal 0. Ce message midi "on" avait une vélocité (volume) de 127, le plus fort possible. La ligne suivante montre l'événement de fin de note. [ TODO: this does not work currently, make it work, and do it via midi manager ].

9.2.10.4. Synth_DATA

Crée un signal avec une valeur constante.

9.2.11. Oscillateurs et Modulation

9.2.11.1. Synth_FREQUENCY

Dans aRts, les oscillateurs ne nécessitent pas une fréquence en entrée, mais une position dans l'onde. La position doit être comprise entre 0 et 1 qui positionne un objet Synth_WAVE_SIN standard sur la plage 0..2*pi. Pour générer un signal oscillant à partir d'une fréquence, un module Synth_FREQUENCY est utilisé.

9.2.11.2. Synth_FM_SOURCE

Utilisé pour la modulation de fréquence. Mettez votre fréquence à l'entrée qui lui est dédiée, et envoyez un autre signal dans l'entrée du modulateur. Réglez alors le niveau de modulation, par exemple 0,3. La fréquence sera alors modulée par le modulateur. Essayez simplement. Ça sonne bien si vous y mettez une contre-réaction, ce qui signifie que vous prenez une combinaison du signal de sortie retardé d'un module Synth_FM_SOURCE (vous devez le relier à un oscillateur puisqu'il ne joue que le rôle d'un module Synth_FREQUENCY) et d'un autre signal pour obtenir de bons résultats.

Ça fonctionnne bien en combinaison avec des oscillateurs Synth_WAVE_SIN.

9.2.12. Formes d'ondes

9.2.12.1. Synth_WAVE_SIN

Oscillateur sinusoïdal. Envoyez un signal "pos" d'un module Synth_FREQUENCY ou Synth_FM_SOURCE en entrée. Vous obtiendrez une onde sinusoïdale en sortie. Le signal "pos" spécifie une position dans l'onde, la plage 0..1 est modifiée en 0..2*pi de manière interne.

9.2.12.2. Synth_WAVE_TRI

Oscillateur triangulaire. Envoyez un signal "pos" d'un module Synth_FREQUENCY ou Synth_FM_SOURCE en entrée. Vous obtiendrez une onde triangulaire. Le signal "pos" spécifie une position dans l'onde, la plage 0..1 est modifiée en 0..2*pi de manière interne. Soyez prudent. Le signal d'entrée *DOIT* se situer dans la plage 0..1 pour que le signal de sortie donne de bons résultats.

9.2.12.3. Synth_NOISE

Générateur de bruit. Génère un signal aléatoire entre -1 et 1.

9.2.12.4. Synth_WAVE_SQUARE

Oscillateur générant un signal carré. Envoyez un signal "pos" d'un module Synth_FREQUENCY ou Synth_FM_SOURCE en entrée. Vous obtiendrez une onde carrée. Le signal "pos" spécifie une position dans l'onde, la plage 0..1 est modifiée en 0..2*pi de manière interne. Soyez prudent. Le signal d'entrée *DOIT* se situer dans la plage 0..1 pour que le signal de sortie donne de bons résultats.

9.2.12.5. Synth_WAVE_SOFTSAW

Oscillateur dents de scie adoucies, similaire à l'oscillateur Synth_WAVE_TRI. Envoyez un signal "pos" d'un module Synth_FREQUENCY ou Synth_FM_SOURCE en entrée. Vous obtiendrez une onde en forme de dents de scies adoucies. Le signal "pos" spécifie une position dans l'onde, la plage 0..1 est modifiée en 0..2*pi de manière interne. Soyez prudent. Le signal d'entrée *DOIT* se situer dans la plage 0..1 pour que le signal de sortie donne de bons résultats.

9.2.12.6. Synth_WAVE_PULSE

Oscillateur générant un signal de type impulsion - ce module est semblable dans l'esprit à l'oscillateur rectangulaire (Synth_WAVE_RECT), mais il permet de configurer le rapport haut/bas, grâce au paramètre dutycycle (rapport cyclique). Envoyez un signal "pos" d'un module Synth_FREQUENCY ou Synth_FM_SOURCE en entrée. Vous obtiendrez une onde en forme d'impulsions carrées. Le signal "pos" spécifie une position dans l'onde, la plage 0..1 est modifiée en 0..2*pi de manière interne. Soyez prudent. Le signal d'entrée *DOIT* se situer dans la plage 0..1 pour que le signal de sortie donne de bons résultats.