Documentation ¶
Overview ¶
Filters take samples as an input and produce samples as an output.
Index ¶
- Constants
- func BandPassConvolution(sampleRate, lowest, highest float64, order int) []float64
- func Delay(s, factor, feedback float64, ring *ring.Ring) float64
- func HighPassConvolution(sampleRate, cutoff float64, order int) []float64
- func LowPassConvolution(sampleRate, cutoff float64, order int) []float64
- type BandPassConvolutionFilter
- type BaseFilter
- type DelayFilter
- type DistortionFilter
- type Equalizer
- type Filter
- func AverageFilter(filters ...Filter) Filter
- func ComposedFilter(f1 Filter, f2 Filter) Filter
- func MustNewSimpleConvolutionFilterFromWav(wav string) Filter
- func NewBaseFilter(f func(cfg *audio.AudioConfig, samples []float64) []float64) Filter
- func NewSimpleConvolutionFilterFromWav(wav string) (Filter, error)
- func SumFilter(filters ...Filter) Filter
- type FlangerFilter
- type HighPassConvolutionFilter
- type LowPassConvolutionFilter
- type LowPassFilter
- type OverdriveFilter
- type SimpleConvolutionFilter
- type TremeloFilter
Constants ¶
View Source
const MaxInt int = (1<<bits.UintSize)/2 - 1
Variables ¶
This section is empty.
Functions ¶
func BandPassConvolution ¶
Order should be odd.
func HighPassConvolution ¶
Order should be odd.
func LowPassConvolution ¶
Order should be odd.
Types ¶
type BandPassConvolutionFilter ¶
type BandPassConvolutionFilter struct { // The lowest frequency to be included, in Hz. Lowest float64 // The Highest frequency to be included, in Hz. Highest float64 // The order of the filter. Should be odd. // The order can't be changed once set without resetting the convolution // filter. Order int // The underlying SimpleConvolutionFilter used. ConvolutionFilter *SimpleConvolutionFilter }
A FIR band pass filter.
func NewBandPassConvolutionFilter ¶
func NewBandPassConvolutionFilter(lowest, highest float64, order int) *BandPassConvolutionFilter
func (*BandPassConvolutionFilter) Filter ¶
func (f *BandPassConvolutionFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type BaseFilter ¶
type BaseFilter struct {
FilterFunc func(cfg *audio.AudioConfig, samples []float64) []float64
}
func (*BaseFilter) Filter ¶
func (f *BaseFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type DelayFilter ¶
type DelayFilter struct { LeftTime float64 LeftFactor float64 LeftFeedback float64 LeftDelayed *ring.Ring RightTime float64 RightFactor float64 RightFeedback float64 RightDelayed *ring.Ring }
func NewDelayFilter ¶
func NewDelayFilter(time, factor, feedback float64) *DelayFilter
func (*DelayFilter) Filter ¶
func (f *DelayFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type DistortionFilter ¶
type DistortionFilter struct {
Level float64
}
func NewDistortionFilter ¶
func NewDistortionFilter(level float64) *DistortionFilter
func (*DistortionFilter) Filter ¶
func (f *DistortionFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type Equalizer ¶
func NewEqualizer ¶
type Filter ¶
type Filter interface {
Filter(cfg *audio.AudioConfig, samples []float64) []float64
}
func AverageFilter ¶
func ComposedFilter ¶
func NewBaseFilter ¶
func NewBaseFilter(f func(cfg *audio.AudioConfig, samples []float64) []float64) Filter
type FlangerFilter ¶
type FlangerFilter struct { Time float64 Factor float64 LFORate float64 LeftDelayed []float64 RightDelayed []float64 Phase int }
func NewFlangerFilter ¶
func NewFlangerFilter(time, factor, rate float64) *FlangerFilter
func (*FlangerFilter) Filter ¶
func (f *FlangerFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type HighPassConvolutionFilter ¶
type HighPassConvolutionFilter struct { // The cutoff frequency, in Hz. Cutoff float64 // The order of the filter. Should be odd. // The order can't be changed once set without resetting the convolution // filter. Order int // The underlying SimpleConvolutionFilter used. ConvolutionFilter *SimpleConvolutionFilter }
A FIR high pass filter.
func NewHighPassConvolutionFilter ¶
func NewHighPassConvolutionFilter(cutoff float64, order int) *HighPassConvolutionFilter
func (*HighPassConvolutionFilter) Filter ¶
func (f *HighPassConvolutionFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type LowPassConvolutionFilter ¶
type LowPassConvolutionFilter struct { Cutoff float64 // The order of the filter. Should be odd. // The order can't be changed once set without resetting the convolution // filter. Order int // The underlying SimpleConvolutionFilter used. ConvolutionFilter *SimpleConvolutionFilter }
func NewLowPassConvolutionFilter ¶
func NewLowPassConvolutionFilter(cutoff float64, order int) *LowPassConvolutionFilter
func (*LowPassConvolutionFilter) Filter ¶
func (f *LowPassConvolutionFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type LowPassFilter ¶
Cutoff frequency = Alpha / ((1 - Alpha) * 2 * Pi * dt Alpha = 2Pi * dt * Cutoff / (2Pi * dt * Cutoff + 1)
func NewLowPassFilter ¶
func NewLowPassFilter(cutoff float64) *LowPassFilter
func (*LowPassFilter) Filter ¶
func (f *LowPassFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type OverdriveFilter ¶
type OverdriveFilter struct {
Factor float64
}
func NewOverdriveFilter ¶
func NewOverdriveFilter(factor float64) *OverdriveFilter
func (*OverdriveFilter) Filter ¶
func (f *OverdriveFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type SimpleConvolutionFilter ¶
type SimpleConvolutionFilter struct { Coefficients []float64 LeftDelayLine *ring.Ring RightDelayLine *ring.Ring }
The simple convolution filter is efficient when the number of coefficients is small (on my desktop: <300), and works by multiplying the coefficients with the values in the delay line.
This filter should be appropriate for implementing low pass, high pass, band pass and band stop filters.
func NewSimpleConvolutionFilter ¶
func NewSimpleConvolutionFilter(coefficients []float64) *SimpleConvolutionFilter
func (*SimpleConvolutionFilter) Filter ¶
func (s *SimpleConvolutionFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
type TremeloFilter ¶
func NewTremeloFilter ¶
func NewTremeloFilter(rate, factor float64) *TremeloFilter
func (*TremeloFilter) Filter ¶
func (f *TremeloFilter) Filter(cfg *audio.AudioConfig, samples []float64) []float64
Click to show internal directories.
Click to hide internal directories.