- **Zone de dépôt** : C'est une zone dans laquelle les utilisateurs peuvent glisser-déposer des fichiers audio pour les charger dans le lecteur audio. Il y a également un bouton d'entrée de fichier pour sélectionner les fichiers à charger.
- **Contrôles de lecture** : Ce sont des boutons pour jouer, mettre en pause, arrêter et mettre en boucle l'audio. Il y a également un sélecteur de vitesse de lecture et une barre de volume.
- **Informations sur le fichier audio** : Il y a des éléments pour afficher le nom du fichier audio chargé et le temps écoulé/la durée totale de l'audio.
La page utilise le CSS de Bootstrap pour le style, et elle charge un script JavaScript personnalisé (`main.js`) pour gérer l'interaction de l'utilisateur avec le lecteur audio.
# Documentation du script JavaScript pour le lecteur audio et ses autres fonctions
Ces variables sont utilisées pour stocker des références aux éléments du DOM, à l'audio contexte, à l'analyseur audio, aux boutons de contrôle de lecture, etc.
# Fonctions
Le script implémente plusieurs fonctions, notamment :
`init()`
Cette fonction est appelée au chargement de la page pour initialiser le lecteur audio et ses composants associés, notamment la récupération des éléments du DOM, la création du contexte audio et de l'analyseur, et l'ajout d'écouteurs d'événements.
`handleDragOver(event)` et `handleDrop(event)`
Ces fonctions sont utilisées pour gérer les événements de glisser-déposer sur la zone de dépôt, permettant aux utilisateurs de charger des fichiers audio en les glissant-déposant.
`handleSpeedChange()`
Cette fonction est déclenchée lorsque l'utilisateur change la vitesse de lecture de l'audio.
`loadAudio(file)`
Cette fonction charge le fichier audio spécifié, l'affiche et met à jour l'affichage du temps.
`handlePlay(), handlePause(), handleStop()`
Ces fonctions sont utilisées pour gérer les actions de lecture, de pause et d'arrêt de l'audio.
`handleLoop()`
Cette fonction permet de gérer l'activation et la désactivation de la boucle de lecture.
`handleProgressBarClick(event)`
Cette fonction permet à l'utilisateur de modifier le point de lecture actuel en cliquant sur la barre de progression.
`enableButtons()`
Cette fonction active les boutons de contrôle de lecture.
`animate()`
Cette fonction est utilisée pour animer le spectre audio et mettre à jour le timer et la barre de progression.