Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Equalizer (Parametric EQ) ohne Wiedergabe (mit Bass.dll?) (https://www.delphipraxis.net/89345-equalizer-parametric-eq-ohne-wiedergabe-mit-bass-dll.html)

DocE 29. Mär 2007 22:38


Equalizer (Parametric EQ) ohne Wiedergabe (mit Bass.dll?)
 
Hallo zusammen,

ich benötige eine Equalizer-Funktion, die ich "offline", also ohne den Sound wiederzugeben, an WAVE-Daten (also. z.B. einer WAVE-Datei bzw. in den Speicher eingelesenen WAVE-Daten) anwenden kann. Nach einigem Suchen im Internet und in der DP stieß ich immer wieder auf die Bass.dll (http://www.un4seen.com/). Allerdings scheint diese die EQ-Funktion ausschließlich bei der Wiedergabe zu unterstützen?! Verwendet werden dafür wohl DirectX-Funktionen. (vgl. BASS-Beispiel "FxTest" -> BASS_ChannelSetFX(chan, BASS_FX_PARAMEQ, 1) )

Besteht evtl. auch die Möglichkeit diese Funktion der Bass.dll ohne Wiedergabe zu nutzen? Ich habe u.a. mit BASS_ChannelGetData experimentiert, allerdings liefert diese Funktion scheinbar nur Daten, wenn auch eine Wiedergabe läuft. (Mit den Daten selber konnte ich nicht viel anfangen, da die zurückgelieferten Werte (z.B. 267980326) sich für mich (derzeit) in keinen Zusammenhang mit einer 16 Bit Wave Datei (Range: -32767 bis 32768) bringen lassen.)

Hintergrund: Ich möchte jeweils einen bestimmten Teil einer WAVE-Datei (z.B. 100 Samples / 2x 200 Bytes) einlesen, mit dem Equalizer bearbeiten und in einer neuen Datei abspeichern. Anschließend mit dem nächsten Teil (also z.B. den nächsten 100 Samples) fortfahren, allerdings ggf. mit anderen EQ-Einstellungen.

Hat jemand eine Idee, wie ich mit der Bass.dll [oder gerne auch anders] einen Parametric Equalizer verwirklichen kann, mit dem ich eine bestehende WAVE-Datei (bzw. Teile davon) entsprechend verändern und abspeichern kann?

Hilfreich wäre bereits, wenn jemand weiß, wie man mit der Bass.dll Daten verändern kann, ohne sie wiederzugeben, bzw. direkt die DirectX-EQ-Funktionen ohne Wiedergabe nutzen kann.

Vielen Dank schon mal!


Grüsse
...Doc

Wishmaster 30. Mär 2007 02:09

Re: Equalizer (Parametric EQ) ohne Wiedergabe (mit Bass.dll?
 
Hi

Ich bin mir nicht ganz sicher aber ich glaube das müsste mit der bass.dll funzen.


Demo
Delphi-Quellcode:
var buf : array [0..10000] of BYTE;
begin


Channel:= BASS_StreamCreateFile(FALSE, PChar(FSource), 0, 0, BASS_STREAM_DECODE or BASS_STREAM_AUTOFREE);

{vergiss nicht} 
BASS_ChannelSetFX(channel, bla, bla);


{Wen du willst kannst du das auch direkt in eine date schreiben indem du die bassenc.dll benutzt.}   
{Zbw. *.wav                                                                                     }
if (BASS_Encode_Start(Channel, PChar(FDest), BASS_ENCODE_PCM or BASS_ENCODE_AUTOFREE, nil, 0) = 0)then
begin
 //error
end

     while (BASS_ChannelIsActive(Channel) > 0) do
      begin
       BASS_ChannelGetData(Channel, @buf, 10000);
    if FAboard then Break;
       FPosition:= Trunc(100 * (BASS_ChannelGetPosition(Channel) / BASS_ChannelGetLength(Channel)));
      end;
  end


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