AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Equalizer (Parametric EQ) ohne Wiedergabe (mit Bass.dll?)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von DocE · begonnen am 29. Mär 2007 · letzter Beitrag vom 30. Mär 2007
Antwort Antwort
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#1

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

  Alt 29. Mär 2007, 23:38
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
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#2

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

  Alt 30. Mär 2007, 03:09
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 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