move go bindings into contrib/go/rtaudio subdirectory
[rtaudio-cdist.git] / contrib / go / rtaudio / rtaudio_test.go
1 package rtaudio
2
3 import (
4         "log"
5         "math"
6         "time"
7 )
8
9 func ExampleCompiledAPI() {
10         log.Println("RtAudio version: ", Version())
11         for _, api := range CompiledAPI() {
12                 log.Println("Compiled API: ", api)
13         }
14 }
15
16 func ExampleRtAudio_Devices() {
17         audio, err := Create(APIUnspecified)
18         if err != nil {
19                 log.Fatal(err)
20         }
21         defer audio.Destroy()
22         devices, err := audio.Devices()
23         if err != nil {
24                 log.Fatal(err)
25         }
26         for _, d := range devices {
27                 log.Printf("Audio device: %#v\n", d)
28         }
29 }
30
31 func ExampleRtAudio_Open() {
32         const (
33                 sampleRate = 44100
34                 bufSz      = 512
35                 freq       = 440.0
36         )
37         phase := 0.0
38         audio, err := Create(APIUnspecified)
39         if err != nil {
40                 log.Fatal(err)
41         }
42         defer audio.Destroy()
43
44         params := StreamParams{
45                 DeviceID:     uint(audio.DefaultOutputDevice()),
46                 NumChannels:  2,
47                 FirstChannel: 0,
48         }
49         options := StreamOptions{
50                 Flags: FlagsAlsaUseDefault,
51         }
52         cb := func(out, in Buffer, dur time.Duration, status StreamStatus) int {
53                 samples := out.Float32()
54                 for i := 0; i < len(samples)/2; i++ {
55                         sample := float32(math.Sin(2 * math.Pi * phase))
56                         phase += freq / sampleRate
57
58                         samples[i*2] = sample
59                         samples[i*2+1] = sample
60                 }
61                 return 0
62         }
63         err = audio.Open(&params, nil, FormatFloat32, sampleRate, bufSz, cb, &options)
64         if err != nil {
65                 log.Fatal(err)
66         }
67         defer audio.Close()
68         audio.Start()
69         defer audio.Stop()
70         time.Sleep(3 * time.Second)
71 }