diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs
index 8afa3d64..33f51fac 100644
--- a/Vocaluxe/Base/CConfig.cs
+++ b/Vocaluxe/Base/CConfig.cs
@@ -627,7 +627,7 @@ namespace Vocaluxe.Base
///
public static bool IsMicConfig()
{
- ReadOnlyCollection devices = CSound.RecordGetDevices();
+ ReadOnlyCollection devices = CRecord.RecordGetDevices();
if (devices == null)
return false;
@@ -641,7 +641,7 @@ namespace Vocaluxe.Base
///
public static bool IsMicConfig(int player)
{
- ReadOnlyCollection devices = CSound.RecordGetDevices();
+ ReadOnlyCollection devices = CRecord.RecordGetDevices();
if (devices == null)
return false;
@@ -667,8 +667,8 @@ namespace Vocaluxe.Base
public static bool AutoAssignMics()
{
//Look for (usb-)mic
- //SRecordDevice[] Devices = new SRecordDevice[CSound.RecordGetDevices().Length];
- ReadOnlyCollection devices = CSound.RecordGetDevices();
+ //SRecordDevice[] Devices = new SRecordDevice[CRecord.RecordGetDevices().Length];
+ ReadOnlyCollection devices = CRecord.RecordGetDevices();
if (devices == null)
return false;
diff --git a/Vocaluxe/Base/CGame.cs b/Vocaluxe/Base/CGame.cs
index 176fd0a6..27c77ecb 100644
--- a/Vocaluxe/Base/CGame.cs
+++ b/Vocaluxe/Base/CGame.cs
@@ -225,7 +225,7 @@ namespace Vocaluxe.Base
MidRecordedBeat = -0.5f + GetBeatFromTime(time, song.BPM, song.Gap + CConfig.MicDelay / 1000f);
for (int p = 0; p < _NumPlayer; p++)
- CSound.AnalyzeBuffer(p);
+ CRecord.AnalyzeBuffer(p);
if (_LastEvalBeat >= RecordedBeat)
return;
@@ -271,14 +271,14 @@ namespace Vocaluxe.Base
if (line == lines.Length - 1 && beat == lines[line].LastNoteBeat)
Players[p].SongFinished = true;
- if (notes[note].PointsForBeat > 0 && (CSound.RecordToneValid(p)
+ if (notes[note].PointsForBeat > 0 && (CRecord.RecordToneValid(p)
#if DEBUG_HIT
|| true
#endif
))
{
int tone = notes[note].Tone;
- int tonePlayer = CSound.RecordGetTone(p);
+ int tonePlayer = CRecord.RecordGetTone(p);
while (tonePlayer - tone > 6)
tonePlayer -= 12;
@@ -296,7 +296,7 @@ namespace Vocaluxe.Base
if (hit)
{
// valid
- //CSound.RecordSetTone(p, Tone);
+ //CRecord.RecordSetTone(p, Tone);
double points = (CSettings.MaxScore - CSettings.LinebonusScore) * (double)notes[note].PointsForBeat /
song.Notes.GetVoice(Players[p].VoiceNr).Points;
if (notes[note].Type == ENoteType.Golden)
diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs
index 0966424a..d5e50d25 100644
--- a/Vocaluxe/Base/CGraphics.cs
+++ b/Vocaluxe/Base/CGraphics.cs
@@ -616,10 +616,10 @@ namespace Vocaluxe.Base
if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL2)
{
- debugOutput.Add(CSound.RecordGetToneAbs(0).ToString(CLanguage.Translate("TR_DEBUG_TONE_ABS") + " P1: 00"));
- debugOutput.Add(CSound.RecordGetMaxVolume(0).ToString(CLanguage.Translate("TR_DEBUG_MAX_VOLUME") + " P1: 0.000"));
- debugOutput.Add(CSound.RecordGetToneAbs(1).ToString(CLanguage.Translate("TR_DEBUG_TONE_ABS") + " P2: 00"));
- debugOutput.Add(CSound.RecordGetMaxVolume(1).ToString(CLanguage.Translate("TR_DEBUG_MAX_VOLUME") + " P2: 0.000"));
+ debugOutput.Add(CRecord.RecordGetToneAbs(0).ToString(CLanguage.Translate("TR_DEBUG_TONE_ABS") + " P1: 00"));
+ debugOutput.Add(CRecord.RecordGetMaxVolume(0).ToString(CLanguage.Translate("TR_DEBUG_MAX_VOLUME") + " P1: 0.000"));
+ debugOutput.Add(CRecord.RecordGetToneAbs(1).ToString(CLanguage.Translate("TR_DEBUG_TONE_ABS") + " P2: 00"));
+ debugOutput.Add(CRecord.RecordGetMaxVolume(1).ToString(CLanguage.Translate("TR_DEBUG_MAX_VOLUME") + " P2: 0.000"));
if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL3)
{
diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs
index e0f02c3d..70798269 100644
--- a/Vocaluxe/Base/CMain.cs
+++ b/Vocaluxe/Base/CMain.cs
@@ -626,7 +626,7 @@ namespace Vocaluxe.Base
{
public int GetToneAbs(int playerNr)
{
- return CSound.RecordGetToneAbs(playerNr);
+ return CRecord.RecordGetToneAbs(playerNr);
}
}
diff --git a/Vocaluxe/Base/CRecord.cs b/Vocaluxe/Base/CRecord.cs
new file mode 100644
index 00000000..5493fd58
--- /dev/null
+++ b/Vocaluxe/Base/CRecord.cs
@@ -0,0 +1,115 @@
+using System.Collections.ObjectModel;
+using Vocaluxe.Lib.Sound.Record;
+using Vocaluxe.Lib.Sound.Record.DirectSound;
+using Vocaluxe.Lib.Sound.Record.PortAudio;
+using VocaluxeLib;
+
+namespace Vocaluxe.Base
+{
+ class CRecord
+ {
+ private static IRecord _Record;
+
+ public static void RecordInit()
+ {
+ switch (CConfig.RecordLib)
+ {
+#if WIN
+ case ERecordLib.DirectSound:
+ _Record = new CDirectSoundRecord();
+ break;
+#endif
+
+ // case ERecordLib.PortAudio:
+ default:
+ _Record = new CPortAudioRecord();
+ break;
+ }
+ }
+
+ public static void RecordCloseAll()
+ {
+ _Record.CloseAll();
+ }
+
+ public static bool RecordStart()
+ {
+ return _Record.Start();
+ }
+
+ public static bool RecordStop()
+ {
+ return _Record.Stop();
+ }
+
+ public static void AnalyzeBuffer(int player)
+ {
+ _Record.AnalyzeBuffer(player);
+ }
+
+ public static int RecordGetToneAbs(int player)
+ {
+ return _Record.GetToneAbs(player);
+ }
+
+ public static int RecordGetTone(int player)
+ {
+ return _Record.GetTone(player);
+ }
+
+ public static void RecordSetTone(int player, int tone)
+ {
+ _Record.SetTone(player, tone);
+ }
+
+ public static bool RecordToneValid(int player)
+ {
+ return _Record.ToneValid(player);
+ }
+
+ public static float RecordGetMaxVolume(int player)
+ {
+ return _Record.GetMaxVolume(player);
+ }
+
+ public static int NumHalfTones(int player)
+ {
+ return _Record.NumHalfTones(player);
+ }
+
+ public static float[] ToneWeigth(int player)
+ {
+ return _Record.ToneWeigth(player);
+ }
+
+ public static ReadOnlyCollection RecordGetDevices()
+ {
+ ReadOnlyCollection devices = _Record.RecordDevices();
+
+ if (devices != null)
+ {
+ foreach (CRecordDevice device in devices)
+ {
+ device.PlayerChannel1 = _GetPlayerFromMicConfig(device.Name, device.Driver, 1);
+ device.PlayerChannel2 = _GetPlayerFromMicConfig(device.Name, device.Driver, 2);
+ }
+ return devices;
+ }
+
+ return null;
+ }
+
+ private static int _GetPlayerFromMicConfig(string device, string devicedriver, int channel)
+ {
+ for (int p = 0; p < CSettings.MaxNumPlayer; p++)
+ {
+ if (CConfig.MicConfig[p].Channel != 0 &&
+ CConfig.MicConfig[p].DeviceName == device &&
+ CConfig.MicConfig[p].DeviceDriver == devicedriver &&
+ CConfig.MicConfig[p].Channel == channel)
+ return p + 1;
+ }
+ return 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs
index 662bb8f0..156a5fcc 100644
--- a/Vocaluxe/Base/CSound.cs
+++ b/Vocaluxe/Base/CSound.cs
@@ -16,17 +16,12 @@
#endregion
using System;
-using System.Collections.ObjectModel;
using System.IO;
-using Vocaluxe.Lib.Sound;
using Vocaluxe.Lib.Sound.Playback;
using Vocaluxe.Lib.Sound.Playback.Gstreamer;
using Vocaluxe.Lib.Sound.Playback.GstreamerSharp;
using Vocaluxe.Lib.Sound.Playback.OpenAL;
using Vocaluxe.Lib.Sound.Playback.PortAudio;
-using Vocaluxe.Lib.Sound.Record;
-using Vocaluxe.Lib.Sound.Record.DirectSound;
-using Vocaluxe.Lib.Sound.Record.PortAudio;
using VocaluxeLib;
namespace Vocaluxe.Base
@@ -211,111 +206,5 @@ namespace Vocaluxe.Base
return stream;
}
#endregion Sounds
-
- #region Record
- private static IRecord _Record;
-
- public static void RecordInit()
- {
- switch (CConfig.RecordLib)
- {
-#if WIN
- case ERecordLib.DirectSound:
- _Record = new CDirectSoundRecord();
- break;
-#endif
-
- // case ERecordLib.PortAudio:
- default:
- _Record = new CPortAudioRecord();
- break;
- }
- }
-
- public static void RecordCloseAll()
- {
- _Record.CloseAll();
- }
-
- public static bool RecordStart()
- {
- return _Record.Start();
- }
-
- public static bool RecordStop()
- {
- return _Record.Stop();
- }
-
- public static void AnalyzeBuffer(int player)
- {
- _Record.AnalyzeBuffer(player);
- }
-
- public static int RecordGetToneAbs(int player)
- {
- return _Record.GetToneAbs(player);
- }
-
- public static int RecordGetTone(int player)
- {
- return _Record.GetTone(player);
- }
-
- public static void RecordSetTone(int player, int tone)
- {
- _Record.SetTone(player, tone);
- }
-
- public static bool RecordToneValid(int player)
- {
- return _Record.ToneValid(player);
- }
-
- public static float RecordGetMaxVolume(int player)
- {
- return _Record.GetMaxVolume(player);
- }
-
- public static int NumHalfTones(int player)
- {
- return _Record.NumHalfTones(player);
- }
-
- public static float[] ToneWeigth(int player)
- {
- return _Record.ToneWeigth(player);
- }
-
- public static ReadOnlyCollection RecordGetDevices()
- {
- ReadOnlyCollection devices = _Record.RecordDevices();
-
- if (devices != null)
- {
- foreach (CRecordDevice device in devices)
- {
- device.PlayerChannel1 = _GetPlayerFromMicConfig(device.Name, device.Driver, 1);
- device.PlayerChannel2 = _GetPlayerFromMicConfig(device.Name, device.Driver, 2);
- }
- return devices;
- }
-
- return null;
- }
-
- private static int _GetPlayerFromMicConfig(string device, string devicedriver, int channel)
- {
- for (int p = 0; p < CSettings.MaxNumPlayer; p++)
- {
- if (CConfig.MicConfig[p].Channel != 0 &&
- CConfig.MicConfig[p].DeviceName == device &&
- CConfig.MicConfig[p].DeviceDriver == devicedriver &&
- CConfig.MicConfig[p].Channel == channel)
- return p + 1;
- }
- return 0;
- }
- #endregion Record
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Lib/Sound/Record/CDelayTest.cs b/Vocaluxe/Lib/Sound/Record/CDelayTest.cs
index d8c07b5e..711484d3 100644
--- a/Vocaluxe/Lib/Sound/Record/CDelayTest.cs
+++ b/Vocaluxe/Lib/Sound/Record/CDelayTest.cs
@@ -82,7 +82,7 @@ namespace Vocaluxe.Lib.Sound.Record
{
if (_DelaysChannel[i].Channel < 0 || _DelaysChannel[i].Finished)
continue;
- if (CSound.RecordGetMaxVolume(_DelaysChannel[i].Channel) > 0.1f && CSound.RecordGetTone(_DelaysChannel[i].Channel) == 9)
+ if (CRecord.RecordGetMaxVolume(_DelaysChannel[i].Channel) > 0.1f && CRecord.RecordGetTone(_DelaysChannel[i].Channel) == 9)
{
Delays[i] = (int)_Timer.ElapsedMilliseconds;
_DelaysChannel[i].Finished = true;
diff --git a/Vocaluxe/Program.cs b/Vocaluxe/Program.cs
index 1cb6d368..526cf20a 100644
--- a/Vocaluxe/Program.cs
+++ b/Vocaluxe/Program.cs
@@ -126,7 +126,7 @@ namespace Vocaluxe
// Init Record
CLog.StartBenchmark(0, "Init Record");
- CSound.RecordInit();
+ CRecord.RecordInit();
CLog.StopBenchmark(0, "Init Record");
Application.DoEvents();
@@ -243,7 +243,7 @@ namespace Vocaluxe
{
CVocaluxeServer.Close();
CController.Close();
- CSound.RecordCloseAll();
+ CRecord.RecordCloseAll();
CSound.CloseAllStreams();
CVideo.CloseAll();
CDraw.Unload();
diff --git a/Vocaluxe/Screens/CScreenNames.cs b/Vocaluxe/Screens/CScreenNames.cs
index be65f5cc..dc5165ce 100644
--- a/Vocaluxe/Screens/CScreenNames.cs
+++ b/Vocaluxe/Screens/CScreenNames.cs
@@ -546,8 +546,8 @@ namespace Vocaluxe.Screens
for (int i = 1; i <= CGame.NumPlayer; i++)
{
- CSound.AnalyzeBuffer(i - 1);
- _Equalizers["EqualizerPlayer" + i].Update(CSound.ToneWeigth(i - 1));
+ CRecord.AnalyzeBuffer(i - 1);
+ _Equalizers["EqualizerPlayer" + i].Update(CRecord.ToneWeigth(i - 1));
}
return true;
}
@@ -555,7 +555,7 @@ namespace Vocaluxe.Screens
public override void OnShow()
{
base.OnShow();
- CSound.RecordStart();
+ CRecord.RecordStart();
_NameSelections[_NameSelection].Init();
_LoadProfiles();
@@ -565,7 +565,7 @@ namespace Vocaluxe.Screens
public override void OnClose()
{
base.OnClose();
- CSound.RecordStop();
+ CRecord.RecordStop();
}
public override bool Draw()
diff --git a/Vocaluxe/Screens/CScreenOptionsRecord.cs b/Vocaluxe/Screens/CScreenOptionsRecord.cs
index 8a1e3c97..7eead339 100644
--- a/Vocaluxe/Screens/CScreenOptionsRecord.cs
+++ b/Vocaluxe/Screens/CScreenOptionsRecord.cs
@@ -213,7 +213,7 @@ namespace Vocaluxe.Screens
public override bool UpdateGame()
{
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
- CSound.AnalyzeBuffer(i);
+ CRecord.AnalyzeBuffer(i);
if (_DelayTest.Running)
{
@@ -228,8 +228,8 @@ namespace Vocaluxe.Screens
int player = _SelectSlides[_SelectSlideRecordChannel1].Selection;
if (player > 0)
{
- _ChannelEnergy[0] = CSound.RecordGetMaxVolume(player - 1);
- _Equalizers[_EqualizerChannel1].Update(CSound.ToneWeigth(player - 1));
+ _ChannelEnergy[0] = CRecord.RecordGetMaxVolume(player - 1);
+ _Equalizers[_EqualizerChannel1].Update(CRecord.ToneWeigth(player - 1));
}
else
_Equalizers[_EqualizerChannel1].Reset();
@@ -238,8 +238,8 @@ namespace Vocaluxe.Screens
player = _SelectSlides[_SelectSlideRecordChannel2].Selection;
if (player > 0)
{
- _ChannelEnergy[1] = CSound.RecordGetMaxVolume(player - 1);
- _Equalizers[_EqualizerChannel2].Update(CSound.ToneWeigth(player - 1));
+ _ChannelEnergy[1] = CRecord.RecordGetMaxVolume(player - 1);
+ _Equalizers[_EqualizerChannel2].Update(CRecord.ToneWeigth(player - 1));
}
else
_Equalizers[_EqualizerChannel2].Reset();
@@ -266,7 +266,7 @@ namespace Vocaluxe.Screens
_DeviceNr = -1;
- _Devices = CSound.RecordGetDevices();
+ _Devices = CRecord.RecordGetDevices();
if (_Devices != null)
{
_DeviceNr = 0;
@@ -337,7 +337,7 @@ namespace Vocaluxe.Screens
public override void OnClose()
{
base.OnClose();
- CSound.RecordStop();
+ CRecord.RecordStop();
_DelayTest.Reset();
CBackgroundMusic.Disabled = false;
@@ -363,7 +363,7 @@ namespace Vocaluxe.Screens
if (_Devices == null)
return;
- CSound.RecordStop();
+ CRecord.RecordStop();
_SetMicConfig();
if (_CheckMicConfig())
@@ -389,7 +389,7 @@ namespace Vocaluxe.Screens
}
CConfig.SaveConfig();
}
- CSound.RecordStart();
+ CRecord.RecordStart();
}
private void _SetPlayerColors()
diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs
index 4eb21fbd..20fff366 100644
--- a/Vocaluxe/Screens/CScreenSing.cs
+++ b/Vocaluxe/Screens/CScreenSing.cs
@@ -556,7 +556,7 @@ namespace Vocaluxe.Screens
{
if (_CurrentStream > -1)
CSound.FadeAndClose(_CurrentStream, 0f, 0.5f);
- CSound.RecordStop();
+ CRecord.RecordStop();
if (_CurrentVideo != -1)
{
CVideo.Close(_CurrentVideo);
@@ -738,7 +738,7 @@ namespace Vocaluxe.Screens
{
_PrepareTimeLine();
CSound.Play(_CurrentStream);
- CSound.RecordStart();
+ CRecord.RecordStart();
if (_Webcam)
CWebcam.Start();
}
diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj
index d89cca3f..111f9a7e 100644
--- a/Vocaluxe/Vocaluxe.csproj
+++ b/Vocaluxe/Vocaluxe.csproj
@@ -216,6 +216,7 @@
+