diff --git a/corpus/0009.wav b/corpus/0009.wav new file mode 100644 index 0000000..f2e9c34 Binary files /dev/null and b/corpus/0009.wav differ diff --git a/corpus/0918.wav b/corpus/0918.wav new file mode 100644 index 0000000..789481f Binary files /dev/null and b/corpus/0918.wav differ diff --git a/corpus/1827.wav b/corpus/1827.wav new file mode 100644 index 0000000..b604aab Binary files /dev/null and b/corpus/1827.wav differ diff --git a/corpus/of.wav b/corpus/of.wav new file mode 100644 index 0000000..1400c62 Binary files /dev/null and b/corpus/of.wav differ diff --git a/examples/wavConcat/concat.go b/examples/wavConcat/concat.go new file mode 100644 index 0000000..a8c60d7 --- /dev/null +++ b/examples/wavConcat/concat.go @@ -0,0 +1,87 @@ +package main + +import ( + "fmt" + "github.com/rlfosterjr/wav" + "os" +) + +func concat(files []string, ofn string) { + var wf = wav.File{ + Channels: 2, + SampleRate: 44100, + SignificantBits: 16, + } + + of, _ := os.Create(ofn) + defer of.Close() + + inc := len(files) + ww, err := wf.NewWriter(of) + + if err != nil { + fmt.Println(err) + } else { + for i := 0; i < inc; i++ { + fmt.Println("File: " + files[i]) + f, _ := os.Open(files[i]) + stat, _ := f.Stat() + wr, _ := wav.NewReader(f, stat.Size()) + fmt.Println(wr.String()) + + var s uint32 + samps := wr.GetSampleCount() + + for s = 0; s < samps; s++ { + cs, _ := wr.ReadRawSample() + ww.WriteSample(cs) + } + f.Close() + } + ww.Close() + } +} + +//Test Wav Concat (stereo) +func main() { + + //concat incremnts + inc := 3 + + increments := make([]string, inc) + increments[0] = "../../corpus/0009.wav" + increments[1] = "../../corpus/0918.wav" + increments[2] = "../../corpus/1827.wav" + + of, _ := os.Create("concat.wav") + defer of.Close() + + var wf = wav.File{ + Channels: 2, + SampleRate: 44100, + SignificantBits: 16, + } + + ww, err := wf.NewWriter(of) + if err != nil { + fmt.Println(err) + } else { + for i := 0; i < inc; i++ { + fmt.Println("File: " + increments[i]) + f, _ := os.Open(increments[i]) + stat, _ := f.Stat() + wr, _ := wav.NewReader(f, stat.Size()) + fmt.Println(wr.String()) + + var s uint32 + samps := wr.GetSampleCount() + + for s = 0; s < samps; s++ { + cs, _ := wr.ReadRawSample() + ww.WriteSample(cs) + } + f.Close() + } + ww.Close() + } +} diff --git a/examples/wavConcat/concat.wav b/examples/wavConcat/concat.wav new file mode 100644 index 0000000..1400c62 Binary files /dev/null and b/examples/wavConcat/concat.wav differ diff --git a/writer.go b/writer.go index 531c160..3f08ba4 100644 --- a/writer.go +++ b/writer.go @@ -26,7 +26,7 @@ type Writer struct { // NewWriter creates a new WaveWriter and writes the header to it func (file File) NewWriter(out output) (wr *Writer, err error) { - if file.Channels != 1 { + if file.Channels < 0 || file.Channels > 2 { err = fmt.Errorf("sorry, only mono currently") return }