Fallback Tidal with search and ISRC matching

This commit is contained in:
afkarxyz
2025-11-26 07:32:26 +07:00
parent f346fbb6ba
commit 4241a591aa
7 changed files with 1197 additions and 178 deletions
+34 -1
View File
@@ -7,7 +7,9 @@ import {
Radio,
TrendingUp,
FileAudio,
Clock
Clock,
Gauge,
HardDrive
} from "lucide-react";
import type { AnalysisResult } from "@/types/api";
@@ -75,6 +77,21 @@ export function AudioAnalysis({
return num.toFixed(2);
};
// Calculate Nyquist frequency (half of sample rate)
const nyquistFreq = result.sample_rate / 2;
// Calculate approximate data size (uncompressed PCM)
// Formula: sample_rate * channels * (bits_per_sample / 8) * duration
const dataSizeBytes = result.sample_rate * result.channels * (result.bits_per_sample / 8) * result.duration;
const dataSizeMB = dataSizeBytes / (1024 * 1024);
const formatDataSize = (mb: number) => {
if (mb >= 1024) {
return `${(mb / 1024).toFixed(2)} GB`;
}
return `${mb.toFixed(2)} MB`;
};
return (
<Card>
<CardHeader>
@@ -124,6 +141,22 @@ export function AudioAnalysis({
</div>
<p className="font-semibold">{formatDuration(result.duration)}</p>
</div>
<div className="space-y-1">
<div className="flex items-center gap-2 text-xs text-muted-foreground">
<Gauge className="h-3 w-3" />
Nyquist Frequency
</div>
<p className="font-semibold">{(nyquistFreq / 1000).toFixed(1)} kHz</p>
</div>
<div className="space-y-1">
<div className="flex items-center gap-2 text-xs text-muted-foreground">
<HardDrive className="h-3 w-3" />
Data Size
</div>
<p className="font-semibold">{formatDataSize(dataSizeMB)}</p>
</div>
</div>
{/* Dynamic Range Analysis */}