@@ 18,8 18,14 @@ type ChannelMixer struct {
// render buf accumulator ?
// optional ?
// can be used for wave display (?)
+ // to display current buffer ?
channelRenderBufAcc [][][2]float64
+ // XXX can be set (?)
channelRenderBufAccLen int
+ // temp buffers ?
+ // when ready content should be set to
+ // channelRenderBufAcc ?
+ tempChannelRenderBufAcc [][][2]float64
// test
outTestFile *os.File
@@ 30,6 36,10 @@ func NewChannelMixer(s *ChannelSys) *Cha
cm := &ChannelMixer{
channelSys: s,
+
+ // XXX
+ channelRenderBufAccLen: 200,
+ //channelRenderBufAccLen: 100,
}
return cm
@@ 52,7 62,69 @@ func (cm *ChannelMixer) Init() {
}
func (cm *ChannelMixer) SetNumChannels(n int) {
+ cm.createBuffers(n)
+}
+
+// XXX create channel buffers ?
+func (cm *ChannelMixer) createBuffers(n int) {
+ fmt.Println("ChannelMixer createBuffers n:", n)
+
+ cm.renderTickBuf = nil
+ cm.renderTickBuf = make([][][2]float64, 0)
+
+ for i := 0; i < n; i++ {
+ z := make([][2]float64, 0)
+ cm.renderTickBuf = append(cm.renderTickBuf, z)
+ }
+
+ cm.channelRenderBufAcc = nil
+ cm.channelRenderBufAcc = make([][][2]float64, 0)
+
+ for i := 0; i < n; i++ {
+ z := make([][2]float64, 0)
+ cm.channelRenderBufAcc = append(cm.channelRenderBufAcc, z)
+ }
+
+ cm.tempChannelRenderBufAcc = nil
+ cm.tempChannelRenderBufAcc = make([][][2]float64, 0)
+
+ for i := 0; i < n; i++ {
+ z := make([][2]float64, 0)
+ cm.tempChannelRenderBufAcc = append(cm.tempChannelRenderBufAcc, z)
+ }
+}
+
+// XXX
+func (cm *ChannelMixer) GetBufForChannel(chId int) [][2]float64 {
+
+ // sr/60 ?
+ bufLen := 44100/60
+
+ buf := GenSineBuf(44100, 1000, bufLen)
+ //buf := GenNoiseBuf(1.0, bufLen)
+ //buf := GenNoiseBuf(0.5, bufLen)
+
+ return buf
+}
+
+// XXX
+func (cm *ChannelMixer) GetChannelRenderBufAcc(chId int) [][2]float64 {
+
+ // sr/60 ?
+ //bufLen := 44100/60
+ bufLen := cm.channelRenderBufAccLen
+ _ = bufLen
+
+ buf := cm.channelRenderBufAcc[chId]
+
+ return buf
+}
+
+// XXX
+func (cm *ChannelMixer) UpdateChannelBuffers() [][2]float64 {
pp(2)
+
+ return nil
}
func (cm *ChannelMixer) mixnbufs(bufs... [][2]float64) [][2]float64 {
@@ 110,8 182,8 @@ func (cm *ChannelMixer) RenderChannelTic
buf := ch.RenderTick(tickSize)
// XXX update renderTickBuf
- //if true {
- if false {
+ if true {
+ //if false {
cm.renderTickBuf[chId] = buf
}
@@ 48,5 48,5 @@ func (s *ChannelSys) SetNumChannels(n in
// XXX
s.createChannels(n)
// XXX
- //s.ChannelMixer.SetNumChannels(n)
+ s.ChannelMixer.SetNumChannels(n)
}