Thema: Delphi Bass.dll - Player spinnt

Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 

Re: Bass.dll - Player spinnt

  Alt 6. Aug 2006, 14:06
Ich habe keinen wirklichen Crossfading-Code. Darunter versteht man doch, dass gegen Ende des Liedes ausgeblendet wird, während das nächste eingeblendet wird, oder?

Nun, das mach ich einfach so, indem ich die Funktion SlideAttributes aus der bass.dll nehme. Ohne zweiten Stream, ohne zusätzlichen Timer, einfach so.

Ich habs jetzt nicht auswendig, aber das geht im Wesentlichen so (Syntax entsprechend anpassen):

Delphi-Quellcode:
// Aktuelles Handle auf den gerade abspielenden Titel ist "ch"

// Flag setzen, damit das Handle beim Beenden automatisch freigegeben wird
BASS_ChannelSetFlags(ch, BASS_STREAM_AUTOFREE);
//Aktuellen Stream ausblenden.
// -2 steht dabei für Lautstärke auf 0 und stoppen
// -1 und -101 lassen Balance und Samplerate (glaube ich) unverändert
BASS_ChannelSlideAttributes(ch,-1,-2,-101,FadingInterval)

// Da der aktuelle Stream jetzt automatisch ausgeblendet, gestoppt und freigegeben wird
// geht jetzt folgendes:

ch := BASS_StreamCreateFile(False, 'c:\MeinNeuesLied.mp3', 0, 0, 0);
// Lautstärke auf 0 setzen
BASS_ChannelSetAttributes(ch, -1, 0, -101);
// Mit dem Abspielen beginnen
BASS_ChannelPlay(ch , True);
// Einblenden
BASS_ChannelSlideAttributes(ch, -1, MainVolume, -101, FadingInterval);
MainVolume ist dabei die gewünschte Lautstärke, die der User z.B. an einer Trackbar einstellen kann, und FadingInterval ist die Länge, in der gefadet werden soll.
  Mit Zitat antworten Zitat