27 lines
No EOL
1.1 KiB
Lua
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 |