Contrôle du volume indépendant
Salut je voudrais connaître une façon de contrôler le volume d'un jeu sans modifier le son du système (celui dans la barre des tâches). Donc on peut baisser le volume du jeu sans modifier celui de Windows.
Avant j'utilisait DirectX, mais maintenant je me demande s'il y a un autre moyen. Je sais que je pourrais aussi utiliser SDL Mixer, mais j'aimerais ne pas avoir à distribuer de DLL avec mon logiciel. Je cherche à faire jouer un fichier MIDI en continu.
Merci :P
Correction d'une erreur dans mon dernier message
Oups, j'ai fait une erreur dans mon dernier message, il ne s'agit pas d'une valeur de 0 à 255 mais bien d'une valeur de 0 à 65535. J'aivais mal interprété la documentation:
Citation:
A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.
Voici donc ma fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| void __fastcall TForm1::SetVolume(const WORD Volume, DWORD *PrevVolume)
{
UINT DevCount = midiOutGetNumDevs();
for(UINT i=0; i<DevCount; i++)
{
MIDIOUTCAPS devCaps = {0};
midiOutGetDevCaps(i, &devCaps, sizeof(MIDIOUTCAPS));
if(devCaps.dwSupport & MIDICAPS_VOLUME)
{
HMIDIOUT hdev;
midiOutOpen(&hdev, i, NULL, NULL, CALLBACK_NULL);
if(PrevVolume)
midiOutGetVolume(hdev, PrevVolume);
midiOutSetVolume(hdev, MAKELONG(Volume, Volume));
midiOutClose(hdev);
break;
}
}
} |
Avec ma déclaration:
Code:
void __fastcall SetVolume(const WORD Volume, DWORD *PrevVolume = NULL);
Les paramètres sont le volume, une valeur de 0 à 0xFFFF qui sera appliqué de façon égal au canal gauche et droite; la valeur précédente du volume, 0 à 0xFFFFFFFF qui est facultative comme deuxième paramètre en sortie.