Я пытаюсь создать простой метроном для изучения языка программирования nim, и хотя я могу заставить воспроизводить звук, время не работает.Я запускаю это на Mac OSX, и каждый третий или четвертый «щелчок» всегда имеет лаг
Вот мой код:
# nim code to create a metronome
import times, os
import sdl2, sdl2/mixer
sdl2.init(INIT_AUDIO)
var click : ChunkPtr
var channel : cint
var audio_rate : cint
var audio_format : uint16
var audio_buffers : cint = 4096
var audio_channels : cint = 2
if mixer.openAudio(audio_rate, audio_format, audio_channels, audio_buffers) != 0:
quit("There was a problem")
click = mixer.loadWAV("click.wav")
var bpm = 120
var next_click = getTime()
let dur = initDuration(milliseconds = toInt(60000 / bpm))
var last_click = getTime()
while true:
var now = getTime()
if now >= next_click:
next_click = next_click + dur
# discard mixer.playChannelTimed(0, click, 0, cint(500)
discard mixer.playChannel(0, click, 0)
os.sleep(1)
Есть идеи, почему лаг?
(кстати, файл click.wav всего один канал и длиной 0,2 секунды)