Progression de volume non linéaire avec un DispatcherTimer

Jayme65 Messages postés 60 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 - 23 nov. 2012 à 13:14
Jayme65 Messages postés 60 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 - 23 nov. 2012 à 22:06
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!!

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 nov. 2012 à 13:24
Bonjour,
Je dirais :
1) établis ton équation (puisque c'est elle qui fera varier le résultat). Tu n'en parles pas ! Mais cet aspect est purement mathématique.
2) fais-y varier x (+1 à chaque étape) ===>> déduis-en y et applique ce résultat y là :
à la place de :
UISound.musicPlayer.settings.volume += 1
tu dois avoir
UISound.musicPlayer.settings.volume = y
Non ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Jayme65 Messages postés 60 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 2
23 nov. 2012 à 16:05
établis ton équation (puisque c'est elle qui fera varier le résultat). Tu n'en parles pas !

Si, c'est exactement le sens de ma question...c'est cela que je demande!!
Je précise donc: quel type de formule pourrais-je utiliser pour ce faire?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 nov. 2012 à 17:45
ce n'est pas une "formule" !
C'est l'équation de la fonction que tu souhaites (celle qui correspond à l'évolution que tu souhaites du volume). Cet aspect là n'est pas uniquement mathématique ! les paramètres de la fonction, sa constante éventuelle, sont les éléments qui déterminent cette évolution (le tracé de ta courbe souhaité, si cela te "parle" mieux). Pour résumer : cela dépend des "goûts et des couleurs" et nécessite des connaissance minimùales en mathématiques.
Nous n'interviendrons ensuite ici qu'en ce qui concerne (si besoin en était toujours en dépit de ce que je t'ai dit dans mon premier message) la manière de faire évoluer x pour calculer (sur la base de TA fonction f(x), la valeur y = f(x) à appliquer) !!! Il nous faudra alors connaître la fonction f(x) que TU auras jugé retenir car correspondant à TES goûts.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Bonjour Jayme65.

Si vous voulez vraiment une progression exponentielle, au sens strict du mot, il vous suffit de remplacer
UISound.musicPlayer.settings.volume += 1

par
UISound.musicPlayer.settings.volume *= k

étant entendu que k est un nombre légèrement supérieur à 1.

Cordialement.


Étant illettré, je signe d'une croix : ×
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jayme65 Messages postés 60 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 2
23 nov. 2012 à 22:06
Merci pour ta réponse Zermelo!
J'ai trouvé une page très intéressante à ce sujet
http://gizma.com/easing/

Je vais maintenant essayer de mettre tout ça en forme ;-)
Merci!!
0
Rejoignez-nous