Skip to content

Instantly share code, notes, and snippets.

@Jj0YzL5nvJ
Forked from bitingsock/cycle-adevice.lua
Last active May 20, 2022 20:37
Show Gist options
  • Save Jj0YzL5nvJ/d206337d2a6b179780bfaced4a2447cf to your computer and use it in GitHub Desktop.
Save Jj0YzL5nvJ/d206337d2a6b179780bfaced4a2447cf to your computer and use it in GitHub Desktop.
Cycle through available audio devices with key binds(a,ctrl+a). Change "wasapi" on line 1 to your relevant audio api.
local api = "wasapi"
local deviceList = {}
local function cycle_adevice(s, e, d)
while s ~= e + d do -- until the loop would cycle back to the number we started on
if string.find(mp.get_property("audio-device"), deviceList[s].name, 1, true) then
while true do
if s + d == 0 then --the device list starts at 1; 0 means we iterated to far
s = #deviceList + 1 --so lets restart at the last device
elseif s + d == #deviceList + 1 then --we iterated past the last device
s = 0 --then start from the beginning
end
s = s + d --next device
if string.find(deviceList[s].name, api, 1, true) then
mp.set_property("audio-device",deviceList[s].name)
deviceList[s].description = "•"..deviceList[s].description
local list = "AUDIO DEVICE:\n"
for i=1,#deviceList do
if string.find(deviceList[i].name, api, 1, true) then
if deviceList[i].name~=deviceList[s].name then list = list.."◦" end
list=list..deviceList[i].description.."\n"
end
end
if mp.get_property("vid")=="no" then
print("audio="..deviceList[s].description)
else
mp.osd_message(list, 3)
end
return
end
end
end
s = s + d
end
end
local function cycle_back()
deviceList = mp.get_property_native("audio-device-list")
cycle_adevice(#deviceList, 1, -1) --'s'tart at last device, 'e'nd at device 1, iterate backward 'd'elta=-1
end
local function cycle_forward()
deviceList = mp.get_property_native("audio-device-list")
cycle_adevice(1, #deviceList, 1) --'s'tart at device 1, 'e'nd at last device, iterate forward 'd'elta=1
end
mp.add_key_binding("a", "cycle_adevice", cycle_forward)
mp.add_key_binding("Ctrl+a", "cycleBack_adevice", cycle_back)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment