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