This commit is contained in:
Mercurio 2024-09-05 14:34:39 +02:00
parent 82bb8145ae
commit e5db5216e6

View file

@ -11,7 +11,7 @@ class Program
private static readonly string WebsocketAddress = "localhost"; private static readonly string WebsocketAddress = "localhost";
private static readonly int WebsocketPort = 10573; private static readonly int WebsocketPort = 10573;
private static Process? _ffmpegProcess; private static Process? _ffmpegProcess;
private static string _ffmpegFolderPath = GetFolderPath(); // Output folder path private static string _ffmpegFolderPath = GetFolderPath();
private static WasapiCapture? _waveSource; private static WasapiCapture? _waveSource;
private static WaveFileWriter _writer = null!; private static WaveFileWriter _writer = null!;
private static string _audioFilePath = null!; private static string _audioFilePath = null!;
@ -139,8 +139,7 @@ private static async Task ConnectWebSocket()
shouldCheckForMusicSelect = false; shouldCheckForMusicSelect = false;
} }
else if (message.EndsWith("CLEAR!") || message.EndsWith("FAILED..")) else if (message.EndsWith("CLEAR!") || message.EndsWith("FAILED.."))
{ {
// Set the flag to check the next message for "MUSIC SELECT!!"
shouldCheckForMusicSelect = true; shouldCheckForMusicSelect = true;
} }
} }
@ -166,22 +165,14 @@ private static async Task ConnectWebSocket()
{ {
var date = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss"); var date = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
_audioFilePath = $"{_ffmpegFolderPath}\\{songName}_{date}.wav"; _audioFilePath = $"{_ffmpegFolderPath}\\{songName}_{date}.wav";
// Ensure the output folder exists
var outputFolder = Path.GetDirectoryName(_audioFilePath)!; var outputFolder = Path.GetDirectoryName(_audioFilePath)!;
Directory.CreateDirectory(outputFolder); Directory.CreateDirectory(outputFolder);
// Set up the WasapiLoopbackCapture
_waveSource = new WasapiLoopbackCapture(); _waveSource = new WasapiLoopbackCapture();
_writer = new WaveFileWriter(_audioFilePath, _waveSource.WaveFormat); _writer = new WaveFileWriter(_audioFilePath, _waveSource.WaveFormat);
// Handle the DataAvailable event
_waveSource.DataAvailable += (sender, args) => _waveSource.DataAvailable += (sender, args) =>
{ {
_writer.Write(args.Buffer, 0, args.BytesRecorded); _writer.Write(args.Buffer, 0, args.BytesRecorded);
}; };
// Handle the RecordingStopped event
_waveSource.RecordingStopped += (sender, args) => _waveSource.RecordingStopped += (sender, args) =>
{ {
_writer.Dispose(); _writer.Dispose();
@ -190,7 +181,6 @@ private static async Task ConnectWebSocket()
_waveSource = null; _waveSource = null;
}; };
// Start recording
_waveSource.StartRecording(); _waveSource.StartRecording();
Console.WriteLine("WASAPI Audio recording started."); Console.WriteLine("WASAPI Audio recording started.");
} }