![]() |
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: |
Re: Bass Klasse -> Kleiner Fehler
^^push
keiner eine idee? |
Re: Bass Klasse -> Kleiner Fehler
Letzter Aufruf dann bin offiziell verzweifelt :cry:
|
Re: Bass Klasse -> Kleiner Fehler
Delphi-Quellcode:
Schon mal durchgerechnet und dabei die Values der beiden Lautstärkeregler angeguckt ?
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; |
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:
Aber wie schon gesagt, ich weiß inzwischen nichts mehr, was da falsch sein kann..
A.volume := round( (Left1 * A.volume) / 100); // <-
B.volume := round( (Right1 * B.volume) / 100); // <- |
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; |
Re: Bass Klasse -> Kleiner Fehler
Zitat:
|
Re: Bass Klasse -> Kleiner Fehler
so letzter push, dann geb ich auf ;)
|
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? |
Re: Bass Klasse -> Kleiner Fehler
Hi
Was für ein feiler? |
Re: Bass Klasse -> Kleiner Fehler
aso sorry hab ich vergessen zu schreiben
ich bekomme immer eine Access Violation |
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 21:54 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