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 @@
+