mixer channels test (generate channel buffers ?)
2 files changed, 75 insertions(+), 3 deletions(-)

M player/channelmixer.go
M player/channelsys.go
M player/channelmixer.go +74 -2
@@ 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
 	}
 	

          
M player/channelsys.go +1 -1
@@ 48,5 48,5 @@ func (s *ChannelSys) SetNumChannels(n in
 	// XXX	
 	s.createChannels(n)
 	// XXX
-	//s.ChannelMixer.SetNumChannels(n)
+	s.ChannelMixer.SetNumChannels(n)
 }