Documentation
¶
Index ¶
- func Apply(in <-chan audio.Slice, q func(p audio.Slice)) <-chan audio.Slice
- func ComplexSliceModulus(Freq []complex128) []float64
- func ComplexifyRealSlice(Freq []float64) []complex128
- func CooleyTukeyDITFFT(Freq []complex128, Result []complex128, n, s int)
- func CooleyTukeyDITFFTReal(Freq []float64, Result []complex128, n, s int)
- func CooleyTukeyDITIFFT(Freq []complex128, Result []complex128, n, s int)
- func FFTFreqIndex(Freq, SampleRate float64, numBuckets int) int
- func FFTIndexFreq(i int, SampleRate float64, numBuckets int) float64
- func GetBadFilenamesFunc(f func(filename string, err error)) func(filename string, p *Prayer, s *StateTracker)
- func GetFiles(ch chan *FileStack) func(filename string, p *Prayer, s *StateTracker)
- func MakeTonePattern(steps ...float64) []float64
- func Merge(add ...<-chan audio.Slice) <-chan audio.Slice
- func MergeGroups(a map[string]*Group, b map[string]*Group) map[string]*Group
- func MergeMysteries(a map[string]*Mystery, b map[string]*Mystery) map[string]*Mystery
- func MergePrayers(a map[string]*Prayer, b map[string]*Prayer) map[string]*Prayer
- func MergeStructures(a map[string]*Structure, b map[string]*Structure) map[string]*Structure
- func ParseGroups(data *toml.TomlTree) map[string]*Group
- func ParseMysteries(data *toml.TomlTree) map[string]*Mystery
- func ParsePrayers(data *toml.TomlTree) map[string]*Prayer
- func ParseStructures(data *toml.TomlTree) map[string]*Structure
- func PrintActualFilename(filename string, p *Prayer, s *StateTracker)
- func PrintFilename(filename string, p *Prayer, s *StateTracker)
- func Split(in <-chan audio.Slice) (<-chan audio.Slice, <-chan audio.Slice)
- func StretchTonePattern(x int, steps ...float64) []float64
- func Transistor(input <-chan audio.Slice, control <-chan audio.Slice, ...) <-chan audio.Slice
- type CyclingGoertzelFilter
- type Decade
- type FFTProcessor
- type FileStack
- type GenProcessor
- type Generator
- type GoertzelFilter
- type GoertzelVolume
- type Group
- type HarmonicTone
- type Mystery
- type OptionProvider
- type Options
- type Prayer
- func (p *Prayer) AddFilename(filename string)
- func (p *Prayer) AddOption(option *Prayer)
- func (p *Prayer) ForEachFile(o OptionProvider, s *StateTracker, ...)
- func (p *Prayer) GetChosenFilenames(o OptionProvider) []string
- func (p *Prayer) SetDesc(desc string)
- func (p *Prayer) SetFilename(filename string)
- func (p *Prayer) SetName(name string)
- func (p *Prayer) SetText(text string)
- type Processor
- type PureTone
- type Rosary
- type Stack
- type StateTracker
- func (s *StateTracker) Apply(name string) string
- func (s *StateTracker) CDTrack() string
- func (s *StateTracker) FileNum() int
- func (s *StateTracker) MatchActualFile(filename string) (string, error)
- func (s *StateTracker) NumWord(num int) string
- func (s *StateTracker) SetDecadeNumWord(num int)
- func (s *StateTracker) UpdateFilename() (filenameChanged bool)
- func (s *StateTracker) XofGroup() string
- func (s *StateTracker) XthGroupMystery() string
- func (s *StateTracker) ZeroFileNum() string
- func (s *StateTracker) ZeroNum(num int, zeroes int) string
- type Structure
- type TonePattern
- type VolumeKnob
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ComplexSliceModulus ¶
func ComplexSliceModulus(Freq []complex128) []float64
func ComplexifyRealSlice ¶
func ComplexifyRealSlice(Freq []float64) []complex128
func CooleyTukeyDITFFT ¶
func CooleyTukeyDITFFT(Freq []complex128, Result []complex128, n, s int)
Cooley-Tukey Decimation In Time Fast Fourier Transform radix-2
func CooleyTukeyDITFFTReal ¶
func CooleyTukeyDITFFTReal(Freq []float64, Result []complex128, n, s int)
func CooleyTukeyDITIFFT ¶
func CooleyTukeyDITIFFT(Freq []complex128, Result []complex128, n, s int)
Cooley-Tukey Decimation In Time Inverse Fast Fourier Transform radix-2
func FFTFreqIndex ¶
func GetBadFilenamesFunc ¶
func GetBadFilenamesFunc(f func(filename string, err error)) func(filename string, p *Prayer, s *StateTracker)
func MakeTonePattern ¶
Give this a list of alternating steps and lengths [1, 5, 0, 5] and it will make a list of steps [1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
func MergeMysteries ¶
func MergePrayers ¶
Merge functions return a with b's entries added, possibly replacing a's entries
func MergeStructures ¶
func PrintActualFilename ¶
func PrintActualFilename(filename string, p *Prayer, s *StateTracker)
func PrintFilename ¶
func PrintFilename(filename string, p *Prayer, s *StateTracker)
Utility functions to pass to ForEachFile Functions should handle being passed "", nil, nil as the last entry
func StretchTonePattern ¶
Types ¶
type CyclingGoertzelFilter ¶
type CyclingGoertzelFilter struct {
Freq float64
SampleRate float64
ResetEvery int
// contains filtered or unexported fields
}
func NewCyclingGoertzelFilter ¶
func NewCyclingGoertzelFilter(Freq float64, SampleRate float64, ResetEvery int, num int) *CyclingGoertzelFilter
type Decade ¶
func (*Decade) ForEachFile ¶
func (d *Decade) ForEachFile(o OptionProvider, s *StateTracker, f func(filename string, p *Prayer, s *StateTracker))
func (*Decade) GetPrayers ¶
type FFTProcessor ¶
type FFTProcessor interface {
Process(p []complex128)
}
type GenProcessor ¶
type GenProcessor struct {
// contains filtered or unexported fields
}
func NewGenProcessor ¶
func NewGenProcessor(f func(p audio.Slice)) *GenProcessor
func (*GenProcessor) Process ¶
func (g *GenProcessor) Process(p audio.Slice)
type Generator ¶
type Generator struct {
Prayers map[string]*Prayer
Mysteries map[string]*Mystery
Groups map[string]*Group
Structures map[string]*Structure
Options *Options
}
func NewGenerator ¶
func NewGenerator() *Generator
NewGenerator creates and loads a Generator from .toml files
func (*Generator) FindMystery ¶
func (*Generator) GroupsForRosary ¶
func (*Generator) Init ¶
func (g *Generator) Init()
Init loads Generator with data from .toml files prayers.toml structures.toml options.toml
func (*Generator) RenderList ¶
type GoertzelFilter ¶
type GoertzelFilter struct {
Freq float64
SampleRate float64
// contains filtered or unexported fields
}
based on https://netwerkt.wordpress.com/2011/08/25/goertzel-filter/
func NewGoertzelFilter ¶
func NewGoertzelFilter(Freq float64, SampleRate float64) *GoertzelFilter
func (*GoertzelFilter) Zero ¶
func (g *GoertzelFilter) Zero()
type GoertzelVolume ¶
type GoertzelVolume struct {
Freq float64
SampleRate float64
Filter *CyclingGoertzelFilter
}
func NewGoertzelVolume ¶
func NewGoertzelVolume(Freq float64, SampleRate float64, ResetEvery int, num int) *GoertzelVolume
func (*GoertzelVolume) Process ¶
func (g *GoertzelVolume) Process(p audio.Slice)
type Group ¶
func (*Group) AddMystery ¶
type HarmonicTone ¶
type HarmonicTone struct {
Freq float64
SampleRate float64
NumHarmonics int
HarmonicDistance float64
VibratoDistance float64
VibratoRate float64
// contains filtered or unexported fields
}
func NewHarmonicTone ¶
func NewHarmonicTone(Freq, SampleRate float64, num int, distance float64) *HarmonicTone
func (*HarmonicTone) Process ¶
func (a *HarmonicTone) Process(p audio.Slice)
1 2 3 4 1, 2/3 + 2/6, 4/7 + 4/14 + 4/28, 8/15 + 8/30 + 8/60 + 8/120
func (*HarmonicTone) SetFreq ¶
func (a *HarmonicTone) SetFreq(Freq float64)
func (*HarmonicTone) SetVibrato ¶
func (a *HarmonicTone) SetVibrato(VibratoDistance float64, VibratoRate float64)
type Mystery ¶
func NewMystery ¶
func (*Mystery) ForEachFile ¶
func (m *Mystery) ForEachFile(o OptionProvider, s *StateTracker, f func(filename string, p *Prayer, s *StateTracker))
func (*Mystery) GetPrayers ¶
type OptionProvider ¶
type Prayer ¶
type Prayer struct {
Key string
Name string
Desc string
Text string
Filename string
Filenames []string
Options []*Prayer
}
func (*Prayer) AddFilename ¶
func (*Prayer) ForEachFile ¶
func (p *Prayer) ForEachFile(o OptionProvider, s *StateTracker, f func(filename string, p *Prayer, s *StateTracker))
func (*Prayer) GetChosenFilenames ¶
func (p *Prayer) GetChosenFilenames(o OptionProvider) []string
func (*Prayer) SetFilename ¶
type PureTone ¶
type PureTone struct {
LeftFreq, RightFreq float64
SampleRate float64
// contains filtered or unexported fields
}
func NewPureTone ¶
type Rosary ¶
func (*Rosary) ForEachFile ¶
func (r *Rosary) ForEachFile(idirs []string, odir string, outputFilename string, format string, o OptionProvider, f func(filename string, p *Prayer, s *StateTracker), s *StateTracker)
func (*Rosary) GetPrayers ¶
func (*Rosary) RenderToFiles ¶
func (r *Rosary) RenderToFiles(idirs []string, odir string, outputFilename string, format string, o OptionProvider, gapLength int, s *StateTracker)
type StateTracker ¶
type StateTracker struct {
InputDirs []string
OutputDir string
Format string
Group string // Preamble/[Group]/Postamble
DecadeNumWord string
Mystery string
MysteryPhrase string
Prayer string
PrayerName string
OutputFileNum int
InputFileNum int
GroupNum int
MysteryNum int
PrayerNum int
HailMaryNum int
OutputFilenameTemplate string
LastFilename string
}
func NewStateTracker ¶
func NewStateTracker(idirs []string, odir string, outputFilename string, format string) *StateTracker
func (*StateTracker) Apply ¶
func (s *StateTracker) Apply(name string) string
func (*StateTracker) CDTrack ¶
func (s *StateTracker) CDTrack() string
func (*StateTracker) FileNum ¶
func (s *StateTracker) FileNum() int
func (*StateTracker) MatchActualFile ¶
func (s *StateTracker) MatchActualFile(filename string) (string, error)
Searches input dirs in order specified for the file
func (*StateTracker) NumWord ¶
func (s *StateTracker) NumWord(num int) string
func (*StateTracker) SetDecadeNumWord ¶
func (s *StateTracker) SetDecadeNumWord(num int)
func (*StateTracker) UpdateFilename ¶
func (s *StateTracker) UpdateFilename() (filenameChanged bool)
func (*StateTracker) XofGroup ¶
func (s *StateTracker) XofGroup() string
func (*StateTracker) XthGroupMystery ¶
func (s *StateTracker) XthGroupMystery() string
func (*StateTracker) ZeroFileNum ¶
func (s *StateTracker) ZeroFileNum() string
type Structure ¶
type Structure struct {
Key string
Name string
Preamble []string
Group []string
Mystery []string
Postamble []string
}
func NewStructure ¶
func StructureForPrayer ¶
func StructureForPrayers ¶
func (*Structure) AddMystery ¶
func (*Structure) AddPostamble ¶
func (*Structure) AddPreamble ¶
type TonePattern ¶
type TonePattern struct {
LeftSteps []float64
RightSteps []float64
// contains filtered or unexported fields
}
func NewSymmetricTonePattern ¶
func NewSymmetricTonePattern(Steps ...float64) *TonePattern
func (*TonePattern) Process ¶
func (t *TonePattern) Process(p audio.Slice)
type VolumeKnob ¶
type VolumeKnob struct {
Volume float64
}
func (*VolumeKnob) Process ¶
func (v *VolumeKnob) Process(p audio.Slice)