0
0

More than 1 year has passed since last update.

Creative BT-W3 が一定時間音声を再生しないと接続が切れるから、一定間隔で音声を再生するプログラムを作った

Last updated at Posted at 2022-09-29
main.go
package main

import (
    "log"
    "os"
    "time"

    "github.com/faiface/beep"
    "github.com/faiface/beep/effects"
    "github.com/faiface/beep/mp3"
    "github.com/faiface/beep/speaker"
)

func main() {
    f, err := os.Open("beep.mp3") // 300ms くらいの再生時間のビープ音源を用意しておく
    if err != nil {
        log.Fatal(err)
    }

    streamer, format, err := mp3.Decode(f)
    if err != nil {
        log.Fatal(err)
    }
    defer streamer.Close()

    speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))

    ctrl := &beep.Ctrl{Streamer: beep.Loop(-1, streamer), Paused: false} // beep.Loop に -1 を指定して、無限に再生し続ける
    volume := &effects.Volume{
        Streamer: ctrl,
        Base:     2,
        Volume:   -7, // 音量調整。音が鳴ってさえいればいいので、気が散らないように音量を下げる
        Silent:   false,
	}

    speaker.Play(volume) // 非同期再生開始

    for {
        if ctrl.Paused { // 再生が中断になった時は
            time.Sleep(time.Second * 120) // 120 秒スリープして、120 秒後に再生されるようにする
        } else { // 再生中の時は
            time.Sleep(time.Millisecond * 300) // 300ms だけスリープして、300ms beep.mp3 を再生する
        }

        speaker.Lock()
        ctrl.Paused = !ctrl.Paused // ここで再生状態と停止状態を切り替える
        speaker.Unlock()
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0