Étape 9

Un réveil en douceur le dimanche matin
(avec par exemple la cantate de Bach à 8h05)

fade in en cours


On trouve facilement des programmes gratuits permettant de déclencher une tâche à une date et une heure précise. (Pour Windows, ce programme est fourni avec le système : voir tâches planifiées, task manager.) Ici la tâche consistera à lancer le navigateur avec le chemin et le nom du fichier 'page9.html' comme attribut.
Pour ce fichier, procédez comme pour les étapes précédentes. Dans la balise audio rajoutez les attributs autoplay et controls. Pour la source, mettez l'adresse de votre radio web préférée. Pour la cantate du dimanche à 8h c'est BR-Klassik. (Bouton droit de la souris sur le lecteur, "Copier l'Url du fichier audio")
Les lève-tôt préfèreront la version de France Musiques à 7h. (Bouton droit de la souris sur le lecteur de France Musiques, "Informations sur la page" pour récupérer l'Url)
Pour augmenter le volume progressivement (fade in) nous allons envoyer une information de volume à intervalles réguliers ; et pour tenir compte de l'effet physiologique nous utiliserons une courbe exponentielle.
Pour en savoir plus concernant la relation entre l'intensité sonore ressentie et le niveau, faites une recherche dans Wikipédia sur le terme "décibel" ou "sone".
La courbe sera de la forme : volume = 2 à la puissance (i/a - b). Toutes les a boucles l'intensité double. Après a*b boucles le résultat sera 1. Avec a=10 et b=10 cela donne 100 boucles. En fixant l'intervalle à 200ms le processus durera 20s.
Et comme je ne peux rien vous refuser ;-) voici l'aspect de la courbe :




 
<script type = "text/javascript">
var lecteur=document.getElementById("lecteur");
var i=0;
var intval=200;
var t=Date.now();  // optionnel, nécessaire pour l'affichage du message
var idTemp=setInterval(function(){fadein()},intval);  //mise en place de la boucle
function fadein()
{
var n=Math.pow(2,i/10-10);
	if(n<=1){    //tant que le volume est inférieur à 1 on enchaîne les boucles
	 lecteur.volume= n;
	 i++; //i augmente de 1 à chaque boucle
	 }
  else {    
	 clearInterval(idTemp);   //arrêt des boucles
//optionnel-----------------------
	 var d= Math.round((Date.now()-t)/100)/10;  // calcule la durée totale écoulée 
	 document.getElementById("message").innerHTML="boucles=" + i +"; durée=" + d + "s"; // affichage des paramètres
//---------------------------------
  	} 
}
</script>

Ces valeurs sont modifiables. Si vous trouvez que cela met trop de temps à démarrer essayez par exemple :
var volume=Math.pow(2,i/20-5);
Ce sont les valeurs utilisées pour la présente page.