ComputerCraft/MusicPlayer/Client/playback.lua
2024-03-10 23:45:44 +03:00

27 lines
No EOL
1.1 KiB
Lua

local dfpwm = require("cc.audio.dfpwm")
local speaker = peripheral.find("speaker")
local decoder = dfpwm.make_decoder()
local graphics = require("graphics")
local function play_music(status_vars, cfg_vars, audio_catalogue, modem)
if (not status_vars.is_playing) or status_vars.is_paused then return 0 end
modem.transmit(7101, 7101, {type = 'track_chunk',
index = status_vars.track_index,
starting_second = status_vars.current_second,
length = cfg_vars.chunk_size})
local event, sides, channel, replyChannel, message, distance = os.pullEvent('modem_message')
local buffer = decoder(message.track)
while not speaker.playAudio(buffer) do
os.pullEvent("speaker_audio_empty")
graphics.draw_audio_bar(1, select(2, term.getSize()) - 2, status_vars.current_second + cfg_vars.chunk_size, audio_catalogue[status_vars.track_index], status_vars.is_paused, term)
end
return status_vars.current_second + cfg_vars.chunk_size
end
return play_music