Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Aufnahmequelle wählen? (https://www.delphipraxis.net/87986-aufnahmequelle-waehlen.html)

Nuclear-Ping 8. Mär 2007 14:14


Aufnahmequelle wählen?
 
Hallo, liebe Community,

ich möchte in meiner Anwendung, dass sie beim Start die "Standard Aufnahmequelle" von Windows auf eine bestimmte Soundkarte schaltet ("USB Audio" heisst das Teil), von dieser dann LineIn als Eingang wählt und diesen auf volle Lautstärke setzt.

Es geht um eine Hardware, die zu unserer Software mitgebaut und -geliefert wird, die eine eingebaute USB-Soundkarte hat, die (idealerweise -.-) "USB Audio" heisst. Das Gerät wird auch über USB angeschlossen. Wenn die Software gestartet wird - bzw. spätestens wenn eine Analyse läuft - MUSS sicher gestellt sein, dass der LineIn dieses Audiogeräts als Aufnahmequelle gewählt ist, da halt hierüber die Daten kommen.

Wenn man z.B. die USB-Verbindung trennt, stellt Windows die Aufnahmequelle wieder auf den Standardsoundtreiber und auf "Mikrofon". Steckt man das Gerät wieder dran und wählt manuell das Gerät, so steht die Aufnahme standardmäßig auf Mikrofon und die Lautstärke ist ziemlich runtergeregelt.

Ich bemühe schon seit gut zwei Tagen Google, bin auch auf diverse Sachen gestoßen (MSDN, SwissDelphiCenter, delphi.about.com, etc.) und hab hier im Forum gesucht (http://www.delphipraxis.net/internal...ect.php?t=6599 - leider 0 Antworten) aber irgendwie wurde ich daraus nicht schlau oder es wurde nicht dieses Thema behandelt.

Weiß hier jemand Rat? ;)

Danke und Grüße,

Mario

Nuclear-Ping 10. Mär 2007 10:13

Re: Aufnahmequelle wählen?
 
Hallo,

hab eine Lösung gefunden. Ist zwar nicht unbedingt das, was ich mir vorgestellt hab, aber unterm Strich auf jeden Fall sauberer.

Hab keine Antworten und Lösungen gefunden, wie ich die globale Windows-Einstellung umstelle. Deswegen habe ich die entsprechenden Teile in der Anwendung von "TAudioIO" mit "BASS" ersetzt, welche gewünschte Funktionen unterstützt.

Delphi-Quellcode:
function BASS_Initialize_Recording_Device: Boolean;
var
  i: Integer;
  ChannelName,
  DeviceName: PChar;
  FoundDevice: Boolean;
begin
  Result := FALSE;
 
  // **** Aufnahmegerät auf "USB Audio" setzen
  FoundDevice := FALSE;

  BASS_RecordFree;
  i := 0;
  DeviceName := BASS_RecordGetDeviceDescription (i);
  while DeviceName <> nil do
    begin
      if (StrPas(DeviceName) = SOURCE_AUDIO_NAME) then
        begin
          BASS_RecordInit (i);
          FoundDevice := TRUE;
          break;
        end;
      inc (i);
      DeviceName := BASS_RecordGetDeviceDescription (i);
    end; // while

  if not FoundDevice then
    raise Exception.Create ('Fehler: Das Audiogerät "' + SOURCE_AUDIO_NAME + '" konnte nicht gefunden werden.');

  // **** Aufnahmequelle auf "LineIn" und max. Lautstärke setzen
  FoundDevice := FALSE;
  i := 0;
  ChannelName := BASS_RecordGetInputName(i);
  while ChannelName <> nil do
    begin
      if (StrPas(ChannelName) = SOURCE_AUDIO_INPUT) then
        begin
          FoundDevice := TRUE;
          BASS_RecordSetInput (i, BASS_INPUT_ON or BASS_INPUT_LEVEL or 100);
          break;
        end;
      inc(i);
      ChannelName := BASS_RecordGetInputName(i);
    end; // while

  if not FoundDevice then
    raise Exception.Create ('Fehler: Für das Audiogerät "' +
            SOURCE_AUDIO_NAME + '" konnte die Quelle "' +
            SOURCE_AUDIO_INPUT + '" nicht gewählt werden.');

  // ****

  Result := TRUE;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr.

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