generator

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package generator provides various audio generators.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func LUTSineWaveform

func LUTSineWaveform(x float32) float32

LUTSineWaveform generates a sine wave using a LUT (see lutmath package).

func LUTSquareWaveform

func LUTSquareWaveform(x float32) float32

LUTSquareWaveform generates a square wave using a LUT (see lutmath package).

func SawtoothWaveform

func SawtoothWaveform(x float32) float32

SawtoothWaveform generates a sawtooth wave.

func SineWaveform

func SineWaveform(x float32) float32

SineWaveform generates a sine wave.

func SquareWaveform

func SquareWaveform(x float32) float32

SquareWaveform generates a square wave.

func TriangleWaveform

func TriangleWaveform(x float32) float32

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

func NewConstant

func NewConstant(val float32) *Constant

NewConstant creates a new Constant generator.

In most cases, new(Constant) (or just declaring a Constant variable) is sufficient to create a new Constant.

func (*Constant) ReadSamples

func (c *Constant) ReadSamples(p []float32) (n int, err error)

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)
}

func NewNoise

func NewNoise() *Noise

NewNoise creates a new Noise generator with the default RNG source.

func NewNoiseWithSource

func NewNoiseWithSource(src rand.Source) *Noise

NewNoiseWithSource creates a new Noise generator with the provided RNG source.

func (*Noise) ReadSamples

func (n *Noise) ReadSamples(p []float32) (int, error)

type OscilWaveform

type OscilWaveform func(x float32) float32

OscilWaveform is a function that maps a waveform value for a given input x in the range [0, 1).

type Oscillator

type Oscillator struct {
	Frequency freq.Frequency
	// contains filtered or unexported fields
}

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)
}

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]

func (*Silence) ReadSamples

func (s *Silence) ReadSamples(p []float32) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL