local dfpwm = require("cc.audio.dfpwm") local encoder = dfpwm.make_encoder() local decoder = dfpwm.make_decoder() local function getFileName(name) local extension = ".dfpwm" local fullFile = name .. extension return fullFile end local function getSoundUrl(fileName) local baseRoute = "https://git.astrocore.space/root/NovaCorpLLC/raw/branch/main/" local name = getFileName(fileName) local fullPath = baseRoute .. name return fullPath end local function getSoundStream(fileName) print("Getting sound stream for: " .. fileName) local request = http.get(getSoundUrl(fileName)) print(textutils.serialize(request.getResponseHeaders())) request.close() end local function playSound(speaker, fileName) --local fileStream = getSoundStream(fileName) local fileStream = getFileName(fileName) local values = io.lines(fileStream, 16 * 1024) for input in values do print("playing audo....") local decoded = decoder(input) while not speaker.playAudio(decoded) do os.pullEvent("speaker_audio_empty") end end end local function playControlRoomAlarm(speakers) playSound(speakers,"short_control_alarm") end function addSoundFile(fileName) local baseRoute = "https://git.astrocore.space/root/NovaCorpLLC/raw/branch/main/" local name = getFileName(fileName) local fullPath = baseRoute .. name shell.execute("rm", name) shell.execute("wget", fullPath) end local function watch() end local function startup() local sounds = { { fileName = "control_alarm" } } for i, item in ipairs(sounds) do addSoundFile(item.fileName) end end local function shutdown() end local function report() end return { report = report, watch = watch, startup = startup, shutdown = shutdown, playControlRoomAlarm = playControlRoomAlarm, addSoundFile = addSoundFile }