Corrected go code

This commit is contained in:
starcalc 2022-10-16 18:47:51 +02:00
parent 2b3f45ea8c
commit 930bf41b5d
1 changed files with 38 additions and 14 deletions

View File

@ -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)