Documentation
¶
Overview ¶
Package generator provides various audio generators.
Index ¶
- func LUTSineWaveform(x float32) float32
- func LUTSquareWaveform(x float32) float32
- func SawtoothWaveform(x float32) float32
- func SineWaveform(x float32) float32
- func SquareWaveform(x float32) float32
- func TriangleWaveform(x float32) float32
- type Constant
- type Noise
- type OscilWaveform
- type Oscillator
- type Silence
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LUTSineWaveform ¶
LUTSineWaveform generates a sine wave using a LUT (see lutmath package).
func LUTSquareWaveform ¶
LUTSquareWaveform generates a square wave using a LUT (see lutmath package).
func SawtoothWaveform ¶
SawtoothWaveform generates a sawtooth wave.
func SquareWaveform ¶
SquareWaveform generates a square wave.
func TriangleWaveform ¶
TriangleWaveform generates a triangle wave.
Types ¶
type Constant ¶
type Constant struct {
// Value is the costant value to be outputted.
Value float32
}
Constant generates a constant audio signal.
The zero value for Constant is ready to use.
Example ¶
package main
import (
"fmt"
"github.com/SladkyCitron/resona/generator"
)
func main() {
constant := generator.NewConstant(1)
samples := make([]float32, 5)
_, err := constant.ReadSamples(samples)
if err != nil {
panic(err)
}
fmt.Println(samples)
fmt.Printf("%.2f == %.2f: %v\n", constant.Value, samples[0], constant.Value == samples[0])
}
Output: [1 1 1 1 1] 1.00 == 1.00: true
type Noise ¶
type Noise struct {
// contains filtered or unexported fields
}
Noise represents a RNG noise generator.
Example ¶
package main
import (
"fmt"
"github.com/SladkyCitron/resona/generator"
)
func main() {
noise := generator.NewNoise()
samples := make([]float32, 5)
_, err := noise.ReadSamples(samples)
if err != nil {
panic(err)
}
fmt.Println(samples)
}
Output:
func NewNoise ¶
func NewNoise() *Noise
NewNoise creates a new Noise generator with the default RNG source.
func NewNoiseWithSource ¶
NewNoiseWithSource creates a new Noise generator with the provided RNG source.
type OscilWaveform ¶
OscilWaveform is a function that maps a waveform value for a given input x in the range [0, 1).
type Oscillator ¶
Oscillator is a simple oscillator that generates a waveform at a specified frequency and sample rate.
Example ¶
package main
import (
"fmt"
"github.com/SladkyCitron/resona/freq"
"github.com/SladkyCitron/resona/generator"
)
func main() {
sr := 48 * freq.KiloHertz
osc := generator.NewOscillator(440*freq.Hertz, sr, generator.SineWaveform)
samples := make([]float32, 5)
_, err := osc.ReadSamples(samples)
if err != nil {
panic(err)
}
fmt.Println(samples)
}
Output:
func NewOscillator ¶
func NewOscillator(f freq.Frequency, sampleRate freq.Frequency, waveform OscilWaveform) *Oscillator
NewOscillator creates a new Oscillator.
func (*Oscillator) ReadSamples ¶
func (o *Oscillator) ReadSamples(p []float32) (int, error)
type Silence ¶
type Silence struct{}
Silence is a generator that generates silence.
The zero value for Silence is ready to use.
Example ¶
package main
import (
"fmt"
"github.com/SladkyCitron/resona/generator"
)
func main() {
var silence generator.Silence
samples := make([]float32, 5)
_, err := silence.ReadSamples(samples)
if err != nil {
panic(err)
}
fmt.Println(samples)
}
Output: [0 0 0 0 0]