Files
supersonic/player/equalizer.go
T

58 lines
903 B
Go

package player
import (
"fmt"
"strings"
)
type WidthType int
const (
WidthTypeHz WidthType = iota
WidthTypeKhz
WidthTypeQ
WidthTypeOctave
WidthTypeSlope
)
type EqualizerBand struct {
Frequency int
Gain float64
Width float64
WidthType WidthType
}
type EqualizerCurve []EqualizerBand
func (e EqualizerCurve) String() string {
var sb strings.Builder
for i, band := range e {
if i > 0 {
sb.WriteString(",")
}
sb.WriteString(band.String())
}
return sb.String()
}
func (e EqualizerBand) String() string {
return fmt.Sprintf("equalizer=f=%d:g=%0.2f:t=%s:w=%0.2f",
e.Frequency, e.Gain, e.WidthType.String(), e.Width)
}
func (w WidthType) String() string {
switch w {
case WidthTypeHz:
return "h"
case WidthTypeKhz:
return "k"
case WidthTypeQ:
return "q"
case WidthTypeOctave:
return "o"
case WidthTypeSlope:
return "s"
}
return "x" // not reached
}