21
SIYH ToTovai novembre 2011 V1.1 Easy Digital Signal Processing [email protected]

Easy Signal Processing

Embed Size (px)

Citation preview

Page 1: Easy Signal Processing

SIYH ToTovai

novembre 2011 V1.1

Easy Digital Signal Processing

[email protected]

Page 2: Easy Signal Processing

Table des matieres

1 Introduction 51.1 Signal Processing qu’est ce que c’est ? . . . . . . . . . . . . . . . . . . 51.2 Cool et c’est dur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.1 Les bases, de quoi ai-je besoin ? . . . . . . . . . . . . . . . . . . 61.2.2 J’ai pas les bases . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.2.1 Matlab j’ai pas ou j’ai pas la bonne version . . . . . . . 61.2.2.2 Je n’ai jamais travaille sur matlab . . . . . . . . . . . . 71.2.2.3 Je n’ai pas de connaissance en traitement de signal . . 7

2 Acquisition de donnees Matlab 82.1 Les objets Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.1.1 Les proprietes des objets . . . . . . . . . . . . . . . . . . . . . . 82.1.1.1 Comment setter les proprietes d’un objet ? . . . . . . . 9

2.1.2 Proprietes interessantes . . . . . . . . . . . . . . . . . . . . . . 92.1.3 Setting des proprietes . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.3.1 Proprietes avec appels de fonctions . . . . . . . . . . . 102.2 Lancer les Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.1 Detruire les objets . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Traitement des donnees Matlab 123.1 Update de l’acquisition . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 Processing exemple simple : Gain . . . . . . . . . . . . . . . . . . . . . 133.3 Le Code total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Aller plus loin avec Matlab 154.1 Un petit Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2 Interface Graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5 Signal processing avec Audacity (non temps-reel) 165.1 Presentation de nyquist . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2 Exemple : controler le volume . . . . . . . . . . . . . . . . . . . . . . . 16

1

Page 3: Easy Signal Processing

Siyh

5.3 Creer un plugin pour audacity . . . . . . . . . . . . . . . . . . . . . . . 175.3.1 Exemple : Gain avec interface graphique . . . . . . . . . . . . . 17

5.4 Aller plus loin avec Nyquist . . . . . . . . . . . . . . . . . . . . . . . . 195.4.1 Exemple : controle de l’enveloppe d’un accord . . . . . . . . . . 19

2 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 4: Easy Signal Processing

Table des figures

1.1 Traitement du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5.1 Audacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2 Mon premier plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.3 Plugin en cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.4 Accord avant enveloppe . . . . . . . . . . . . . . . . . . . . . . . . . . 205.5 Accord apres enveloppe . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3

Page 5: Easy Signal Processing

Bibliographie

[1] Audacity introduction a la programation nyquist. cliquez ici.

[2] Base de nyquist. cliquez ici.

[3] Data acquisition toolbox user guide. cliquez ici.

[4] Digital audio effects. cliquez ici.

[5] Debuter avec matlab. cliquez ici.

[6] Le traitement de signal. cliquez ici.

[7] Les compresseurs etude et realisation. cliquez ici.

[8] Manuel de reference nyquist. cliquez ici.

[9] Multi-effect processor for acoustic guitar - acoustics. cliquez ici.

4

Page 6: Easy Signal Processing

1Introduction

1.1 Signal Processing qu’est ce que c’est ?

Il s’agit d’apprendre a traiter du son par ordinateur. Ce tutoriel est specialementconcu pour les personnes qui desirent apprendre a creer des effets numeriques pour leursinstruments. Parmi ces effets on peut compter :

– Delay– Reverb– Distorsion– Simulation (baffle, ampli)– Equaliser– ...

Vous voudriez bien apprendre a creer ce genre d’effet et les tester avec votre guitare ?Ce tutoriel est fait pour vous :)

Figure 1.1 – Traitement du signal

5

Page 7: Easy Signal Processing

Chapitre 1 - Introduction Siyh

1.2 Cool et c’est dur ?

J’ai cherche pendant tout un temps une maniere simple de traiter du son par ordina-teur. Une maniere efficace de faire est de coder des VST (Virtual Studio Technology) quiest une librairie gerant les entrees sorties audio. Le probleme c’est qu’il faut une bonneconnaissance du C++ 1 .

Une methode de programmation beaucoup plus simple a utiliser : MATLAB 2.

1.2.1 Les bases, de quoi ai-je besoin ?

1. Matlab 32bits (j’insiste sur le 32 bits :) )

2. La Toolbox data acquisition de Matlab

3. Un peu de connaissance sur la programmation sur Matlab (tres simple)

4. Un peu de connaissance en Traitement de signal (pour comprendre comment rea-liser vos effets)

5. De la M.O.T.I.V.A.T.I.O.N

Alors c’est parti ?

1.2.2 J’ai pas les bases

Dans cette section je vais detaille un peu que faire si vous n’avez pas les bases citeesci dessus de maniere a les acquerir rapidement.

1.2.2.1 Matlab j’ai pas ou j’ai pas la bonne version

Si vous avez Matlab 64bits , vous devez reinstaller la version 32 bits, normalementla version est presente dans le repertoire Win32 de votre cd d’install. Si vous n’avez pasMatlab vous pouvez vous tourner vers le logiciel Octave (meme syntaxe que matlab) ouSimulink. Il vous faudra chercher un peu mais le tutoriel vous donnera tout de meme unevue d’ensemble sur comment ca marche. Si vous n’avez pas matlab vous pouvez encorevous tourner vers une methode alternative, Nyquist pour audacity. 3

1. Vous avez une bonne connaissance du C++ ? alors je vous conseil d’utiliser la SDK telechargeablesur le site de Steinberg

2. Il existe un equivalent a Matlab qui est free c’est Octave, je n’ai pas encore teste la methode surOctave.

3. Voir chapitre 5 section 5.1, page 16.

6 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 8: Easy Signal Processing

Chapitre 1 - Introduction Siyh

1.2.2.2 Je n’ai jamais travaille sur matlab

Matlab est un langage tres tres intuitif. On s’y fait en 2H Voir tuto [5]

1.2.2.3 Je n’ai pas de connaissance en traitement de signal

Que faut il savoir ? Voici une liste non-exhaustive pour debuter :

– Comment un son est il represente numeriquement ?– Frequence d’echantillonnage

Vous pouvez vous baser sur le tuto [6]

Allez maintenant, c’est parti

7 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 9: Easy Signal Processing

2Acquisition de donnees Matlab

2.1 Les objets Audio

Le but du travail est de recuperer les donnees qui transitent de notre guitare versl’entree de notre carte son. De traiter ces donnees et de les renvoyer vers la sortie de lacarte son .

La premiere chose a faire est de definir des objets Audio avec lesquelles on va com-muniquer. On veut donc un objet analogique input et un objet analogique output.

1 AI = a n a l o g i n p u t ( ’ winsound ’ , 0 ) ;2 a d d c h a n n e l ( AI , 1 ) ;

Qu’ai je fais ? J’ai defini un objet (AI comme analog input) et je lui ai dit de prendrela carte son de mon pc comme entree (winsound). Ensuite j’ai dis “sur cet objet tu

ajoutes un canal” (pour travailler en mono). Simple non ? Definissons maintenantun objet de sortie :

1 AO = a n a l o g o u t p u t ( ’ winsound ’ , 0 ) ;2 a d d c h a n n e l (AO, 1 ) ;

Pas beaucoup plus complique .

2.1.1 Les proprietes des objets

Les objets AI et AO que l’on vient de creer on une certaine quantite de proprietes,pour voir les differentes proprietes de l’objet il suffit de taper la commande

1 get ( AI )2 get (AO)

8

Page 10: Easy Signal Processing

Chapitre 2 - Acquisition de donnees Matlab Siyh

L’objet a donc pleins de proprietes qui peuvent etre utile par exemple il y a moyen

de lancer l’enregistrement d’un claquement de main . Nous allons dans un premiertemps nous interesser au seule proprietes vraiment indispensable pour notre utilisation.

2.1.1.1 Comment setter les proprietes d’un objet ?

C’est simple, il suffit d’employer la commande set, suivie du nom de l’objet, puis lenom de la propriete entre guillemet suivit de la valeur a setter. Exemple :

1 set ( AI , ’ r e p e t i t i o n ’ , 3 ) ;

Aura comme effet de setter la propriete de repetition de l’objet “analogique input” ala valeur 3 .

2.1.2 Proprietes interessantes

1. SampleRate : permet de definir la frequence d’echantillonnage.

2. SamplePerTrigger : le nombre de sample par trigger 1

3. TriggerType : permet de choisir le type de trigger :– Immediate le trigger se lance des qu’on a lancer l’objet d’acquisition.– Manual l’objet attends le mot cle ”trigger” pour lancer l’acquisition.– Software permet de lancer l’acquisition sur base d’autre evenements

4. ManualTriggerHwOn : permet de minimiser le temps entre l’acquisition et la res-titution des donnees.

5. SamplesOutputFcn : permet d’appeler une fonction lors d’un evenement predefini 2

6. SampleOutputFcnCount : c’est un evenement de la propriete SamplesOutputFcn 3

7. StpFcn : permet d’appeler une fonction lorsque l’objet audio s’arrete.

2.1.3 Setting des proprietes

1 set ( [ AI AO] , ’ SampleRate ’ , SampleRate ) ;2 set ( AI , ’ S a m p l e s P e r T r i g g e r ’ , i n f ) ;3 set ( [ AI AO] , ’ T r i g g e r T y p e ’ , ’ Manual ’ ) ;4 set ( AI , ’ ManualTriggerHwOn ’ , ’ T r i g g e r ’ ) ;

Jusqu’ici il n’y a rien de particulier, je vous conseille de creer une variable appeleeSampleRate=44100 ; SamplePerTrigger est sette a l’infini ce qui veut dire qu’une foisl’acquisition lancee elle ne s’arrete pas, si vous voulez 10 secondes d’enregistrement, vouspouvez faire ceci :

1. Le trigger est un evenement qui lance notre acquisition2. Voir point suivant.3. Voir section 2.1.3.1, page : 10

9 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 11: Easy Signal Processing

Chapitre 2 - Acquisition de donnees Matlab Siyh

1 d u r e e =10;2 set ( AI , ’ S a m p l e s P e r T r i g g e r ’ , d u r e e ∗ SampleRate ) ;

2.1.3.1 Proprietes avec appels de fonctions

1 % M u l t i p l e s d e v i c e s2 b u f f e r S i z e =2000;3 set (AO, ’ SamplesOutputFcn ’ ,{ ’ qmoredata ’ , AI , b u f f e r S i z e })4 set (AO, ’ SamplesOutputFcnCount ’ , b u f f e r S i z e )5 set ( [ AI AO] , ’ StopFcn ’ , @ d a q c a l l b a c k )

Definissons a la ligne 2, un buffer de 2000 echantillons (la taille depend de votre

carte son et de votre pc). La ligne 3 et 4 sont liees, commencons par la ligne 4 : : onva donner a notre objet de sortie AO une propriete qui va creer un evenement lorsqu’ilaura sorti bufferSize elements soit 2000 echantillons sonores. Pourquoi ? Parce que sonbuffer est vide et que l’on veut qu’il aie charger les nouvelles donnees acquises par AI(Analog Input). La ligne 3 quant a elle appelle une fonction si elle recoit un evenement.Cette fonction c’est qmoredata qui va s’occuper de transferer les donnees de AI vers AO.

En resume : AO va sortir SizeBuffer echantillons et creer un evenement (maman j’ai

fini !) l’evenement va declencher l’execution d’une fonction qui s’appelle qmoredata. La syntaxe est un peu particuliere mais il n’y a rien de complique !

Et @daqcallback quesako : Lorsque AI et AO s’arreteront, ils appelleront cettefonction qui affichera le motif de cet arret . Ca peut etre utile au debug meme si jeprefere la methode

2.2 Lancer les Objets

Bon c’est fini ? On peut jouer ?

Ca vient, il nous reste a lancer les objets .

1 % S t a r t2 data=zeros ( b u f f e r S i z e ∗4 , 1 ) ;3 p u t d a t a (AO, data ) ;4 s t a r t ( [ AI AO] )5 t r i g g e r ( [ AI AO] )

10 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 12: Easy Signal Processing

Chapitre 2 - Acquisition de donnees Matlab Siyh

1. c’est parti

2. je cree un vecteur de donnee rempli de zero (pour commencer)

3. je le met dans le buffer de l’objet de sortie via la commande putdata 4

4. je start les objets

5. je leurs dis de commencer leurs acquisitions.

2.2.1 Detruire les objets

Pour eviter les fuites de memoire et arreter l’acquisition proprement il faut encoreinclure le code suivant :

1 %Stop and Clean2 Resp = input ( ’ P r e s s ’ ’ q ’ ’ to s t o p t h e program \n ’ , ’ s ’ )3 i f strcmp ( Resp , ’ q ’ )4 s t o p ( [ AI AO] )5 delete (AO)6 c l e a r AO7 delete ( AI )8 c l e a r AI9 end

1. Comment stopper l’acquisition ?

2. je dis au programme d’attendre que l’utilisateur rentre une information au clavier.

3. si la touche pressee est q (comme quit).

4. arreter l’acquisition

5. detruire les objets.

C’est tout ? Presque il ne reste qu’un detail de rien du tout... mais en fait... notreprogramme la, il fait rien .

4. Attention avant de demarrer l’objet de sortie il faut obligatoirement lui donner un element de

sortir sinon il ne saura pas quoi sortir et generera une erreur

11 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 13: Easy Signal Processing

3Traitement des donnees Matlab

3.1 Update de l’acquisition

La fonction qmoredata ca vous dit quelque chose 1 ? Une fois le buffer de AO vide,la fonction va le remplir avec les nouveaux samples apportes par AI.

1 funct ion qmoredata ( obj , event , AI , b u f f e r S i z e )2

3 data=g e t d a t a ( AI , b u f f e r S i z e ) ;4 p u t d a t a ( obj , data ) ;

1. qmoredata est donc une fonction qui prend en premier argument un objet 2

2.

3. la fonction getdata va recuperer les 2000 derniers echantillons acqui par AI 3

4. putdata mets les echantillons dans l’objet (AO).

Ben alors c’est parti Rock 4

Bon alors trop cool non ? Vous avez appele toute votre famille fier de vous ... et la yen a toujours un pour dire “Mais en fait tu mets juste ton entree sur ta sortie... ca serta rien ?” ...

aaaah , quelqu’un a dit quelque chose ? .

1. En cas de reponse negative faut arreter2. AO voir section 2.1.3.1, page 10 ligne 3.3. 2000=SizeBuffer

4. Si ca ne marche pas, 1) essayez avec un buffer plus grand. 2) goooo

12

Page 14: Easy Signal Processing

Chapitre 3 - Traitement des donnees Matlab Siyh

Bon faut bien l’avouer notre programme est pas tres utile mais maintenant le pluspenible est fait.

3.2 Processing exemple simple : Gain

L’application la plus simple que l’on peut envisager c’est un controle de gain. Pourcela il sufit de creer une fonction Volume et de l’inserer entre l’acquisition des donneeset la remise sur le buffer de sortie :

1 funct ion qmoredata ( obj , event , AI , b u f f e r S i z e )2

3 data=g e t d a t a ( AI , b u f f e r S i z e ) ;4 data=Volume ( data , 5 ) ;5 p u t d a t a ( obj , data ) ;

Et la fonction Volume comment ca marche ? Ca c’est simple j’ose esperer que vous

auriez pu la coder vous meme

1 funct ion [ data ]=Volume ( data , g a i n )2

3 data=g a i n ∗ data ;

elle prend comme argument un vecteur de donnees, un gain. elle multiplie chaqueechantillon par le gain et renvoi le nouveaux vecteur.

3.3 Le Code total

Un fichier acquisition.m contenant :

1 % G l o b a l2 SampleRate = 44100 ;3 b u f f e r S i z e = 3 0 0 0 ;4

5 %I n p u t6 AI = a n a l o g i n p u t ( ’ winsound ’ , 0 ) ;7 a d d c h a n n e l ( AI , 1 ) ;8 set ( AI , ’ SampleRate ’ , SampleRate ) ;9 set ( AI , ’ S a m p l e s P e r T r i g g e r ’ , i n f ) ;

10

11

12 %Output13 AO = a n a l o g o u t p u t ( ’ winsound ’ , 0 ) ;14 a d d c h a n n e l (AO, 1 ) ;15 set (AO, ’ SampleRate ’ , SampleRate ) ;16 set ( [ AI AO] , ’ T r i g g e r T y p e ’ , ’ Manual ’ ) ;

13 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 15: Easy Signal Processing

Chapitre 3 - Traitement des donnees Matlab Siyh

17 set ( AI , ’ ManualTriggerHwOn ’ , ’ T r i g g e r ’ ) ;18

19

20 % M u l t i p l e s d e v i c e s21 set (AO, ’ SamplesOutputFcn ’ ,{ ’ qmoredata ’ , AI , b u f f e r S i z e })22 set (AO, ’ SamplesOutputFcnCount ’ , b u f f e r S i z e )23 set ( [ AI AO] , ’ StopFcn ’ , @ d a q c a l l b a c k )24

25 % S t a r t26 data=zeros ( b u f f e r S i z e ∗4 , 1 ) ;27 p u t d a t a (AO, data ) ;28 s t a r t ( [ AI AO] )29 t r i g g e r ( [ AI AO] )30

31 %Stop and Clean32 Resp = input ( ’ P r e s s ’ ’ q ’ ’ to s t o p t h e program \n ’ , ’ s ’ )33 i f strcmp ( Resp , ’ q ’ )34 s t o p ( [ AI AO] )35 delete (AO)36 c l e a r AO37 delete ( AI )38 c l e a r AI39 end

Un fichier qmoredata.m contenant :

1 funct ion qmoredata ( obj , event , AI , b u f f e r S i z e )2

3 data=g e t d a t a ( AI , b u f f e r S i z e ) ;4 data=Volume ( data , 5 ) ;5 p u t d a t a ( obj , data ) ;

Finalement un fichier Volume.m contenant :

1 funct ion [ data ]=Volume ( data , g a i n )2

3 data=g a i n ∗ data ;

Voila il ne vous reste plus qu’a vous amuser

14 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 16: Easy Signal Processing

4Aller plus loin avec Matlab

4.1 Un petit Delay

A venir

4.2 Interface Graphique

A venir

Je vous conseille de faire un tour dans ces 2 excellents pdf [4] et [9] pouren savoir plus sur les effets guitar

Mes autres tutoriels : clique ici

15

Page 17: Easy Signal Processing

5Signal processing avec Audacity(non temps-reel)

5.1 Presentation de nyquist

Faut il encore presenter audacity ? Dans le doute je le fais , donc Audacity est unsequenceur audio tres intuitif, simple, libre et multi plateforme.

Figure 5.1 – Audacity

Audacity offre une fonctionnalite interessante, c’est le prompt Nyquist. Il permetde lancer des commandes directement sur son traiter par audacity.

5.2 Exemple : controler le volume

– Ouvrez Audacity.– Enregistrez un sample audio, ou importez en un.– Cliquez sur le menu Effet puis sur console Nyquist– Entrez la commande suivante : return scale(0.5, s)– Ok

16

Page 18: Easy Signal Processing

Chapitre 5 - Signal processing avec Audacity (non temps-reel) Siyh

SHazaaaam le niveau audio a ete reduit de moitie... Simplissime non ? Qu’a t’onfait ? On a demande d’apliquer un facteur d’echelle de 0.5 a la chaıne s (qui est le fluxlu par audacity).

5.3 Creer un plugin pour audacity

Bon c’est bien beau tout ca, mais bon si on veut un delay, ca devient plus compliqueon ne voudrait pas retaper le code a chaque fois. he bien il suffit d’ecrire un pluginNyquist (fichier .ny) et de le placer dans le repertoire Plugin d’Audacity.

Les avantages :

– Langage simple.– Le plugin apparaıt automatiquement dans les effets Audacity.– Interface graphique programmable de maniere intuitive.

– Multi plate-forme

– Ca Impressionne Mammy un max

Le desavantage : Vous ne pouvez pas appliquer l’effet en temps reel, vous devez

enregistrer puis appliquer l’effet

5.3.1 Exemple : Gain avec interface graphique

Pour ecrire votre plugin prenez un editeur de texte 1. Copier ce code :

1 ; n y q u i s t p lug−i n2 ; vers ion 33 ; c o d e t y p e s a l4 ; type p r o c e s s5 ; name ”TS Volume ”6 ; a c t i o n ”C a l c u l en c o u r s ne pas a r r a c h e r l e d i s q u e dur avec

s e s d e n t s ”7 ; i n f o ”j e d d i c a c e ce p l u g i n mon dady ”8 ; c o n t r o l v a r 1 ” p r e m i r e v a r ” i n t ”Volume ” 5 1 109 return s c a l e ( 0 . 5 , s )

1. Un header commence par un“ ;”ensuite on dit que l’on veut creer un plugin Nyquist

2. On renseigne la version utilisee (je vous conseil la 3 sauf si vous avez une vieilleversion d’audacity)

3. Le type de code, par defaut on utilise un langage LIPS mais ici on va utiliser un

autre langage qui est plus intuitif et qui comporte moins de parenthese , le SAL.

4. Le type du plugin : il en existe 3

1. J’utilise Kate sur Kde, pour Windows je conseille notepad++

17 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 19: Easy Signal Processing

Chapitre 5 - Signal processing avec Audacity (non temps-reel) Siyh

– Generate : permet de generer des sons– Process : permet de traiter du sons– Analyze : permet d’analyser le son

5. Renseignons le nom de notre plugin (je conseille vos initiale underscore le nom,car il existe deja beaucoup de plugins)

6. action : affiche une phrase lors de l’execution du programme

7. info : donne des informations qui seront visibles lors des settings.

8. control : c’est ici que l’on va dire que l’on voudrait un bouton de volume. Lasyntaxe est la suivante :

(a) le nom de la variable

(b) le texte a mettre a gauche

(c) le type de la variable (int, real)

(d) la valeur par defaut de la variable

(e) la valeur minimum de la variable

(f) la valeur maximale.

9. la/les commande(s) a executer.

Sauvons le fichier et nommons le Volume.ny . Il faut maintenant aller le mettre ici⇒ c :\\programmes\ audacity\plugins 2

On relance audacity, on va dans le menu effet on descend dans les modules qui sontclasses par ordre alphabetique et on trouve TS Volume. On clique dessus pour obtenirla fenetre 5.2

Figure 5.2 – Mon premier plugin

Apres avoir regle le volume, on clique sur ok pour obtenir la figure 5.3

Alors ? Heureuse

2. Sur Linux : /usr/share/audacity/plugins. il faut les droits admin donc ”sudo mv Volume.ny /usr/-share/audacity/plugins ”

18 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 20: Easy Signal Processing

Chapitre 5 - Signal processing avec Audacity (non temps-reel) Siyh

Figure 5.3 – Plugin en cours

5.4 Aller plus loin avec Nyquist

C’est bien jolis tout ca, mais comment on fait des truc plus complexe ? He bien ilfaut se renseigner sur les fonctionnalites du langage SAL ou LIPS. Je vous conseille :

– Le manuel de reference [8]– Debuter avec Nyquist sur Audacity [1]– Base de Nyquist [2]

Nyquist permet de faire plein de chose, il possede des librairies permettant de fairedes fft, lfo, drum machine, convolution, filtres, mini moog. Le tout tres simplement parexemple une convolution s’ecrira convolve(sound, response).

5.4.1 Exemple : controle de l’enveloppe d’un accord

Si je veux gerer l’enveloppe d’un accord 3 :

1 return s ∗ env ( 0 . 1 4 , 0 . 3 , 0 . 5 , 2 . 0 , 0 . 5 , 2 . 8 )

Je multiplie le son (s) avec une fonction enveloppe ou :

1. Le parametre 1 = le temps d’Attaque

2. Le parametre 2 = le temps de Decay

3. Le parametre 3 = le temps de Release

4. Le parametre 4 = le level au moment de l’attaque

5. Le parametre 5 = le level au moment du sustain

6. Le parametre 6 = la duree totale⇒ par extension le temps de sustain = dureeTot- DureeAttack - DureeRel - DureeDec

Sur la figure 5.4 on voit l’accord avant traitement et sur la figure 5.5 l’accord aprestraitement. On retrouve bien :

3. Voir ADSR dans [7]

19 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/

Page 21: Easy Signal Processing

Chapitre 5 - Signal processing avec Audacity (non temps-reel) Siyh

– Attack = 0.14 s– Decay = 0.3 s– Sustain= 2.8-0.14-0.3-0.5= 1.86 s– Release = 0.5 s– lors de l’attaque le signal est amplifie d’un facteur 2– lors du sustain la note est diminuee de moitie

Figure 5.4 – Accord avant enveloppe

Figure 5.5 – Accord apres enveloppe

20 Diffusion autorisee sur techniguitare.com et http://totovai.e-monsite.com/