init commit
This commit is contained in:
36
internal/audio/waveform.go
Normal file
36
internal/audio/waveform.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package audio
|
||||
|
||||
// WaveformData holds pre-computed waveform samples
|
||||
type WaveformData struct {
|
||||
Samples []float64
|
||||
MaxValue float64
|
||||
}
|
||||
|
||||
// NewWaveformData creates waveform data from raw samples
|
||||
func NewWaveformData(samples []float64) *WaveformData {
|
||||
wd := &WaveformData{
|
||||
Samples: samples,
|
||||
}
|
||||
|
||||
// Find max value for normalization
|
||||
for _, s := range samples {
|
||||
if s > wd.MaxValue {
|
||||
wd.MaxValue = s
|
||||
}
|
||||
}
|
||||
|
||||
if wd.MaxValue == 0 {
|
||||
wd.MaxValue = 1 // Avoid division by zero
|
||||
}
|
||||
|
||||
return wd
|
||||
}
|
||||
|
||||
// Normalized returns samples normalized to 0-1 range
|
||||
func (w *WaveformData) Normalized() []float64 {
|
||||
normalized := make([]float64, len(w.Samples))
|
||||
for i, s := range w.Samples {
|
||||
normalized[i] = s / w.MaxValue
|
||||
}
|
||||
return normalized
|
||||
}
|
||||
Reference in New Issue
Block a user