Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv (https://www.delphipraxis.net/159684-moechte-winamp-stummschalten-falls-anderer-ton-z-b-youtube-vid-aktiv.html)

Julian M. 7. Apr 2011 22:16

Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Hallo,

da ich im Hintergrund immer Winamp laufen habe und es mich nervt, es jedes mal stummschalten zu müssen,
wenn ich mal ein kurzes Video auf Youtube etc. gucken will, dachte ich, man könnte da vielleicht etwas schreiben.

Ich hab hier auf Delphi-Praxis schon ein Programm geladen, mit dem man Winamp steuern kann.
(Auch lauter/leiser)

Ich weiß jetzt nur nicht, wie ich mit dem Programm ermitteln soll, ob ein anderer Ton abgespielt wird, als der von Winamp. Es gibt auch bereits ein Programm, welches Winamp stumm stellt, wenn bei Teamspeak Jemand spricht.

Ließe sich dass auch so programmieren, dass Winamp stummgeschaltet wird, wenn ein Ton von einem anderen ( egal welchem) Programm kommt? Wenn ja, wie? :D


Danke+ Gruß Julian

rollstuhlfahrer 7. Apr 2011 22:40

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Herzlich willkommen in der DP :dp: :dp:

Wenn du Win >= Vista hast, dann kannst du mal versuchen, ob es ein Event der Sound-API gibt, wenn ein anderes Programm die Tonausgabe startet. Mit Win XP und drunter hast du schlechte Karten.

Bernhard

EWeiss 7. Apr 2011 22:52

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Das ist eigentlich kein Problem
Du benötigst quasi nur ein kleines Programm.

Wenn Winamp läuft suche das WindowHandle über FindWindow..
Danach sendest du eine Message an Winamp

Zitat:

IPC_SETVOLUME = 122;
(* (requires Winamp 2.0+)
** SendMessage(hwnd_winamp,WM_WA_IPC,volume,IPC_SETVO LUME);
** IPC_SETVOLUME sets the volume of Winamp (from 0-255).
*)
Das funktioniert immer und überall.
Kannst dann sogar noch bestimmen wie laut er dann sein darf oder halt ganz aus.

Zitat:

wenn ein Ton von einem anderen ( egal welchem) Programm kommt?
Hmm das habe ich überlesen.

gruss

Julian M. 8. Apr 2011 15:05

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
@rollstuhlfahrer:

Danke für den Tipp, hab zwar Win Xp, aber ne Windows 7 OEM hab ich auch noch.
Hast du ne Ahnung wie man mit Delphi auf die Sound-API zugreift?

@EWeiss: Danke, also das steuern von Winamp mit Delphi klappt gut, mein Hauptproblem ist halt, wie ich überprüfe, ob ein anderes Programm außer Winamp Ton wiedergibt.

Gruß Julian

EWeiss 8. Apr 2011 15:09

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Hast du ne Ahnung wie man mit Delphi auf die Sound-API zugreift?
Am besten wäre es wenn du das mit hilfe der bass.dll erledigst.
Diese ist kompatibel zu XP und Win7

Schau dir das RecordTest Sample in der package an.
Ich denke damit ließe sich zumindest feststellen ob überhaupt ein TonSignal ankommt.
Das problem wird aber dennoch sein wie feststellen ob es von Winamp kommt oder von einer anderen anwendung.

gruss

BenjaminH 8. Apr 2011 15:18

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Hi,
was du brauchst ist Zugriff auf die Core Audio Funktionen von Windows. MSDN-Library durchsuchenWASAPI
Damit kannst du erfahren welche Programme gerade Sound senden, genauso, wie es z.b. im Mixer selbst angezeigt wird.

Ich habe hier im Forum vor einer Weile mal den Mixer von Windows 7 nachgebaut gesehen(leider find ich ihn jetzt nicht mehr - wenns jemand findet, das Thema reizt mich grad selbst sehr).
Wenn du dir davon den Code anschaust müsstest du selbst rausfinden können, wie man herausfindet welche Anwendung gerade Sound abspielt.

Viel Erfolg,
Benjamin

EWeiss 8. Apr 2011 15:51

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von BenjaminH (Beitrag 1093952)
Hi,
was du brauchst ist Zugriff auf die Core Audio Funktionen von Windows. MSDN-Library durchsuchenWASAPI
Damit kannst du erfahren welche Programme gerade Sound senden, genauso, wie es z.b. im Mixer selbst angezeigt wird.

Ich habe hier im Forum vor einer Weile mal den Mixer von Windows 7 nachgebaut gesehen(leider find ich ihn jetzt nicht mehr - wenns jemand findet, das Thema reizt mich grad selbst sehr).
Wenn du dir davon den Code anschaust müsstest du selbst rausfinden können, wie man herausfindet welche Anwendung gerade Sound abspielt.

Viel Erfolg,
Benjamin

Die ist doch eingebunden in der Bass.dll
Warum mehr Arbeit machen als nötig.

gruss

rollstuhlfahrer 8. Apr 2011 16:07

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von EWeiss (Beitrag 1093963)
Die ist doch eingebunden in der Bass.dll

Nicht ganz. Man benötigt ein Addon zu der Bass.dll (siehe entsprechendes Forum).

Bernhard

Julian M. 8. Apr 2011 16:14

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Jetzt bin ich verwirrt :D

Ihr habt ne ganze Menge mehr Ahnung davon als ich...

Also wenn ich das so richtig rauslese - ohne Win 7 oder Vista geht nichts. ?

Aber wenn ich den Windows 7 Mixer nachgebaut hier im Forum finde, dürfte es nicht mehr soo schwer sein... Hoffe ich :)

EWeiss 8. Apr 2011 16:28

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1093967)
Zitat:

Zitat von EWeiss (Beitrag 1093963)
Die ist doch eingebunden in der Bass.dll

Nicht ganz. Man benötigt ein Addon zu der Bass.dll (siehe entsprechendes Forum).

Bernhard

WASAPI ist ein ADDON für Bass ja ich weiss ;)

gruss

BenjaminH 8. Apr 2011 16:44

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Ich sehe da keine Möglichkeit damit direkt auf andere Sessions zugreifen zu können.
Oder habe ich was übersehen?

rollstuhlfahrer 8. Apr 2011 17:57

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Ich weiß nicht, wie Windows ab Vista das Audio-System regelt. Aber es sollte schon so sein, dass ein Benutzer nicht in die Angelegenheiten eines anderen Benutzers eingreifen darf. Somit sollte man nur seinen eigenen Kram regeln können, was aber bei Einzelbenutzersystemen nicht unbedingt schwer wiegt.

Bei Windows XP gibt es so was wie bei Win >= Vista nicht. Das heißt, du hast nicht die Funktionen, um einzelnen Programmen den Ton abzudrehen, o.Ä. Somit sollte das Nachstellen dieser Funktionen sehr schwer bis unmöglich werden. Da vermutlich alle hier für die Soundausgabe irgendwelche Frameworks benutzen, dürfte dir auch keiner sagen können, wie die Funktion heißt, um die Soundausgabe zu starten. Wenn du das wüsstest, könntest du die Hooken.

Bernhard

Namenloser 8. Apr 2011 18:14

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Hab letztens was in einem MSDN-Blog ein Beispiel zu WASAPI gesehen, was hilfreich sein könnte:
WASAPI loopback capture (record what you hear)

Habe den Artikel nur flüchtig gelesen, aber ich glaube, dort wurde erwähnt, dass WASAPI nur dann ein Signal sendet, wenn tatsächlich etwas ausgegeben wird – also wenn es still ist, fließen auch keine Daten. Das sollte sich für deine Zwecke ausnutzen lassen.

edit: Wobei, ich merke gerade... wenn du WinAmp am laufen hast, dann wird natürlich immer etwas ausgegeben. Also geht es so wohl doch nicht. Vielleicht ist der verlinkte Artikel (und sein Vorgänger) aber trotzdem hilfreich.

Assarbad 8. Apr 2011 19:31

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Für mich funktionieren die Tastaturkürzel ganz gut. Maus rauskramen ist da nicht nötig. Warum mehr Arbeit machen als nötig?

Ansonsten stimme ich Bernhard zu. Wobei fraglich ist inwieweit man da alle Funktionen mit Hooks abdecken kann. Und das Gefummel mit Sound per Prozeß geht bekanntlich nur auf neueren Windows-Versionen.

EWeiss 8. Apr 2011 20:16

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von NamenLozer (Beitrag 1093996)
Hab letztens was in einem MSDN-Blog ein Beispiel zu WASAPI gesehen, was hilfreich sein könnte:
WASAPI loopback capture (record what you hear)

Habe den Artikel nur flüchtig gelesen, aber ich glaube, dort wurde erwähnt, dass WASAPI nur dann ein Signal sendet, wenn tatsächlich etwas ausgegeben wird – also wenn es still ist, fließen auch keine Daten. Das sollte sich für deine Zwecke ausnutzen lassen.

edit: Wobei, ich merke gerade... wenn du WinAmp am laufen hast, dann wird natürlich immer etwas ausgegeben. Also geht es so wohl doch nicht. Vielleicht ist der verlinkte Artikel (und sein Vorgänger) aber trotzdem hilfreich.

Deshalb habe ich auf das Sample RecordTest von Bass verwiesen.
Aber wie gesagt denke auch das es nicht möglich ist.
Egal ob ein Signal ankommt oder nicht er kennt die Processe der laufenden anwendungen nicht.
Und wie du schon sagst da Winamp ja immer läuft ist da auch nie was stumm.

gruss

Julian M. 9. Apr 2011 19:32

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
danke für die vielen Beiträge zum Thema.
Also das muss doch möglich sein. Sogar unter xp, denn ich kann doch z.B. mit einem Programm alles aufnehmen was derzeit abgespielt wird. Wenn man das dann abgleicht mit dem was von Winamp abgespielt wird, kann man ja feststellen ob es nur Winamp ist, welches Ton wiedergibt oder noch andere Quellen.
Nur das dürfte etwas rechenaufwendiger sein.


Edit: Noch ne Idee, es ginge doch auch über die Lautstärke. Die Lautstärke von Winamp abgleichen mit der Lautstärke der gesamten Soundausgabe. Weiß Jemand wie ich die Lautstärke der gesamten Soundausgabe abfragen kann ?


Gruß Julian

alfold 9. Apr 2011 20:57

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Schau mal auf diesen linkhttp://www.delphi-forum.de/viewtopic...emlautst%E4rke
vielleicht löst es Dein Problem:wink:
Oder auch diesen http://www.delphi-forum.de/topic_Win...a_87480,0.html

alfold

Namenloser 9. Apr 2011 21:08

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von alfold (Beitrag 1094170)
Schau mal auf diesen linkhttp://www.delphi-forum.de/viewtopic...emlautst%E4rke
vielleicht löst es Dein Problem:wink:
Oder auch diesen http://www.delphi-forum.de/topic_Win...a_87480,0.html

alfold

Das ist sicher nicht der schwierige Part...

Julian M. 9. Apr 2011 21:38

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Also ich hab noch was gefunden. Nur weiß ich nicht ob man damit nun die eingestellte Lautstärke ermitteln (genau das will ich ja nicht) oder die Lautstärke des gerade abgespielten.

Leider funktioniert es nicht! Als Ergebnis kommt immer die gleiche Zahl raus :( (65024)

http://www.delphi-treff.de/tipps/mul...rke-ermitteln/

alfold 9. Apr 2011 21:50

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Ne, aber mit Setvolume kann man die Lautstärke auch kleiner machen!
Hast Du Dir meinen Link angeschaut, den Code von Gausi ist genau das was Du suchst!

alfold

Namenloser 9. Apr 2011 21:54

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von alfold (Beitrag 1094178)
Ne, aber mit Setvolume kann man die Lautstärke auch kleiner machen!
Hast Du Dir meinen Link angeschaut, den Code von Gausi ist genau das was Du suchst!

alfold

Nein, das ist nicht was er sucht. Er versucht herauszufinden, ob ein Programm (außer Winamp) Sound ausgibt.

Julian M. 9. Apr 2011 21:55

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Danke, aber Winamp zu steuern ist doch gar nicht das Problem ;) das klappt schon ohne Probleme.
Es geht eher darum, Winamp dann zu steuern (leiser zu machen), wenn ein anderer Ton abgespielt wird.

alfold 9. Apr 2011 22:22

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Alles klar stand grad ein bischen neben mir:oops: hatte zuviel sound um die Ohren:wink:

Dein Vorhaben ist bischen schwierig, würde ja nur gehen wenn Du das Handel (FindWindowHandle) herrausbekommst der auf das soundsysthem zugreift! Was sicherlich möglich ist und darauf hin Dein Winamp mutet! Das Prog müsste permanent im Hintergrund laufen.
Interresant währe dieses schon, nur zumuten würd ich mir sowas nicht, den Aufwand zu betreiben nur um Winamp zu muten!
Zumal man ja als normaler user weiss, was man gerade machen will auf seinem Rechner:wink:

gruss alfold

BenjaminH 9. Apr 2011 23:51

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Kleiner Workaround fürs erste, wäre einfach, ob eine Fenster mit "Youtube" im Titel offen ist.

EWeiss 10. Apr 2011 10:21

AW: Möchte Winamp stummschalten, falls anderer Ton (z.B. Youtube-Vid) aktiv
 
Zitat:

Zitat von BenjaminH (Beitrag 1094185)
Kleiner Workaround fürs erste, wäre einfach, ob eine Fenster mit "Youtube" im Titel offen ist.

Ist wohl die beste lösung und effektiver als nach Soundquellen zu suchen
die eventuell geöffnet sein könnten.

Zumal es eh nur um Winamp geht.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz