Enveloppe d'Amplitude ADSR

Enveloppe d'Amplitude ADSR

Pour le moment nous générons un son de la manière suivante :

sans_enveloppe.svg

Ce qui entraine une coupure abrupte du son.

sys_adsr.svg

Une enveloppe d’amplitude permet de moduler l’amplitude du signal au cours du temps.
Nous pouvons considérer l’enveloppe ADSR simplifiée ci dessous :

  • A ttack
  • D ecay
  • S ustain
  • R elease

avec_enveloppe.svg

Q1. Proposer une mise en oeuvre de l’enveloppe ADSR ci-dessus, faisant apparaitre une machine d’états ( switch case en langage C ).

REMARQUE : L’appui sur une autre touche au cours de la séquence ADSR doit interrompre la séquence en cours pour exécuter la nouvelle ( en passant par la phase release pour ne pas couper le son trop brusquement ).

interr_adsr.svg

Au cours du jeu, la séquence NOTE ON- NOTE OFF ne se succède pas forcément pour une même note ( on peut maintenir enfoncée une touche alors qu’on appuie sur la suivante ).

interr_adsr2.svg

Q2. Proposer une modification de la machine d’état afin de générer l’enveloppe ADSR pour la dernière touche appuyée.