Corrected go code
This commit is contained in:
parent
2b3f45ea8c
commit
930bf41b5d
52
Pi/main.go
52
Pi/main.go
|
@ -11,34 +11,47 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
var sounds = []*beep.Buffer{
|
var sounds = []*beep.Buffer{
|
||||||
mustLoadStream("./mini_grand/mini_grand-001.wav"),
|
mustLoadStream("./default/001.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-003.wav"),
|
mustLoadStream("./default/002.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-005.wav"),
|
mustLoadStream("./default/003.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-006.wav"),
|
mustLoadStream("./default/004.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-008.wav"),
|
mustLoadStream("./default/005.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-010.wav"),
|
mustLoadStream("./default/006.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-012.wav"),
|
mustLoadStream("./default/007.wav"),
|
||||||
mustLoadStream("./mini_grand/mini_grand-013.wav"),
|
mustLoadStream("./default/008.wav"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var counter int
|
||||||
|
|
||||||
func mustLoadStream(p string) *beep.Buffer {
|
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 {
|
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()
|
defer f.Close()
|
||||||
|
|
||||||
streamer, format, err := wav.Decode(f)
|
streamer, format, err := wav.Decode(f)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
defer streamer.Close()
|
defer streamer.Close()
|
||||||
|
|
||||||
newFormat := format
|
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)
|
resample := beep.Resample(4, format.SampleRate, newFormat.SampleRate, streamer)
|
||||||
|
|
||||||
buffer := beep.NewBuffer(newFormat)
|
buffer := beep.NewBuffer(newFormat)
|
||||||
|
@ -86,7 +99,10 @@ func (w *soundWorker) Start() {
|
||||||
defer w.mtx.Unlock()
|
defer w.mtx.Unlock()
|
||||||
|
|
||||||
w.isRunning = true
|
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.volume.Volume = 1
|
||||||
w.ctrl.Paused = false
|
w.ctrl.Paused = false
|
||||||
}
|
}
|
||||||
|
@ -104,6 +120,7 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
format := sounds[0].Format()
|
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 {
|
if err := speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/100)); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -112,13 +129,18 @@ func main() {
|
||||||
|
|
||||||
mixer := beep.Mixer{}
|
mixer := beep.Mixer{}
|
||||||
for _, buffer := range sounds {
|
for _, buffer := range sounds {
|
||||||
|
if buffer == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
c := &beep.Ctrl{
|
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,
|
Paused: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
volume := &effects.Volume{
|
volume := &effects.Volume{
|
||||||
Streamer: c,
|
Streamer: c,
|
||||||
|
// Streamer: beep.Seq(c, beep.Silence(-1)),
|
||||||
Base: 2,
|
Base: 2,
|
||||||
Volume: 1,
|
Volume: 1,
|
||||||
}
|
}
|
||||||
|
@ -136,6 +158,7 @@ func main() {
|
||||||
|
|
||||||
c := make(chan byte)
|
c := make(chan byte)
|
||||||
|
|
||||||
|
// List das byte von serial ein und prueft die bits
|
||||||
go func() {
|
go func() {
|
||||||
for b := range c {
|
for b := range c {
|
||||||
for i, w := range soundWorkers {
|
for i, w := range soundWorkers {
|
||||||
|
@ -152,6 +175,7 @@ func main() {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
// List das byte ein
|
||||||
for {
|
for {
|
||||||
buf := make([]byte, 1)
|
buf := make([]byte, 1)
|
||||||
_, err := stream.Read(buf)
|
_, err := stream.Read(buf)
|
||||||
|
|
Loading…
Reference in New Issue