summaryrefslogtreecommitdiff
path: root/autoart/autoaudio.go
diff options
context:
space:
mode:
Diffstat (limited to 'autoart/autoaudio.go')
-rw-r--r--autoart/autoaudio.go64
1 files changed, 33 insertions, 31 deletions
diff --git a/autoart/autoaudio.go b/autoart/autoaudio.go
index 05a91d4..cc5965e 100644
--- a/autoart/autoaudio.go
+++ b/autoart/autoaudio.go
@@ -20,37 +20,39 @@ along with AutoArt. If not, see <https://www.gnu.org/licenses/>.
package autoart
import (
- "github.com/pommicket/autoart/autoutils"
- "io"
+ "github.com/pommicket/autoart/autoutils"
+ "io"
)
func GenerateAudio(output io.Writer, duration float64, sampleRate int32,
- functionLength int, rectifier int) error {
- samples := int64(duration * float64(sampleRate))
- err := autoutils.WriteAudioHeader(output, samples, 1, sampleRate)
- if err != nil { return err }
-
- vars := make([]float64, 1)
- const sampleBufferSize = 4096
- sampleBuffer := make([]uint8, sampleBufferSize)
- sampleBufferIndex := 0
-
- var function autoutils.Function
- function.Generate(1, functionLength)
-
- for s := int64(0); s < samples; s++ {
- t := float64(s) / float64(sampleRate)
- vars[0] = t
- value := rectify(function.Evaluate(vars), rectifier)
- sampleBuffer[sampleBufferIndex] = uint8(255 * value)
- sampleBufferIndex++
- if sampleBufferIndex == sampleBufferSize {
- err = autoutils.WriteAudioSamples(output, sampleBuffer)
- if err != nil {
- return err
- }
- sampleBufferIndex = 0
- }
- }
- return autoutils.WriteAudioSamples(output, sampleBuffer[:sampleBufferIndex])
-} \ No newline at end of file
+ functionLength int, rectifier int) error {
+ samples := int64(duration * float64(sampleRate))
+ err := autoutils.WriteAudioHeader(output, samples, 1, sampleRate)
+ if err != nil {
+ return err
+ }
+
+ vars := make([]float64, 1)
+ const sampleBufferSize = 4096
+ sampleBuffer := make([]uint8, sampleBufferSize)
+ sampleBufferIndex := 0
+
+ var function autoutils.Function
+ function.Generate(1, functionLength)
+
+ for s := int64(0); s < samples; s++ {
+ t := float64(s) / float64(sampleRate)
+ vars[0] = t
+ value := rectify(function.Evaluate(vars), rectifier)
+ sampleBuffer[sampleBufferIndex] = uint8(255 * value)
+ sampleBufferIndex++
+ if sampleBufferIndex == sampleBufferSize {
+ err = autoutils.WriteAudioSamples(output, sampleBuffer)
+ if err != nil {
+ return err
+ }
+ sampleBufferIndex = 0
+ }
+ }
+ return autoutils.WriteAudioSamples(output, sampleBuffer[:sampleBufferIndex])
+}