package rtaudio import ( "log" "math" "time" ) func ExampleCompiledAPI() { log.Println("RtAudio version: ", Version()) for _, api := range CompiledAPI() { log.Println("Compiled API: ", api) } } func ExampleListDevices() { audio, err := Create(APIUnspecified) if err != nil { log.Fatal(err) } defer audio.Destroy() devices, err := audio.Devices() if err != nil { log.Fatal(err) } for _, d := range devices { log.Printf("Audio device: %#v\n", d) } } func ExamplePlaySine() { const ( sampleRate = 44100 bufSz = 512 freq = 440.0 ) phase := 0.0 audio, err := Create(APIUnspecified) if err != nil { log.Fatal(err) } defer audio.Destroy() params := StreamParams{ DeviceID: uint(audio.DefaultOutputDevice()), NumChannels: 2, FirstChannel: 0, } options := StreamOptions{ Flags: FlagsAlsaUseDefault, } cb := func(out, in Buffer, dur time.Duration, status StreamStatus) int { samples := out.Float32() for i := 0; i < len(samples)/2; i++ { sample := float32(math.Sin(2 * math.Pi * phase)) phase += freq / sampleRate samples[i*2] = sample samples[i*2+1] = sample } return 0 } err = audio.Open(¶ms, nil, FormatFloat32, sampleRate, bufSz, cb, &options) if err != nil { log.Fatal(err) } defer audio.Close() audio.Start() defer audio.Stop() time.Sleep(3 * time.Second) }