---@meta

---@class buzzer
buzzer = {}

---Відтворює звук заданої частоти.
---
---Якщо передати другий аргумент, звук буде відтворено впродовж цього часу (в мілісекундах).
---
---@param frequency number частота тону
---@param size? number тривалість звуку (в мілісекундах)
function buzzer.play(frequency, size) end

---Відтворює мелодію.
---
---Мелодія - це масив з пар частота-розмірність.
---
---Наприклад, ноту з частотою ``523`` Гц (нота "до" п'ятої октави) і тривалістю 1/4 можна представити як ``{523, 4}``.
---
---Від'ємна тривалість означає ноту з крапкою, наприклад:
---
---* ``-1`` - ціла нота з крапкою (1 + 1/2)
---* ``-2`` - половина з крапкою (1/2 + 1/4)
---* ``-4`` - чверть з крапкою (1/4 + 1/8)
---...і так далі.
---
---Якщо частота дорівнює 0, то вона інтерпретується як пауза.
---
---@param melody table мелодія (масив пар частота-розмірність)
---@param tempo number темп мелодії (кількість ударів на хвилину)
---@usage
--- -- Мелодія "до-ре-мі-фа-соль" п'ятої октави
--- local melody = {
---     {523, 2},
---     {587, 4},
---     {659, 2},
---     {698, 4},
---     {784, 2},
--- }
--- buzzer.play_melody(melody, 60)  -- Відтворює мелодію з темпом 60 ударів на хвилину
--- -- Також можна використовувати глобальний модуль notes, де є константи для нот від B0 до D#8:
--- local melody2 = {
---     {notes.C4, 4},  -- "до" четвертої октави
---     {notes.FS4, 2}, -- "фа-дієз" четвертої октави
---     {notes.D5, 1},  -- "ре" п'ятої октави
---     {0, 2},  -- Пауза
--- }
--- buzzer.play_melody(melody2, 60)
function buzzer.play_melody(melody, tempo) end

---Зупиняє відтворення всіх звуків.
---@return nil
function buzzer.stop() end

return buzzer
