From fb364dd193945e9027df807b4648e1f325b43d35 Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Fri, 22 Feb 2013 22:33:33 +0000 Subject: add fade for medley mod. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2945 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/base/UMusic.pas | 2 ++ src/media/UAudioPlaybackBase.pas | 7 +++++++ src/media/UAudioPlayback_Bass.pas | 7 +++++++ src/media/UAudioPlayback_SoftMixer.pas | 9 +++++++++ src/media/UMedia_dummy.pas | 5 +++++ src/screens/UScreenSing.pas | 1 + 6 files changed, 31 insertions(+) diff --git a/src/base/UMusic.pas b/src/base/UMusic.pas index ca577db4..b7179d8c 100644 --- a/src/base/UMusic.pas +++ b/src/base/UMusic.pas @@ -294,6 +294,7 @@ type procedure Pause(); virtual; abstract; procedure Stop(); virtual; abstract; procedure FadeIn(Time: real; TargetVolume: single); virtual; abstract; + procedure Fade(Time: real; TargetVolume: single); virtual; abstract; procedure GetFFTData(var data: TFFTData); virtual; abstract; function GetPCMData(var data: TPCMData): Cardinal; virtual; abstract; @@ -428,6 +429,7 @@ type procedure SetLoop(Enabled: boolean); procedure FadeIn(Time: real; TargetVolume: single); + procedure Fade(Time: real; TargetVolume: single); procedure SetSyncSource(SyncSource: TSyncSource); procedure Rewind; diff --git a/src/media/UAudioPlaybackBase.pas b/src/media/UAudioPlaybackBase.pas index ffee671d..45130a7c 100644 --- a/src/media/UAudioPlaybackBase.pas +++ b/src/media/UAudioPlaybackBase.pas @@ -63,6 +63,7 @@ type procedure Pause; procedure Stop; procedure FadeIn(Time: real; TargetVolume: single); + procedure Fade(Time: real; TargetVolume: single); procedure SetSyncSource(SyncSource: TSyncSource); @@ -304,6 +305,12 @@ begin MusicStream.FadeIn(Time, TargetVolume); end; +procedure TAudioPlaybackBase.Fade(Time: real; TargetVolume: single); +begin + if assigned(MusicStream) then + MusicStream.Fade(Time, TargetVolume); +end; + procedure TAudioPlaybackBase.SetLoop(Enabled: boolean); begin if assigned(MusicStream) then diff --git a/src/media/UAudioPlayback_Bass.pas b/src/media/UAudioPlayback_Bass.pas index a3c3bd30..36d84b22 100644 --- a/src/media/UAudioPlayback_Bass.pas +++ b/src/media/UAudioPlayback_Bass.pas @@ -81,6 +81,7 @@ type procedure Pause(); override; procedure Stop(); override; procedure FadeIn(Time: real; TargetVolume: single); override; + procedure Fade(Time: real; TargetVolume: single); override; procedure AddSoundEffect(Effect: TSoundEffect); override; procedure RemoveSoundEffect(Effect: TSoundEffect); override; @@ -339,6 +340,12 @@ begin BASS_ChannelSlideAttribute(Handle, BASS_ATTRIB_VOL, TargetVolume, Trunc(Time * 1000)); end; +procedure TBassPlaybackStream.Fade(Time: real; TargetVolume: single); +begin + // start fade-in: slide from fadeStart- to fadeEnd-volume in FadeInTime + BASS_ChannelSlideAttribute(Handle, BASS_ATTRIB_VOL, TargetVolume, Trunc(Time * 1000)); +end; + procedure TBassPlaybackStream.Pause(); begin BASS_ChannelPause(Handle); diff --git a/src/media/UAudioPlayback_SoftMixer.pas b/src/media/UAudioPlayback_SoftMixer.pas index 11df4df5..a8639ee3 100644 --- a/src/media/UAudioPlayback_SoftMixer.pas +++ b/src/media/UAudioPlayback_SoftMixer.pas @@ -101,6 +101,7 @@ type procedure Pause(); override; procedure Stop(); override; procedure FadeIn(Time: real; TargetVolume: single); override; + procedure Fade(Time: real; TargetVolume: single); override; function GetAudioFormatInfo(): TAudioFormatInfo; override; @@ -479,6 +480,14 @@ begin Play(); end; +procedure TGenericPlaybackStream.Fade(Time: real; TargetVolume: single); +begin + FadeInTime := Trunc(Time * 1000); + FadeInStartTime := SDL_GetTicks(); + FadeInStartVolume := fVolume; + FadeInTargetVolume := TargetVolume; +end; + procedure TGenericPlaybackStream.Pause(); var Mixer: TAudioMixerStream; diff --git a/src/media/UMedia_dummy.pas b/src/media/UMedia_dummy.pas index 34f85226..e430b609 100644 --- a/src/media/UMedia_dummy.pas +++ b/src/media/UMedia_dummy.pas @@ -80,6 +80,7 @@ type function GetOutputDeviceList(): TAudioOutputDeviceList; procedure FadeIn(Time: real; TargetVolume: single); + procedure Fade(Time: real; TargetVolume: single); procedure SetAppVolume(Volume: single); procedure SetVolume(Volume: single); procedure Rewind; @@ -288,6 +289,10 @@ procedure TAudio_Dummy.FadeIn(Time: real; TargetVolume: single); begin end; +procedure TAudio_Dummy.Fade(Time: real; TargetVolume: single); +begin +end; + procedure TAudio_Dummy.Rewind; begin end; diff --git a/src/screens/UScreenSing.pas b/src/screens/UScreenSing.pas index f9770cb3..13350511 100644 --- a/src/screens/UScreenSing.pas +++ b/src/screens/UScreenSing.pas @@ -1437,6 +1437,7 @@ begin (PlaylistMedley.CurrentMedleySong <= PlaylistMedley.NumMedleySongs) then begin PlaylistMedley.ApplausePlayed := true; + AudioPlayback.Fade(CurrentSong.Medley.FadeOut_time, 0.1); AudioPlayback.PlaySound(SoundLib.Applause); end; end; -- cgit v1.2.3