Meilleur auteur de réponses
Progression de volume non linéaire avec un DispatcherTimer

Question
-
Bonjour,
Je voudrais reproduire une effet de fade-in (progression de 0 à 100) au début de la lecture d'un son. Et je voudrais que cette progression ne soit pas linéaire, mais plutôt du style ease-in (exponentielle)
J'utilise un DispatcherTimer et voici ce que j'ai pour l'instant (donc, une progression linéaire)
Imports System.Windows.Threading Dim FadeTimer As DispatcherTimer = New DispatcherTimer() AddHandler FadeTimer.Tick, AddressOf FadeIn FadeTimer.Interval = TimeSpan.FromMilliseconds(25) Public Sub FadeIn(ByVal sender As Object, ByVal e As EventArgs) If UISound.musicPlayer.settings.volume < My.Settings.music_volume Then 'UISound est ma class qui gère le son - musicPlayer est un WMPlib - My.Settings.music_volume est le volume du son maximal UISound.musicPlayer.settings.volume += 1 CommandManager.InvalidateRequerySuggested() Else FadeTimer.Stop() End If End Sub FadeTimer.Start()
Comment puis-je donc, à l'aide d'un DispatcherTimer faire "monter" le son de façon exponentielle?
Merci pour le temps que vous voudrez bien prendre pour m'y aider!!
Réponses
-
Le bon lien, j’espère
https://skydrive.live.com/?cid=B18C4CD1D33C3CA7&id=B18C4CD1D33C3CA7%21110
J’ajoute une image :
La formule pour C c’est =POWER(2,B1/3).
Jouez avec les valeurs 2 et 3 dans la formule pour changer le graphique.
Cordialement,
- Modifié Aurel Bera jeudi 29 novembre 2012 07:32
- Marqué comme réponse Aurel Bera jeudi 29 novembre 2012 14:19
-
De point de vue informatique le problème est simple.
Chaque 100 ms ou 50 milisecondes vous changes les valeurs du volume (l'interval c'est un example).
Ça reste à vous de définir les valeurs que vous voulez pour donner l’image exponentielle.
Pour que le passage entre deux valeurs soit doux vous devez avoir des intervalles petits (peut-être moins 50 ms).
En effet vous devez faire pour l’oreille ce que le cinéma fait pour les yeux : il affiche environ 24 cadres par seconde et les yeux ne surprennent pas le changement de l’image.
Ou même définir un tableau de type intervalle volume de type :
Temp | Volume avec Temps – interval du temps 50 ms , et la valeur du volume. Mais ça reste pour vous de définir ces intervalles .
Cordialement,
- Marqué comme réponse Aurel Bera jeudi 29 novembre 2012 14:19
Toutes les réponses
-
Bonjour,
je ne sais pas du tout a l’écoute que pourrais faire un son en mode exponentielle
Je pense qu'il faudra jouer sur la façon de monter ou baisser le volume par des boucles différente en définissant des temps de pause entre chaque itération de la boucle. je trouve que c'est peut etre pas facile a faire mais possible.
Cordialement,
-
De point de vue informatique le problème est simple.
Chaque 100 ms ou 50 milisecondes vous changes les valeurs du volume (l'interval c'est un example).
Ça reste à vous de définir les valeurs que vous voulez pour donner l’image exponentielle.
Pour que le passage entre deux valeurs soit doux vous devez avoir des intervalles petits (peut-être moins 50 ms).
En effet vous devez faire pour l’oreille ce que le cinéma fait pour les yeux : il affiche environ 24 cadres par seconde et les yeux ne surprennent pas le changement de l’image.
Ou même définir un tableau de type intervalle volume de type :
Temp | Volume avec Temps – interval du temps 50 ms , et la valeur du volume. Mais ça reste pour vous de définir ces intervalles .
Cordialement,
- Marqué comme réponse Aurel Bera jeudi 29 novembre 2012 14:19
-
Bonjour,
Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement,
Aurel
-
J’ai jouée avec Excel et j’ai fait une liste avec ce que vous avez.
Regardez l’excel ici
https://skydrive.live.com/#!/edit.aspx?cid=B18C4CD1D33C3CA7&resid=B18C4CD1D33C3CA7%21134&app=Excel
vous pouvez jouer avec les valeurs sur la colonne C
Cordialement,
-
-
Le bon lien, j’espère
https://skydrive.live.com/?cid=B18C4CD1D33C3CA7&id=B18C4CD1D33C3CA7%21110
J’ajoute une image :
La formule pour C c’est =POWER(2,B1/3).
Jouez avec les valeurs 2 et 3 dans la formule pour changer le graphique.
Cordialement,
- Modifié Aurel Bera jeudi 29 novembre 2012 07:32
- Marqué comme réponse Aurel Bera jeudi 29 novembre 2012 14:19