diff options
Diffstat (limited to 'autoaudio.go')
-rw-r--r-- | autoaudio.go | 142 |
1 files changed, 80 insertions, 62 deletions
diff --git a/autoaudio.go b/autoaudio.go index dcf6cb9..5bd6fd3 100644 --- a/autoaudio.go +++ b/autoaudio.go @@ -20,76 +20,94 @@ along with AutoArt. If not, see <https://www.gnu.org/licenses/>. package main import ( - "bufio" - "os" - "github.com/pommicket/autoart/autoart" - "github.com/pommicket/autoart/autoutils" - "fmt" - "math/rand" - "time" + "bufio" + "fmt" + "github.com/pommicket/autoart/autoart" + "github.com/pommicket/autoart/autoutils" + "math/rand" + "os" + "time" ) func generateAudio(seed int64, length int64, sampleRate int64, functionLength int64, number int64) error { - rand.Seed(seed) - dir := fmt.Sprintf("autoaudio%v", seed) - err := os.MkdirAll(dir, 0700) - if err != nil { return err } - err = autoutils.RunInBatches(number, "Generating audio...", func (n int64, errs chan<- error) { - filename := fmt.Sprintf("%v/%09d.wav", dir, n) - file, err := os.Create(filename) - if err != nil { - errs <- err - return - } - err = autoart.GenerateAudio(file, float64(length), int32(sampleRate), int(functionLength), autoart.MOD) - if err != nil { - errs <- err - return - } - errs <- file.Close() - }) - if err != nil { return err } - fmt.Println("Done. Your audio is in this directory:", dir) - return nil + rand.Seed(seed) + dir := fmt.Sprintf("autoaudio%v", seed) + err := os.MkdirAll(dir, 0700) + if err != nil { + return err + } + err = autoutils.RunInBatches(number, "Generating audio...", func(n int64, errs chan<- error) { + filename := fmt.Sprintf("%v/%09d.wav", dir, n) + file, err := os.Create(filename) + if err != nil { + errs <- err + return + } + err = autoart.GenerateAudio(file, float64(length), int32(sampleRate), int(functionLength), autoart.MOD) + if err != nil { + errs <- err + return + } + errs <- file.Close() + }) + if err != nil { + return err + } + fmt.Println("Done. Your audio is in this directory:", dir) + return nil } func autoAudio(reader *bufio.Reader) error { - prompt := `How many options do you want? + prompt := `How many options do you want? 1. None - Just make some audio 2. Some - Basic options 3. All - Advanced options Please enter 1, 2, or 3 (default: 1): ` - option, err := readInt64(reader, prompt, func (i int64) bool { - return i >= 1 && i <= 3 - }, 1) - if err != nil { - return err - } - t := time.Now().UTC().UnixNano() - if option == 1 { - filename := fmt.Sprintf("autoaudio%v.wav", t) - rand.Seed(t) - file, err := os.Create(filename) - if err != nil { return err } - err = autoart.GenerateAudio(file, 60, 44100, 80, autoart.MOD) - if err != nil { return err } - fmt.Println("Generated audio:", filename) - return nil - } - positive := func (i int64) bool { return i > 0 } - length, err := readInt64(reader, "Length in seconds (default: 60)? ", positive, 60) - if err != nil { return err } - number, err := readInt64(reader, "Number (default: 1)? ", positive, 1) - if err != nil { return err } - if option == 2 { - return generateAudio(t, length, 44100, 80, number) - } - sampleRate, err := readInt64(reader, "Sample rate (default: 44100)? ", positive, 44100) - if err != nil { return err } - functionLength, err := readInt64(reader, "Function length (default: 80)? ", positive, 80) - if err != nil { return err } - seed, err := readInt64(reader, "Random seed (default: current time)? ", positive, t) - if err != nil { return err } - return generateAudio(seed, length, sampleRate, functionLength, number) + option, err := readInt64(reader, prompt, func(i int64) bool { + return i >= 1 && i <= 3 + }, 1) + if err != nil { + return err + } + t := time.Now().UTC().UnixNano() + if option == 1 { + filename := fmt.Sprintf("autoaudio%v.wav", t) + rand.Seed(t) + file, err := os.Create(filename) + if err != nil { + return err + } + err = autoart.GenerateAudio(file, 60, 44100, 80, autoart.MOD) + if err != nil { + return err + } + fmt.Println("Generated audio:", filename) + return nil + } + positive := func(i int64) bool { return i > 0 } + length, err := readInt64(reader, "Length in seconds (default: 60)? ", positive, 60) + if err != nil { + return err + } + number, err := readInt64(reader, "Number (default: 1)? ", positive, 1) + if err != nil { + return err + } + if option == 2 { + return generateAudio(t, length, 44100, 80, number) + } + sampleRate, err := readInt64(reader, "Sample rate (default: 44100)? ", positive, 44100) + if err != nil { + return err + } + functionLength, err := readInt64(reader, "Function length (default: 80)? ", positive, 80) + if err != nil { + return err + } + seed, err := readInt64(reader, "Random seed (default: current time)? ", positive, t) + if err != nil { + return err + } + return generateAudio(seed, length, sampleRate, functionLength, number) -}
\ No newline at end of file +} |