Contrôle du volume des Haut parleurs sur vista en vb.net

Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 - 5 août 2009 à 19:37
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 8 août 2009 à 15:14
Bonjour,

Voilà cela fait longtemps que je recherche le moyen de régler le volume de mes haut-parleurs à partir de mon application vb.
Je travail avec VB express 2008 sur un environnement vista.

Pour le moment, j'utilise :
Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As IntPtr, ByVal dwVolume As System.UInt32) As Integer

    Sub RegleVolume(ByVal i As Integer) 'Volume de 0 à 100%
        Dim stVolDr As String 'Volume Droit
        Dim stVolGa As String  'Volume gauche
        stVolGa = Hex((i / 100) * 65535)
        stVolDr = Right("0000" & Hex((i / 100) * 65535), 4)
        waveOutSetVolume(0, CLng("&h" & stVolGa & stVolDr))
    End Sub


Le problème c'est qu'à partir de ce bout de code, je ne sais pas gérer les haut-parleurs, je parviens uniquement à modifier le volume de mon application. Si les haut-parleurs sont à 0 ou muets alors je n'ai pas de son pour l'application.
J'ai déjà trouvé des sources en C qui m'ont l'air très compliquées !

Votre aide me sera précieuse, je ne sais plus comment m'y prendre.

Vincent Kro à votre service.

9 réponses

Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
8 août 2009 à 12:05
Salut,

Je pense que cela est peut-être le cas pour certains pc.
Pour le mien, par exemple, je ne pense pas. Je dispose aussi d'un bouton de contrôle du volume mais il règle le volume de la même façon que lorsque j'utilise la souris sur le contrôle du volume. Je m'explique, mon bouton n'a pas de position 0 ou 100% (rotation infini), il augmente ou diminue le son (par incrémentation).
Je pense qu'il doit être alors possible de régler le volume par un soft.

De plus si tu veux faire un programme avec de l'audio, il serait quand même intéressant de contrôler le volume. Une méthode serait de régler les haut-parleurs à 100% puis de contrôler le volume de l'application avec waveOutSetVolume.

Je suis vraiment étonné que ça ai l'air si difficile que ça.
Je me demande si la source que m'a communiqué "nhervagault" en C peut fonctionner pour ce que je veux faire et si on peux l'utiliser en vb.net.

Je deviens septique quant à l'aboutissement de mes recherches mais si je continue.

Vincent Kro à votre service.
2
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
5 août 2009 à 19:51
Salut

Regardes ce document

Tu auras peut etre la réponse attendue.
0
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
5 août 2009 à 20:04
Slt,

Merci de ta réponse aussi rapide.

Malheureusement, j'ai déjà essayé d'utiliser ce document mais je ne parviens pas à l'utiliser.
L'orsque j'utilise la fonction SetVolume :
Private Function SetVolume(ByVal volLeft As System.UInt16, _
    ByVal volRight As System.UInt16) As Integer

    Dim vol As System.UInt32 = (CType(volLeft, System.UInt32) And 65535) _
        Or (CType(volRight, System.UInt32) << 16)

    Select Case m_type
        Case DeviceTypes.Wave
            Return NativeMethods.waveOutSetVolume(m_hwo, vol)
        Case DeviceTypes.Aux
            Return NativeMethods.auxSetVolume(m_deviceID, vol)
        Case DeviceTypes.Midi
            Return NativeMethods.midiOutSetVolume(m_hwo, vol)
    End Select

    Return 0

End Function

J'ai une erreur avec m_type, je ne comprend pas où je dois assigner la valeur.
De la même façon le NativeMethods, je ne sais pas comment le déclarer.

Si tu as une piste ou une explication

Vincent Kro à votre service.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
5 août 2009 à 23:32
Le type c'est le peripherique que tu as choisi

Wav, MIDI, AUX

Il y a un fichier telechargeable.
0

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

Posez votre question
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
6 août 2009 à 10:53
Re,

Effectivement, mais le problème c'est que je souhaite régler le volume des haut-parleurs directement.
Lorsque je choisi le périphérique wav, cela correspond au volume de mon application.

Ce que je souhaite c'est modifier le volume général car celui de mon application dépend directement de celui de mes haut-parleurs. En clair je peux diminuer le son de mon application lorsque mes HP sont à 100% mais je ne peux pas montre le son si mes HP sont à 0%.

Il faut certainement choisir un autre périphérique que wav, mais je ne sais pas lequel et comment l'ajouter ?


Vincent Kro à votre service.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
6 août 2009 à 11:09
Salut,

Il faut attaquer le master peut etre.

Lien d'un autre projet

Donnes la réponse qu'en tu auras trouvé.
0
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
7 août 2009 à 18:14
Slt,

J'ai beau essayer, je ne parviens toujours pas à modifier le volume de mes haut-parleurs.
En plus, j'ai l'impression que pour le faire, je vais devoir créer plus de lignes de codes que tout le reste de mon application.
Je pensais qu'il existé un code du même genre que le premier que j'ai posté.

Je continue pourtant d'essayer même si l'utilisation de l'objet "Mixers" (pour attaquer le master) en VB.net n'a pas l'air si facile que ça (pour moi en tout cas ).
Je reste toujours preneur de nouveaux conseils ou idées.

Merci.

Vincent Kro à votre service.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
7 août 2009 à 21:06
Mouais....

Pas un mot n'est dit ici du type de haut-parleurs !!!!!
Il en existe (les miens sur la présente machine, par exemple) dotés d'un potentiomètre matériel totalement indépendant (et par voie de conséquence incontrôlable par soft), point barre...
Dès lors (pour ce type de haut-parleurs) : un bouton matériel permet de régler physiquement le volume maximum et le soft ne fera qu'interférer sur le volume prédéterminé (de 0% à 100 %, 100% étant le volume maximum matériel résultant de l'emploi du potentiomètre)...
Tout le reste ? Du pipeau ...
Alors ?
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
8 août 2009 à 15:14
Continue donc tes recherches, ami... continue...
Quant à ce qui concerne l'ajustement du volume de tes haut-p)arleurs par soft et même séparément : aucun problème (mais dans la mesure du minimum (0%) au maximum (100%) présent et prédéfini physiquement
... et rien d'autre.... le soft ne modifiant que la partie logique et non celle matérielle, sauf à rajouter un microcontrôleur à ta machine pour les ajustements physiques) ....
0