Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bass Klasse -> Kleiner Fehler (https://www.delphipraxis.net/68535-bass-klasse-kleiner-fehler.html)

kurtm1 1. Mai 2006 09:49


Bass Klasse -> Kleiner Fehler
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich bin derzeit gerade dabei basierend auf die Komponenten von omata und turbopascal eine eigene Klasse für die Bass.dll zu schreiben.

Soweit funktioniert eigentlich eh alles, nur der Crossfader macht derzeit große Probleme. Ich hab schon alles debuggt, bin aber auf keinen Fehler gekommen, und bitte daher um Hilfe. Und zwar kann ich den Crossfader bei der ersten Änderung wie gewünscht einstellen, bei allen drauffolgenden werden jedoch völlig falsche Werte geschrieben...


In der zip Datei sind alle benötigten Dateien (inkl. der bass.dll und bass_fx.dll), würde mich freuen, falls sich das ma wer ansehen würde :lol:

kurtm1 2. Mai 2006 16:53

Re: Bass Klasse -> Kleiner Fehler
 
^^push

keiner eine idee?

kurtm1 4. Mai 2006 15:55

Re: Bass Klasse -> Kleiner Fehler
 
Letzter Aufruf dann bin offiziell verzweifelt :cry:

turboPASCAL 4. Mai 2006 19:43

Re: Bass Klasse -> Kleiner Fehler
 
Delphi-Quellcode:
procedure TMyBass.SetCrossfader(const Value: Byte);
var Left1,Right1:Integer;
begin
        left1  := 100 - value ;                       // <-
        Right1 := 100 - left1 ;                       // <-

        A.volume := round( (Left1  * A.volume) / 100); // <-
        B.volume := round( (Right1 * B.volume) / 100); // <-

        _Crossfader := Value;
end;
Schon mal durchgerechnet und dabei die Values der beiden Lautstärkeregler angeguckt ?

kurtm1 4. Mai 2006 20:09

Re: Bass Klasse -> Kleiner Fehler
 
Also ich hab mir den Corssfader Code ca. 20 mal mit dem Debugger angesehen, und da es beim ersten mal umstellen richtig funktioniert, kann in der Funktion eigentlich kein Fehler sein.

Was mir jedoch aufgefallen ist, dass der Aufruf, der Volume auslesen Funktion (A.Volume, B.Volume) (beim Lesen) in diesen Statements anscheinend Probleme macht:

Delphi-Quellcode:
A.volume := round( (Left1  * A.volume) / 100); // <-
B.volume := round( (Right1 * B.volume) / 100); // <-
Aber wie schon gesagt, ich weiß inzwischen nichts mehr, was da falsch sein kann..

turboPASCAL 4. Mai 2006 20:21

Re: Bass Klasse -> Kleiner Fehler
 
zB. GetVolume und SetVolume hast du als Byte aber
Delphi-Quellcode:
function TMyBass.GetWaveVolume: Byte;
begin
        Result:= BASS_GetVolume; // BASS_GetVolume aus der Bass ist
                                 //  Cardinal oder Integer oder so...
end;

kurtm1 5. Mai 2006 21:53

Re: Bass Klasse -> Kleiner Fehler
 
Zitat:

Zitat von turboPASCAL
zB. GetVolume und SetVolume hast du als Byte aber

Ich habe diese Stellen mal probehalber auf Cardinal geändert, gibt aber genau das selbe Verhalten..

kurtm1 9. Mai 2006 23:31

Re: Bass Klasse -> Kleiner Fehler
 
so letzter push, dann geb ich auf ;)

kurtm1 21. Sep 2006 20:04

Re: Bass Klasse -> Kleiner Fehler
 
Hätte mal wieder eine Frage zum Thema Bass / Bass_fx.

Und zwar hab ich ein kleines Programm zum abspielen von Sounds mit DSP Effekten. Wenn ich die Bass dll's in der Version 2.2 verwende funktioniert eigentlich alles (soweit ich gesehen habe).

Bei der Version 2.3 bekomme ich allerdings wenn ich eine bestimmte Datei abspiele und mit dem Effekt "Reverb" versehe ständig eine Fehlermeldung bis das Programm abstürzt. Alle anderen Effekte gehen auch mit Version 2.3?!?

Tipps?

Wishmaster 21. Sep 2006 20:14

Re: Bass Klasse -> Kleiner Fehler
 
Hi

Was für ein feiler?

kurtm1 21. Sep 2006 20:15

Re: Bass Klasse -> Kleiner Fehler
 
aso sorry hab ich vergessen zu schreiben

ich bekomme immer eine Access Violation

Wishmaster 23. Sep 2006 23:08

Re: Bass Klasse -> Kleiner Fehler
 
Hi

Sorry das ich mich nicht schon früher gemeldet habe!

Bei mir funzt es wie es soll!

Was sagt BASS_ErrorGetCode();?

Feileicht kannst du ja einwenig Code zeigen?


Das ist ein kleiner ausschnitt aus meinem Code (Bass.dll)!

Delphi-Quellcode:
BASS_StreamFree(Channel_Song);
ReverbHandle := 0
Channel_Song:= (BASS_StreamCreateFile(FALSE, PChar(FileName), 0, 0, Sound_Flags));



Private
  Saved8087CW   :  WORD;     // FPU exceptions
  ReverbHandle  :  HFX;
  ReverbParam   :  BASS_FXREVERB;
  FReverbLevel  :  WORD;

Procedure TAudioEngine.Set_SoundEffect(Value : TSoundEffects);
begin
  FSoundEffects:= Value;

{ Save the current FPU state and then disable FPU exceptions }
  Saved8087CW := Default8087CW;
{ Disable all fpu exceptions }
  Set8087CW($133f);


    if fxReverb in FSoundEffects then
     begin
      if ReverbHandle = 0 then
         ReverbHandle:= BASS_ChannelSetFX(Channel_Song , BASS_FX_REVERB, NumEQBands+2);

      if ReverbHandle <> 0 then
       begin
         if BASS_FXGetParameters(ReverbHandle, @ReverbParam) then
         ReverbParam.fInGain := 0.0;
         ReverbParam.fReverbMix := FReverbLevel * 0.5 - 16.0;
         ReverbParam.fReverbTime := 1000.0;
         ReverbParam.fHighFreqRTRatio := 0.1;
         BASS_FXSetParameters(ReverbHandle, @ReverbParam);
        end;
       end
     else
      begin
       if ReverbHandle <> 0 then
       if BASS_ChannelRemoveFX(Channel_Song, ReverbHandle) then
        ReverbHandle:= 0;
     end;


  Set8087CW(Saved8087CW); { Restore to original status }
end;



{-------------------------------- Reverb --------------------------------------}
// Min   = 0
// DefPos = 0
// Max   = 30
// def enablr = false

procedure TAudioEngine.Set_ReverbLevel(Value : WORD);            // Reverb
begin
  if Value < 0 then
     FReverbLevel:= 0
   else
    FReverbLevel := Value;

 if fxReverb in FSoundEffects then
  begin
 if ReverbHandle <> 0 then
  begin
   if BASS_FXGetParameters(ReverbHandle, @ReverbParam) then
    begin
     ReverbParam.fReverbMix := FReverbLevel * 0.5 - 16.0;
     BASS_FXSetParameters(ReverbHandle, @ReverbParam)
   end;
  end;
 end;
end;


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