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