Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Audiostream lauter machen (https://www.delphipraxis.net/142725-audiostream-lauter-machen.html)

Zacherl 2. Nov 2009 15:53


Audiostream lauter machen
 
Hey,

ich spiele im Moment mit Audiostreams rum, genauer gesagt schicke ich einen Audiostream von einem Computer zum Anderen. Das klappt alles wunderbar über WaveInOpen(), etc, doch die Lautstärke des Streams ist leider viel zu gering. Dies liegt nicht an meinem Programm, sondern am Headset.

Meine Frage jetzt: Gibt es eine einfache Methode, mit der ich die Lautstärke des Streams erhöhen kann? Skype z.B. kann den empfangenen Stream auch irgendwie lauter machen. Zum Ausgeben verwende ich übrigens WaveOutWrite().

Viele Grüße
Zacherl

turboPASCAL 2. Nov 2009 16:38

Re: Audiostream lauter machen
 
Wenn du den Stream eh als Daten hast zB. als Bytearray oder was auch immer,
dann multipliziere jedes Bbyte einfach um den Faktor X.

himitsu 2. Nov 2009 16:48

Re: Audiostream lauter machen
 
Du könntest auch über den "Mixer"? die Lautstärke regeln

Hier im Forum suchenMixer (du weißt doch, die Lautstärkeregelung da in der Taskleiste ...
falls es da nicht schon bis zum Anschlag aufgedreht ist)

Zacherl 2. Nov 2009 16:58

Re: Audiostream lauter machen
 
Also die Mixer Lautstärke ist auf Maximum. An das Multiplizieren der Words im Buffer habe ich auch schon gedacht, nur leider nimmt dies zu viel Rechenzeit in Anspruch, sodass das Delay von 2 Sekunden glatt auf 20 Sekunden ansteigt :?

Delphi-Quellcode:
I := 0;
while I < Len do
begin
  PWord(Cardinal(Data) + I)^ := PWord(Cardinal(Data) + I)^ * 2;
  Inc(I, 2);
end;

turboPASCAL 2. Nov 2009 17:14

Re: Audiostream lauter machen
 
Wie gross ist denn der Puffer ?

Zacherl 2. Nov 2009 17:51

Re: Audiostream lauter machen
 
Hängt von der Bitrate, Channels, etc. ab:

Delphi-Quellcode:
FACMC.FormatIn.Format.nChannels := Channels;
  FACMC.FormatIn.Format.nSamplesPerSec := SamplesPerSecond;
  FACMC.FormatIn.Format.nAvgBytesPerSec := SamplesPerSecond * Channels * 2;
  FACMC.FormatIn.Format.nBlockAlign := Channels * 2;
  FACMC.FormatIn.Format.wBitsPerSample := BitsPerSample;
  FACMC.InputBufferSize := FACMC.FormatIn.Format.nAvgBytesPerSec;
Getestet habe ich mit 1 Channel, 11050 SamplesPerSecond und 16 BitsPerSample. Das wäre dann eine Buffergröße von 22100 Bytes, also ca. 21.5 KiB.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 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