From 930bf41b5db5433e89dceff9a620f33bd72ad1b2 Mon Sep 17 00:00:00 2001 From: starcalc Date: Sun, 16 Oct 2022 18:47:51 +0200 Subject: [PATCH] Corrected go code --- Pi/main.go | 52 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/Pi/main.go b/Pi/main.go index 73c66e7..847ae98 100644 --- a/Pi/main.go +++ b/Pi/main.go @@ -11,34 +11,47 @@ import ( "os" "sync" "time" + "fmt" ) var sounds = []*beep.Buffer{ - mustLoadStream("./mini_grand/mini_grand-001.wav"), - mustLoadStream("./mini_grand/mini_grand-003.wav"), - mustLoadStream("./mini_grand/mini_grand-005.wav"), - mustLoadStream("./mini_grand/mini_grand-006.wav"), - mustLoadStream("./mini_grand/mini_grand-008.wav"), - mustLoadStream("./mini_grand/mini_grand-010.wav"), - mustLoadStream("./mini_grand/mini_grand-012.wav"), - mustLoadStream("./mini_grand/mini_grand-013.wav"), + mustLoadStream("./default/001.wav"), + mustLoadStream("./default/002.wav"), + mustLoadStream("./default/003.wav"), + mustLoadStream("./default/004.wav"), + mustLoadStream("./default/005.wav"), + mustLoadStream("./default/006.wav"), + mustLoadStream("./default/007.wav"), + mustLoadStream("./default/008.wav"), } +var counter int + func mustLoadStream(p string) *beep.Buffer { - f, err := os.Open(p) + counter++ + log.Println("Loading: /media/usb/00" + fmt.Sprintf("%d", counter) + ".wav") + f, err := os.Open("/media/usb/00" + fmt.Sprintf("%d", counter) + ".wav") if err != nil { - log.Fatal(err) + log.Println("Failed: /media/usb/00" + fmt.Sprintf("%d", counter) + ".wav") + log.Println("Loading " + p) + f, err = os.Open(p) + if err != nil { + // log.Fatal(err) + return nil + } } defer f.Close() streamer, format, err := wav.Decode(f) if err != nil { - log.Fatal(err) + log.Fatal(err) } defer streamer.Close() newFormat := format - newFormat.SampleRate = format.SampleRate / 4 + // newFormat.SampleRate = format.SampleRate / 4 + // newFormat.SampleRate = format.SampleRate / 2 + newFormat.SampleRate = format.SampleRate resample := beep.Resample(4, format.SampleRate, newFormat.SampleRate, streamer) buffer := beep.NewBuffer(newFormat) @@ -86,7 +99,10 @@ func (w *soundWorker) Start() { defer w.mtx.Unlock() w.isRunning = true - w.ctrl.Streamer.(beep.StreamSeeker).Seek(0) + // w.ctrl.Streamer.(beep.StreamSeeker).Seek(0) + // log.Println("Buffer Start: " + fmt.Sprintf("%d", w.ctrl.Streamer)) + w.ctrl.Streamer = beep.Seq(w.buffer.Streamer(0, w.buffer.Len()), beep.Silence(-1)) + // w.ctrl.Streamer = w.buffer.Streamer(0, w.buffer.Len()) w.volume.Volume = 1 w.ctrl.Paused = false } @@ -104,6 +120,7 @@ func main() { } format := sounds[0].Format() + // if err := speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/100)); err != nil { if err := speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/100)); err != nil { return } @@ -112,13 +129,18 @@ func main() { mixer := beep.Mixer{} for _, buffer := range sounds { + if buffer == nil { + continue + } c := &beep.Ctrl{ - Streamer: buffer.Streamer(0, buffer.Len()), + // Streamer: buffer.Streamer(0, buffer.Len()), + Streamer: beep.Seq(buffer.Streamer(0, buffer.Len()), beep.Silence(-1)), Paused: true, } volume := &effects.Volume{ Streamer: c, + // Streamer: beep.Seq(c, beep.Silence(-1)), Base: 2, Volume: 1, } @@ -136,6 +158,7 @@ func main() { c := make(chan byte) + // List das byte von serial ein und prueft die bits go func() { for b := range c { for i, w := range soundWorkers { @@ -152,6 +175,7 @@ func main() { } }() + // List das byte ein for { buf := make([]byte, 1) _, err := stream.Read(buf)