Réglage du son sur pc
-
- Messages : 4
- Inscription : dim. 23/déc./2018 19:13
Réglage du son sur pc
Bonjour tout le monde,
Je bricole Pb depuis un petit peu, et aujourd'hui je sèche sur un sujet.
Quelqu'un (ou une) saurait-il régler le volume général du pc logiciellement ?
SoundVolume(0, Volume, #PB_All) marche très bien mais uniquement pour le son concerné. Moi ce que je recherche, c'est le volume général.
Merci pour vos éventuels éclaircissements.
Bonne journée à toutes et à tous.
Je bricole Pb depuis un petit peu, et aujourd'hui je sèche sur un sujet.
Quelqu'un (ou une) saurait-il régler le volume général du pc logiciellement ?
SoundVolume(0, Volume, #PB_All) marche très bien mais uniquement pour le son concerné. Moi ce que je recherche, c'est le volume général.
Merci pour vos éventuels éclaircissements.
Bonne journée à toutes et à tous.
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Réglage du son sur pc
Bonjour et bienvenue dans le monde magique de PB
Code de TsSoft normalement
Code de TsSoft normalement
Code : Tout sélectionner
EnableExplicit
#CLSCTX_INPROC_SERVER = $01
#CLSCTX_INPROC_HANDLER = $02
#CLSCTX_LOCAL_SERVER = $04
#CLSCTX_REMOTE_SERVER = $10
#CLSCTX_ALL = #CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
#CLSCTX_INPROC = #CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER
#CLSCTX_SERVER = #CLSCTX_INPROC_SERVER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
Interface IMMDeviceEnumerator Extends IUnknown
EnumAudioEndpoints(dataFlow, dwStateMask, *ppDevices);
GetDefaultAudioEndpoint(dataFlow, role, ppEndpoint);
GetDevice(pwstrId, ppDevice);
RegisterEndpointNotificationCallback(pClient);
UnregisterEndpointNotificationCallback(pClient);
EndInterface
Interface IAudioEndpointVolume Extends IUnknown
RegisterControlChangeNotify( *pNotify)
UnregisterControlChangeNotify( *pNotify)
GetChannelCount( *pnChannelCount)
SetMasterVolumeLevel( fLevelDB.f)
SetMasterVolumeLevelScalar( fLevel.f,pguidEventContext)
GetMasterVolumeLevel(*pfLevelDB)
GetMasterVolumeLevelScalar(*pfLevel)
SetChannelVolumeLevel(nChannel,fLevelDB.f,pguidEventContext)
SetChannelVolumeLevelScalar( nChannel,fLevel.f,pguidEventContext)
GetChannelVolumeLevel( nChannel,*pfLevelDB.f)
GetChannelVolumeLevelScalar( nChannel,*pfLevel.f)
SetMute( bMute, pguidEventContext)
GetMute( *pbMute)
GetVolumeStepInfo( *pnStep, *pnStepCount)
VolumeStepUp( pguidEventContext)
VolumeStepDown( pguidEventContext)
QueryHardwareSupport( *pdwHardwareSupportMask)
GetVolumeRange( *pflVolumeMindB, *pflVolumeMaxdB, *pflVolumeIncrementdB)
EndInterface
Interface IMMDevice Extends IUnknown
Activate(iid, dwClsCtx, pActivationParams, ppInterface);
OpenPropertyStore( stgmAccess, ppProperties);
GetId(ppstrId);
GetState(pdwState);
EndInterface
Declare getendpointvolume(*endpointvolume)
Declare freeendpointvolume(*endpointvolume.iaudioendpointvolume)
Declare mediagetvolume()
Declare mediasetvolume(vol)
MediaSetVolume(255) ; de 0 a 255
Procedure GetEndPointVolume(*endpointvolume)
Protected deviceEnumerator.IMMDeviceEnumerator
Protected hr, defaultDevice.IMMDevice
CoInitialize_(#Null)
hr = CoCreateInstance_(?uuidof_MMDeviceEnumerator, #Null, #CLSCTX_INPROC_SERVER, ?uuidof_IMMDeviceEnumerator,@deviceEnumerator);#CLSCTX_ALL
hr = deviceEnumerator\GetDefaultAudioEndpoint(0, 1, @defaultDevice)
deviceEnumerator\Release()
hr = defaultDevice\Activate(?uuidof_IAudioEndpointVolume, #CLSCTX_INPROC_SERVER, #Null, *endpointVolume);
defaultDevice\release()
ProcedureReturn *endpointvolume
EndProcedure
Procedure FreeEndPointVolume(*endpointvolume.IAudioEndpointVolume)
*endpointvolume\release()
CoUninitialize_()
EndProcedure
Procedure MediaGetVolume()
Protected Volume.IAudioEndpointVolume
Protected volf.f
GetEndPointVolume(@Volume)
Volume\GetMasterVolumeLevelScalar(@volf)
volf = Round(volf * 100, #PB_Round_Nearest)
FreeEndPointVolume(Volume)
ProcedureReturn Int(volf)
EndProcedure
Procedure MediaSetVolume(vol)
Protected Volume.IAudioEndpointVolume
Protected volf.f
If vol < 0 : vol = 0 : EndIf
If vol > 100 : vol = 100 : EndIf
GetEndPointVolume(@Volume)
volf = vol / 100
Volume\SetMasterVolumeLevelScalar(volf, #Null)
FreeEndPointVolume(Volume)
EndProcedure
DataSection
uuidof_IAudioEndpointVolume:
Data.l $5CDF2C82
Data.w $841E,$4546
Data.b $97,$22,$0C,$F7,$40,$78,$22,$9A
uuidof_MMDeviceEnumerator:
Data.l $BCDE0395
Data.w $E52F,$467C
Data.b $8E,$3D,$C4,$57,$92,$91,$69,$2E
uuidof_IMMDeviceEnumerator:
Data.l $A95664D2
Data.w $9614
Data.w $4F35
Data.b $A7,$46,$DE,$8D,$B6,$36,$17,$E6
EndDataSection
-
- Messages : 4
- Inscription : dim. 23/déc./2018 19:13
Re: Réglage du son sur pc
Merci de tout cœur honorable scarabée...
Ça fonctionne au poil, et je vais l'utiliser déjà tel quel dans l'urgence, et après seulement, je vais tenter de le décortiquer...
Merci encore et à plus.
Ça fonctionne au poil, et je vais l'utiliser déjà tel quel dans l'urgence, et après seulement, je vais tenter de le décortiquer...
Merci encore et à plus.
Re: Réglage du son sur pc
Quand même, y'a pas plus simple que de copier/coller 116 lignes de code (presque illisibles au codeur Basic) ?
Il y a une fonction C waveOutSetVolume qui devrait pouvoir être portée plus facilement ?
(à noter que SoundVolume dépend de DirectX, donc ne concerne pas les sons systèmes)
Il y a une fonction C waveOutSetVolume qui devrait pouvoir être portée plus facilement ?
(à noter que SoundVolume dépend de DirectX, donc ne concerne pas les sons systèmes)
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Réglage du son sur pc
@Utilisateur Lambda
Content de t'avoir dépanné je retourne rouler ma bouse (de crotte)
@Marc
Surement...y'a toujours plus simple ou plus compliqué tout dépend pour qui.
Prend FRED ou TIMO !!! connaissent ils encore la définition de ce mot ?
La difficulté n'est qu'une question relative aux connaissances acquises, ou à la capacité pour l'affronter.
Pour ma part tout est compliqué, alors un peu plus ou un peu moins
De plus j'ai pas compris un traitre mot de ce que tu as dit, et c'est sûr pas une ligne du code de TsSoft non plus
Moi aussi j'ai trouvé que tout un placard pour bouger un curseur c'est "X a gérer" mais y'a quand de même pas de quoi s'énerver non plus ..hein !!!
Factuellement, le code marche, et c'est en majorité ce que je demande à un code la première étant déjà d’exister
Content de t'avoir dépanné je retourne rouler ma bouse (de crotte)
@Marc
Surement...y'a toujours plus simple ou plus compliqué tout dépend pour qui.
Prend FRED ou TIMO !!! connaissent ils encore la définition de ce mot ?
La difficulté n'est qu'une question relative aux connaissances acquises, ou à la capacité pour l'affronter.
Pour ma part tout est compliqué, alors un peu plus ou un peu moins
De plus j'ai pas compris un traitre mot de ce que tu as dit, et c'est sûr pas une ligne du code de TsSoft non plus
Moi aussi j'ai trouvé que tout un placard pour bouger un curseur c'est "X a gérer" mais y'a quand de même pas de quoi s'énerver non plus ..hein !!!
Factuellement, le code marche, et c'est en majorité ce que je demande à un code la première étant déjà d’exister
Re: Réglage du son sur pc
Certes, mais à force de copier/coller des blocs de codes pour n'utiliser parfois qu'une infime fonction, on créé des programmes énormes. (nids à bugs et à virus potentiels)
Personnellement, à part de rares cas, je n'intègre pas de code dont je ne comprends pas le contenu.
L'intelligence de Fred and Team est justement de faire de PB un langage "mini mir" (mini taille, mais fait le maximum)
Un objet/programme est au point non pas quand il n'y a plus rien à enlever, mais quand il n'y a plus rien à retirer (citation vague de je ne sais plus qui)
Je comprends l’éducation nationale (pas seulement en france) qui est obligé de remettre des cours d'informatique car on se rend compte que les jeunes ne font que du copier/coller de ce qui existe.
Et quand on me rétorque qu'il est inutile de réinventer la roue, je dis que sans volonté de recherche on aurait des voitures avec des roues en pierre
(j'arrête la digression pour ne pas polluer)
Personnellement, à part de rares cas, je n'intègre pas de code dont je ne comprends pas le contenu.
L'intelligence de Fred and Team est justement de faire de PB un langage "mini mir" (mini taille, mais fait le maximum)
Un objet/programme est au point non pas quand il n'y a plus rien à enlever, mais quand il n'y a plus rien à retirer (citation vague de je ne sais plus qui)
Je comprends l’éducation nationale (pas seulement en france) qui est obligé de remettre des cours d'informatique car on se rend compte que les jeunes ne font que du copier/coller de ce qui existe.
Et quand on me rétorque qu'il est inutile de réinventer la roue, je dis que sans volonté de recherche on aurait des voitures avec des roues en pierre
(j'arrête la digression pour ne pas polluer)
Re: Réglage du son sur pc
J'ai essayé d'utiliser waveOutSetVolume plus simplement mais ça ne marche pas. J'ai du zapper un truc.
Code : Tout sélectionner
Procedure SetWindowsVolume(VOL)
If OpenLibrary(1,"winmm.dll")
V = 65535/VOL ; A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.
; Affichage des commandes de la lib
; Resultat = ExamineLibraryFunctions(1)
; While NextLibraryFunction()
; Debug LibraryFunctionName()
; Wend
CallFunction(1, "waveOutSetVolume",V)
CloseLibrary(1)
ProcedureReturn 1
Else
Debug "nok"
ProcedureReturn 0
EndIf
EndProcedure
Debug SetWindowsVolume(20)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Réglage du son sur pc
@ArS
fait 3 fonctions strictement indépendantes :
- une le son à "donf"
- une le son à 0
- une le son à moitiée
Si les 3 fonctions marchent c'est ton calcul 65535/V qui bugue.
Genre un << ... fois qqch >>... Produit en croix... Proportion...
@Kcc
Je te décerne la palme du contributeur le meilleur du moment. Devant cet inconnu qui s'est anonymisé par une lettre grecque, qui nous prouve que ce n'est pas un désireux de saboter le sonotone connecté W10 de sa voisine, pour satisfaire ses frauduleuses affaires de maintenance informatique ?
Tu es bon Kcc... Tu es puissant... Tu lui as mis un mur, un "ouhôle" comme disent les alliés... N'aie crainte des vertiges de la connaissance. Et continue sur ce chemin qui te pousse soudainement à t'exprimer en code source.
PS : Plus sérieusement, pour quelqu'un comme moi, qui ne "surfe" que très médiocrement sur le Net, je trouve bien de voir débarquer un code avec, en toute modestie, l'auteur d'origine (TsSoft).
fait 3 fonctions strictement indépendantes :
- une le son à "donf"
- une le son à 0
- une le son à moitiée
Si les 3 fonctions marchent c'est ton calcul 65535/V qui bugue.
Genre un << ... fois qqch >>... Produit en croix... Proportion...
@Kcc
Je te décerne la palme du contributeur le meilleur du moment. Devant cet inconnu qui s'est anonymisé par une lettre grecque, qui nous prouve que ce n'est pas un désireux de saboter le sonotone connecté W10 de sa voisine, pour satisfaire ses frauduleuses affaires de maintenance informatique ?
Tu es bon Kcc... Tu es puissant... Tu lui as mis un mur, un "ouhôle" comme disent les alliés... N'aie crainte des vertiges de la connaissance. Et continue sur ce chemin qui te pousse soudainement à t'exprimer en code source.
PS : Plus sérieusement, pour quelqu'un comme moi, qui ne "surfe" que très médiocrement sur le Net, je trouve bien de voir débarquer un code avec, en toute modestie, l'auteur d'origine (TsSoft).
Re: Réglage du son sur pc
Même en n'utilisant pas de calcul ça ne marche pas.
Code : Tout sélectionner
Procedure SetWindowsVolume(VOL = 2) ; de 0 Mute à 4 Max
Select VOL
Case 0
V = 0
Case 1
V = 16384
Case 2
V = 32768 ; VOLUME à 50%
Case 3
V = 49152
Case 4
V = 65535
EndSelect
If OpenLibrary(1,"winmm.dll")
; Affichage des commandes de la lib
; Resultat = ExamineLibraryFunctions(1)
; While NextLibraryFunction()
; Debug LibraryFunctionName()
; Wend
CallFunction(1, "waveOutSetVolume",V)
CloseLibrary(1)
ProcedureReturn 1
Else
Debug "nok"
ProcedureReturn 0
EndIf
EndProcedure
Debug SetWindowsVolume(2)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Réglage du son sur pc
@ar-s
waveOutSetVolume_() est reconnu.
à priori , cette fonction ne marche plus avec w10.
http://www.vbforums.com/showthread.php? ... all-update
https://www.reddit.com/r/csharp/comment ... indows_10/
waveOutSetVolume_() est reconnu.
à priori , cette fonction ne marche plus avec w10.
http://www.vbforums.com/showthread.php? ... all-update
https://www.reddit.com/r/csharp/comment ... indows_10/
- TazNormand
- Messages : 1294
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Réglage du son sur pc
Salut
A tester sous windows 10 car je n'ai pas W10 :
Source : https://social.msdn.microsoft.com/Forum ... =vbgeneral
A tester sous windows 10 car je n'ai pas W10 :
Source : https://social.msdn.microsoft.com/Forum ... =vbgeneral
Code : Tout sélectionner
Enumeration
#Vol_Mute=$80000
#Vol_Up=$A0000
#Vol_Down=$90000
#AppCmd=$319
EndEnumeration
#WindowWidth = 390
#WindowHeight = 350
If OpenLibrary(1,"mmdevapi.dll")
If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "PureBasic - Gadget Demonstration", #PB_Window_MinimizeGadget)
Top = 10
GadgetHeight = 24
ButtonGadget(1, 223, Top, 72, GadgetHeight, "Mute")
ButtonGadget(2, 295, Top, 72, GadgetHeight, "Up") : Top+35
ButtonGadget(3, 295, Top, 72, GadgetHeight, "Down")
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 1 ; Mute
SendMessage_(WindowID(0),#AppCmd,WindowID(0),#Vol_Mute)
If GetGadgetText(1)="Mute"
SetGadgetText(1,"UnMute")
Else
SetGadgetText(1,"Mute")
EndIf
Case 2 ; Stop
SendMessage_(WindowID(0),#AppCmd,WindowID(0),#Vol_Up)
Case 3
SendMessage_(WindowID(0),#AppCmd,WindowID(0),#Vol_Down)
Case 8 ; Quit...
Event = #PB_Event_CloseWindow
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
EndIf
End
Re: Réglage du son sur pc
Salut TazNormand.
Le code fonctionne pour monter / descendre le volume, c'est sympa. Mais du coup on ne sait pas ou il en est ni comment le mettre à 80 / 100 par exemple.
Si on veut modifier le volume manuellement on peut faire un simple
En tout cas ça m'aura pris le choux une bonne partie de l'aprem. J'arrête là mes recherches. On est le 24 ^^
Le code fonctionne pour monter / descendre le volume, c'est sympa. Mais du coup on ne sait pas ou il en est ni comment le mettre à 80 / 100 par exemple.
Si on veut modifier le volume manuellement on peut faire un simple
Code : Tout sélectionner
RunProgram ("sndvol.exe" ," -f","") (ou sndvol32.exe si on a pas W10)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Réglage du son sur pc
J'suis pas sûr que y'ai vraiment beaucoup de solutions plus simple C'est vrai que c'est une demande "super extravagante", merci CROCRO
Même le GRAND NETMAESTRO s'y ai frotté sans succès au niveau facilité je parle
https://www.purebasic.fr/english/viewto ... 38#p403838
Même notre bon NICO utilise le même style de placard....en plus long encore , désolé MARC
J'ai refait un copié/collé.... (mon manque de connaissance m'y force bien souvent) mais pour ne pas me faire engueuler à nouveau, je me suis limité au lien
http://www.purebasic.fr/french/viewtopi ... 39#p179739
https://www.purebasic.fr/english/viewto ... 42#p479642
Tu sais ...au niveau modestie...j'suis "un peu" obligé
Même le GRAND NETMAESTRO s'y ai frotté sans succès au niveau facilité je parle
https://www.purebasic.fr/english/viewto ... 38#p403838
Même notre bon NICO utilise le même style de placard....en plus long encore , désolé MARC
J'ai refait un copié/collé.... (mon manque de connaissance m'y force bien souvent) mais pour ne pas me faire engueuler à nouveau, je me suis limité au lien
http://www.purebasic.fr/french/viewtopi ... 39#p179739
https://www.purebasic.fr/english/viewto ... 42#p479642
Merci OLLIVIEROllivier a écrit :Plus sérieusement, pour quelqu'un comme moi, qui ne "surfe" que très médiocrement sur le Net, je trouve bien de voir débarquer un code avec, en toute modestie, l'auteur d'origine (TsSoft).
Tu sais ...au niveau modestie...j'suis "un peu" obligé
Re: Réglage du son sur pc
Y'a pas de quoiKwai chang caine a écrit :Même notre bon NICO utilise le même style de placard....en plus long encore , désolé MARC
C'est bien de chercher dans les archives, mais quand le truc date de 5 ans (même s'il est bon) il est intéressant de voir si on peut pas faire mieux ou au moins plus simple. (IMHO). Si ça marche, tant mieux, mais on est souvent trop systématique au déterrage et ça devient un simple réflexe.
Cela dit, pour le volume, je comprend que les langages ne mettent pas ça comme fonction native: imaginons qu'un programme standard mette le son système "à fond", ce serait gênant pour l'utilisateur. Perso, il m'arrive d'avoir une musique de fond (douce) et de regarder un didacticiel youtube. Si une application remontait tous les canaux, ce serait insupportable (cependant cela ferait le bonheur des publicitaires)
C'est donc bien que les applications ne modifient que leur propre volume et le tout en dessous du volume global.
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Réglage du son sur pc
Bon remarque t'es mal tombé, pour une fois que tu fais un petit coup de calcaire, alors que dab tu m'aides
Comme quoi...t'es fait pour être gentil, ce dont je n'ai jamais douté , quand on est mauvais dans un comportement, faut pas insister, continue à être un ange
C'est vrai que quand c'est pour moi, je passe plus de temps pour rechercher si y'a pas plus court, car je connais mon projet...enfin en principe ... quoi que ...
Mais là comme c'est pas pour moi, et ai aucune idée des tenants et aboutissants du projet du demandeur, et qu'en plus dans ce cas précis, c'est un "Utilisateur LAMBDA" c'est encore plus dur de prévoir
Le fait de déjà trouver "cake" chose me satisfait, après l'avoir un minimum testé, les oeufs punais...c'est pour les chinois
Après... si la personne veut mieux en moins cher....il peut peut être continuer, il a déjà une piste
Comme quoi...t'es fait pour être gentil, ce dont je n'ai jamais douté , quand on est mauvais dans un comportement, faut pas insister, continue à être un ange
C'est vrai que quand c'est pour moi, je passe plus de temps pour rechercher si y'a pas plus court, car je connais mon projet...enfin en principe ... quoi que ...
Mais là comme c'est pas pour moi, et ai aucune idée des tenants et aboutissants du projet du demandeur, et qu'en plus dans ce cas précis, c'est un "Utilisateur LAMBDA" c'est encore plus dur de prévoir
Le fait de déjà trouver "cake" chose me satisfait, après l'avoir un minimum testé, les oeufs punais...c'est pour les chinois
Après... si la personne veut mieux en moins cher....il peut peut être continuer, il a déjà une piste