1 files changed, 35 insertions(+), 2 deletions(-)

M player/player.go
M player/player.go +35 -2
@@ 8,9 8,9 @@ package player
 
 import (
 	"fmt"
-	//"os"
+	"os"
 	"math"
-	//"encoding/binary"
+	"encoding/binary"
 	"time"
 	"slices"
 

          
@@ 1129,6 1129,39 @@ func (p *Player) RenderBufferRaw(bufSize
 	return ret, count, pState
 }
 
+// floatMode: use float32 output
+func (p *Player) RenderToFile(path string, floatMode bool) {
+	//_log.Dbg("%F path:", path, "floatMode:", floatMode)
+	fmt.Println("Player RenderToFile path:", path, "floatMode:", floatMode)
+
+	var outBuf []byte
+	var outBufRaw [][2]float64
+	if !floatMode {
+		outBuf = p.RenderToBufRaw()
+	} else {
+		outBufRaw = p.RenderToBuf()
+	}
+
+	f, err := os.Create(path)
+	if err != nil {
+		panic(err)
+	}
+	if !floatMode {
+		_, err := f.Write(outBuf)
+		if err != nil {
+			panic(err)
+		}
+	} else {
+		data := BufTof32Buf(outBufRaw)
+		err = binary.Write(f, binary.LittleEndian, data)
+		if err != nil {
+			panic(err)
+		}
+	}
+	f.Close()
+	_log.Dbg("done %F")
+}
+
 func (p *Player) _renderToBuf() ([][2]float64, []byte) {
 	fmt.Println("Player _renderToBuf")