From 3275aa091eba7aff9d7f4c972fcca91653c26ec6 Mon Sep 17 00:00:00 2001 From: lukeIam <2lukeiam@gmail.com> Date: Thu, 8 Sep 2016 17:54:39 +0200 Subject: [PATCH] Fix: karaoke effect was applied to all audio output --- Vocaluxe/Base/CSound.cs | 5 +++-- Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs | 4 +++- Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs | 6 +++--- .../Sound/Playback/GstreamerSharp/CGstreamerSharpAudio.cs | 4 ++-- .../Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs | 4 ++-- Vocaluxe/Lib/Sound/Playback/IPlayback.cs | 2 +- Vocaluxe/Lib/Sound/Playback/OpenAL/COpenALPlay.cs | 4 ++-- Vocaluxe/Lib/Sound/Playback/OpenAL/COpenAlStream.cs | 2 +- Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioPlay.cs | 4 ++-- Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioStream.cs | 2 +- Vocaluxe/Screens/CScreenSing.cs | 3 ++- Vocaluxe/Vocaluxe.csproj | 1 + 12 files changed, 23 insertions(+), 18 deletions(-) diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs index dc76f86f..5acbd7c9 100644 --- a/Vocaluxe/Base/CSound.cs +++ b/Vocaluxe/Base/CSound.cs @@ -22,6 +22,7 @@ using Vocaluxe.Lib.Sound.Playback.OpenAL; using Vocaluxe.Lib.Sound.Playback.PortAudio; using VocaluxeLib; using System.Threading; +using Vocaluxe.Lib.Sound; namespace Vocaluxe.Base { @@ -88,9 +89,9 @@ namespace Vocaluxe.Base } #region Stream Handling - public static int Load(string media, bool loop = false, bool prescan = false) + public static int Load(string media, bool loop = false, bool prescan = false, EAudioEffect effekt = EAudioEffect.None) { - return _Playback.Load(media, loop, prescan); + return _Playback.Load(media, loop, prescan, effekt); } public static void Close(int stream) diff --git a/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs b/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs index 3a421cce..35e62978 100644 --- a/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs +++ b/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs @@ -25,6 +25,7 @@ namespace Vocaluxe.Lib.Sound.Playback private readonly int _ID; protected readonly string _Medium; protected readonly bool _Loop; + protected readonly EAudioEffect _Effect; protected ICloseStreamListener _CloseStreamListener; @@ -48,11 +49,12 @@ namespace Vocaluxe.Lib.Sound.Playback public abstract bool IsPaused { get; set; } public abstract bool IsFinished { get; } - protected CAudioStreamBase(int id, string medium, bool loop) + protected CAudioStreamBase(int id, string medium, bool loop, EAudioEffect effect = EAudioEffect.None) { _ID = id; _Medium = medium; _Loop = loop; + _Effect = effect; } ~CAudioStreamBase() diff --git a/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs b/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs index 1a12441c..62bbec70 100644 --- a/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs +++ b/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs @@ -113,13 +113,13 @@ namespace Vocaluxe.Lib.Sound.Playback #region Stream Handling //Factory method to get a stream instance - protected abstract IAudioStream _CreateStream(int id, string media, bool loop); + protected abstract IAudioStream _CreateStream(int id, string media, bool loop, EAudioEffect effect = EAudioEffect.None); - public int Load(string medium, bool loop = false, bool prescan = false) + public int Load(string medium, bool loop = false, bool prescan = false, EAudioEffect effect = EAudioEffect.None) { if (!_Initialized) return -1; - IAudioStream stream = _CreateStream(_NextID++, medium, loop); + IAudioStream stream = _CreateStream(_NextID++, medium, loop, effect); if (stream.Open(prescan)) { diff --git a/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudio.cs b/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudio.cs index 73c624f8..46fcfd3b 100644 --- a/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudio.cs +++ b/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudio.cs @@ -72,9 +72,9 @@ namespace Vocaluxe.Lib.Sound.Playback.GstreamerSharp Application.Deinit(); } - protected override IAudioStream _CreateStream(int id, string media, bool loop) + protected override IAudioStream _CreateStream(int id, string media, bool loop, EAudioEffect effect = EAudioEffect.None) { - return new CGstreamerSharpAudioStream(id, media, loop); + return new CGstreamerSharpAudioStream(id, media, loop, effect); } } } \ No newline at end of file diff --git a/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs b/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs index 97a432b0..09248e60 100644 --- a/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs +++ b/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs @@ -102,7 +102,7 @@ namespace Vocaluxe.Lib.Sound.Playback.GstreamerSharp } } - public CGstreamerSharpAudioStream(int id, string medium, bool loop) : base(id, medium, loop) {} + public CGstreamerSharpAudioStream(int id, string medium, bool loop, EAudioEffect effect = EAudioEffect.None) : base(id, medium, loop, effect) {} public override bool Open(bool prescan) { @@ -125,7 +125,7 @@ namespace Vocaluxe.Lib.Sound.Playback.GstreamerSharp var audioSinkBin = new Bin("Audiosink"); Element audiokaraoke = null; - if (CConfig.Config.Sound.KaraokeEffect == EOffOn.TR_CONFIG_ON) + if (_Effect.HasFlag(EAudioEffect.Karaoke)) { audiokaraoke = ElementFactory.Make("audiokaraoke", "karaoke"); audioSinkBin.Add(audiokaraoke); diff --git a/Vocaluxe/Lib/Sound/Playback/IPlayback.cs b/Vocaluxe/Lib/Sound/Playback/IPlayback.cs index 7bb4a9ad..20792586 100644 --- a/Vocaluxe/Lib/Sound/Playback/IPlayback.cs +++ b/Vocaluxe/Lib/Sound/Playback/IPlayback.cs @@ -36,7 +36,7 @@ namespace Vocaluxe.Lib.Sound.Playback void CloseAll(); #region stream Handling - int Load(string medium, bool loop = false, bool prescan = false); + int Load(string medium, bool loop = false, bool prescan = false, EAudioEffect effekt= EAudioEffect.None); void Close(int streamID); void Play(int streamID); diff --git a/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenALPlay.cs b/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenALPlay.cs index 74a3704e..13ee98ad 100644 --- a/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenALPlay.cs +++ b/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenALPlay.cs @@ -44,9 +44,9 @@ namespace Vocaluxe.Lib.Sound.Playback.OpenAL _Context = null; } - protected override IAudioStream _CreateStream(int id, string media, bool loop) + protected override IAudioStream _CreateStream(int id, string media, bool loop, EAudioEffect effect = EAudioEffect.None) { - return new COpenAlStream(id, media, loop); + return new COpenAlStream(id, media, loop, effect); } } } \ No newline at end of file diff --git a/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenAlStream.cs b/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenAlStream.cs index f9b5f41d..fd22e07c 100644 --- a/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenAlStream.cs +++ b/Vocaluxe/Lib/Sound/Playback/OpenAL/COpenAlStream.cs @@ -122,7 +122,7 @@ namespace Vocaluxe.Lib.Sound.Playback.OpenAL } } - public COpenAlStream(int id, string medium, bool loop) : base(id, medium, loop) {} + public COpenAlStream(int id, string medium, bool loop, EAudioEffect effect = EAudioEffect.None) : base(id, medium, loop, effect) {} protected override void _Dispose(bool disposing) { diff --git a/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioPlay.cs b/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioPlay.cs index e96eeeab..f5110988 100644 --- a/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioPlay.cs +++ b/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioPlay.cs @@ -29,9 +29,9 @@ namespace Vocaluxe.Lib.Sound.Playback.PortAudio return true; } - protected override IAudioStream _CreateStream(int id, string media, bool loop) + protected override IAudioStream _CreateStream(int id, string media, bool loop, EAudioEffect effect = EAudioEffect.None) { - return new CPortAudioStream(id, media, loop); + return new CPortAudioStream(id, media, loop, effect); } } } \ No newline at end of file diff --git a/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioStream.cs b/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioStream.cs index 34421547..2002aa9c 100644 --- a/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioStream.cs +++ b/Vocaluxe/Lib/Sound/Playback/PortAudio/CPortAudioStream.cs @@ -131,7 +131,7 @@ namespace Vocaluxe.Lib.Sound.Playback.PortAudio } } - public CPortAudioStream(int id, string medium, bool loop) : base(id, medium, loop) {} + public CPortAudioStream(int id, string medium, bool loop, EAudioEffect effect = EAudioEffect.None) : base(id, medium, loop, effect) {} public override bool Open(bool prescan) { diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index 829c69d1..7bf7e042 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -24,6 +24,7 @@ using System.Linq; using System.Windows.Forms; using Vocaluxe.Base; using Vocaluxe.Base.Fonts; +using Vocaluxe.Lib.Sound; using VocaluxeLib; using VocaluxeLib.Draw; using VocaluxeLib.Menu; @@ -525,7 +526,7 @@ namespace Vocaluxe.Screens songname += " (" + CGame.RoundNr + "/" + rounds + ")"; _Texts[_TextSongName].Text = songname; - _CurrentStream = CSound.Load(song.GetMP3(), false, true); + _CurrentStream = CSound.Load(song.GetMP3(), false, true, CConfig.Config.Sound.KaraokeEffect == EOffOn.TR_CONFIG_ON ? EAudioEffect.Karaoke : EAudioEffect.None); CSound.SetStreamVolume(_CurrentStream, 100); CSound.SetPosition(_CurrentStream, song.Start); _CurrentTime = song.Start; diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj index 00fca9f4..4109a99a 100644 --- a/Vocaluxe/Vocaluxe.csproj +++ b/Vocaluxe/Vocaluxe.csproj @@ -185,6 +185,7 @@ +