Programación General > Delphi

 Sonido Y Delphi

(1/1)

rodrigoshoto:
Hola, necesito ayuda... quiero saber como controlar el volumen del sistema desde delphi... osea bajar o subir el volumen... dar balance... gracias desde ya...

makio:
Lo que puedes hacer es lo siguiente, ya sea mostar dispositivos de sonidoy audio que se encuentra en panel de control o mostrar lo que es el volumen general, esto se hace asi:

dispositivos de sonidoy audio:

para este debes de poner ShellApi en los uses:

winNT
ShellExecute(Application.MainForm.Handle,nil,Pchar('c:\windows\system32\rundll32.exe'),Pchar('shell32.dll,Control_RunDLL mmsys.cpl,,0'),nil,SW_SHOW);

win9x
ShellExecute(Application.MainForm.Handle,nil,Pchar('c:\windows\rundll32.exe'),Pchar('shell32.dll,Control_RunDLL mmsys.cpl,,0'),nil,SW_SHOW);

y para mostrar lo que es el volumen general:

WinExec('SNDVOL32.EXE',SW_SHOWNORMAL);

Espero que te sea de ayuda. :D

Amilius:
Este procedure modifica el volumen para midi. ;)


--- Código: Text --- implementationuses mmSystem,registry,sysutils; .... procedure VolumenMidi(VOLUMEN_MIDI_R, VOLUMEN_MIDI_L:integer);var MidiOutPutDev:string;    amt,MidiOutputDevid,t:integer;    MidiCap:TMIDIOUTCAPS;begin  with TRegistry.Create do  begin    RootKey := HKEY_CURRENT_USER;    OpenKey('Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap', false);    if ValueExists('CurrentInstrument') then      MidiOutPutDev := ReadString('CurrentInstrument');    free;  end;  amt := MidiOutGetNumDevs;  MidiOutputDevid := - 1;  for t := 0 to amt-1 do  begin    MidiOutGetDevCaps(t, @Midicap, Sizeof(Midicap));    if StrPas(@MidiCap.szPName)= MidiOutPutDev then      MidiOutputDevid := t;  end;  midiOutSetVolume(MidiOutputDevid, (VOLUMEN_MIDI_R shl 16) + VOLUMEN_MIDI_L);end;  

Amilius:
Mmmm, el código anterior no funciona en XP o es por la mugre tarjeta de sonido de mi nueva máquina, en nada comparable al chip YAMAHA para midis de mi antigua computadora.  :(

Esto modificara el volumen de TODOS los dispositivos midi, claro que casi siempre sólo tendrán 1 habilitado. Error si no pudo fijar el volumen de al menos 1 dispositivo.


--- Código: Text --- function VolumenMidi(Volumen_Midi_L,Volumen_Midi_R:integer):boolean;var  NroDispositivos,i:integer;begin  NroDispositivos:=MidiOutGetNumDevs;  result:=false;  for i := 0 to NroDispositivos-1 do    result:=result or (midiOutSetVolume(i, (VOLUMEN_MIDI_R shl 16) + VOLUMEN_MIDI_L)=MMSYSERR_NOERROR);end;  

Navegación

[0] Índice de Mensajes

Ir a la versión completa