new analyzer
This commit is contained in:
1 parent
4b1fc0835a
commit
98d9fa24cf
110 files changed
+1749
-52
No files matched your search
@@ -0,0 +1,68 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Registra le feature del classificatore di genere su audio reale.
|
||||
|
||||
.DESCRIPTION
|
||||
Avvia bin\LoopbackCapture.exe con --dump-features, lascia girare la cattura
|
||||
per N secondi (durante i quali riproduci i brani da analizzare) e chiude.
|
||||
|
||||
Registra una riga al secondo con feature grezze, feature normalizzate e
|
||||
punteggi grezzi di ogni classe. Serve alla taratura: senza questi numeri
|
||||
ogni modifica alle costanti e' un'ipotesi.
|
||||
|
||||
.PARAMETER Out
|
||||
File CSV di destinazione. Un file per genere e' la scelta piu' comoda:
|
||||
rock.csv, hiphop.csv, ...
|
||||
|
||||
.PARAMETER Seconds
|
||||
Durata della cattura. Lascia almeno 20 s per brano: il primo 10-15% e'
|
||||
warm-up (4 battute) e viene scartato in analisi.
|
||||
|
||||
.PARAMETER Port
|
||||
Porta di lavoro. Non usare 4242 se il gioco e' in esecuzione.
|
||||
|
||||
.EXAMPLE
|
||||
powershell -ExecutionPolicy Bypass -File tools\capture-features.ps1 -Out C:\temp\rock.csv -Seconds 120
|
||||
#>
|
||||
param(
|
||||
[Parameter(Mandatory = $true)][string]$Out,
|
||||
[int]$Seconds = 90,
|
||||
[int]$Port = 4340
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$root = Split-Path -Parent $PSScriptRoot
|
||||
$exe = Join-Path $root "bin\LoopbackCapture.exe"
|
||||
if (-not (Test-Path $exe)) { throw "non trovato: $exe" }
|
||||
|
||||
$Out = [IO.Path]::GetFullPath($Out)
|
||||
$dir = Split-Path -Parent $Out
|
||||
if ($dir -and -not (Test-Path $dir)) { New-Item -ItemType Directory -Force -Path $dir | Out-Null }
|
||||
if (Test-Path $Out) { Remove-Item $Out -Force }
|
||||
|
||||
$proc = Start-Process -FilePath $exe -ArgumentList "$Port", "0", "--dump-features=$Out" -PassThru -WindowStyle Hidden
|
||||
Start-Sleep -Milliseconds 800
|
||||
if ($proc.HasExited) { throw "il bridge e' uscito subito (exit $($proc.ExitCode)). Controlla la porta $Port." }
|
||||
|
||||
Write-Host ""
|
||||
Write-Host " Registrazione avviata. Riproduci ORA i brani." -ForegroundColor Green
|
||||
Write-Host " Durata: $Seconds s. Finestra: $Out"
|
||||
Write-Host ""
|
||||
|
||||
$sw = [Diagnostics.Stopwatch]::StartNew()
|
||||
while ($sw.Elapsed.TotalSeconds -lt $Seconds) {
|
||||
$left = [int]($Seconds - $sw.Elapsed.TotalSeconds)
|
||||
Write-Host ("`r {0,3} s rimanenti " -f $left) -NoNewline
|
||||
Start-Sleep -Milliseconds 500
|
||||
if ($proc.HasExited) { Write-Host ""; Write-Host " il bridge e' terminato in anticipo (exit $($proc.ExitCode))" -ForegroundColor Yellow; break }
|
||||
}
|
||||
Write-Host ""
|
||||
|
||||
if (-not $proc.HasExited) { Stop-Process -Id $proc.Id -Force }
|
||||
Start-Sleep -Milliseconds 400
|
||||
|
||||
if (-not (Test-Path $Out)) { throw "nessun file prodotto: $Out" }
|
||||
$rows = (Get-Content $Out | Measure-Object -Line).Lines - 1
|
||||
Write-Host (" Righe raccolte: {0}" -f $rows) -ForegroundColor Green
|
||||
Write-Host (" File: {0}" -f $Out)
|
||||
if ($rows -lt 10) { Write-Host " Poche righe: l'audio era fermo o troppo basso?" -ForegroundColor Yellow }
|
||||
Reference in new issue
Block a user