Remove music button and MP3 decode, keep live capture only
- Remove Music button, OnMusic/RunMusicAsync/StopMusic and all music fields - MusicAnalyzer: remove Analyze, DecodeToMono, MusicPattern record; keep ExtractFeatures/MapPitchToPeriod/BuildWaveFrame/TickFeature (used by LiveCapture) - Remove unused NAudio.Wave and System.Diagnostics imports from MainForm - Fix LiveCapture overlap: sliding window with 50% overlap (was dropping every other frame) - Buttons resized to 80px (Test/Live/Pattern/Stop All)
This commit is contained in:
+17
-3
@@ -91,6 +91,7 @@ public class LiveCapture : IDisposable
|
||||
var window = new FftSharp.Windows.Hanning();
|
||||
var buffer = new double[MusicAnalyzer.WindowSize];
|
||||
var tf = new MusicAnalyzer.TickFeature();
|
||||
double[]? overlap = null; // last HopSize samples from previous window
|
||||
|
||||
while (_running)
|
||||
{
|
||||
@@ -98,10 +99,23 @@ public class LiveCapture : IDisposable
|
||||
|
||||
lock (_bufferLock)
|
||||
{
|
||||
if (_sampleBuffer.Count >= MusicAnalyzer.WindowSize)
|
||||
int needed = overlap != null ? MusicAnalyzer.HopSize : MusicAnalyzer.WindowSize;
|
||||
if (_sampleBuffer.Count >= needed)
|
||||
{
|
||||
for (int i = 0; i < MusicAnalyzer.WindowSize; i++)
|
||||
buffer[i] = _sampleBuffer.Dequeue();
|
||||
if (overlap != null)
|
||||
{
|
||||
Array.Copy(overlap, 0, buffer, 0, MusicAnalyzer.HopSize);
|
||||
for (int i = 0; i < MusicAnalyzer.HopSize; i++)
|
||||
buffer[MusicAnalyzer.HopSize + i] = _sampleBuffer.Dequeue();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < MusicAnalyzer.WindowSize; i++)
|
||||
buffer[i] = _sampleBuffer.Dequeue();
|
||||
}
|
||||
// Save last HopSize samples for next window's overlap
|
||||
overlap = new double[MusicAnalyzer.HopSize];
|
||||
Array.Copy(buffer, MusicAnalyzer.HopSize, overlap, 0, MusicAnalyzer.HopSize);
|
||||
windowData = buffer;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user