31 lines
569 B
Go
31 lines
569 B
Go
package main
|
|
|
|
import "git.gammaspectra.live/S.O.N.G/Kirika/audio"
|
|
|
|
func SplitAudioSource(source audio.Source, split int) (sources []audio.Source) {
|
|
for i := 0; i < split; i++ {
|
|
sources = append(sources, audio.Source{
|
|
SampleRate: source.SampleRate,
|
|
Channels: source.Channels,
|
|
Blocks: make(chan []float32),
|
|
})
|
|
}
|
|
|
|
go func() {
|
|
defer func() {
|
|
for _, s := range sources {
|
|
close(s.Blocks)
|
|
}
|
|
}()
|
|
|
|
for block := range source.Blocks {
|
|
//TODO: this might block?
|
|
for _, s := range sources {
|
|
s.Blocks <- block
|
|
}
|
|
}
|
|
}()
|
|
|
|
return
|
|
}
|