Skip to content

Instantly share code, notes, and snippets.

@grejppi
Last active May 26, 2018 22:39
Show Gist options
  • Save grejppi/95640dead2df2069ce0fe98d5f4f06d0 to your computer and use it in GitHub Desktop.
Save grejppi/95640dead2df2069ce0fe98d5f4f06d0 to your computer and use it in GitHub Desktop.
from collections import defaultdict
import lilv
if __name__ == '__main__':
w = lilv.World()
w.load_all()
lv2_AudioPort = w.new_uri(lilv.LILV_URI_AUDIO_PORT)
lv2_InputPort = w.new_uri(lilv.LILV_URI_INPUT_PORT)
lv2_OutputPort = w.new_uri(lilv.LILV_URI_OUTPUT_PORT)
plugins = defaultdict(list)
for plugin in w.get_all_plugins():
uri = str(plugin.get_uri())
ports = []
inputs = plugin.get_num_ports_of_class(lv2_AudioPort, lv2_InputPort)
outputs = plugin.get_num_ports_of_class(lv2_AudioPort, lv2_OutputPort)
for i in range(plugin.get_num_ports()):
port = plugin.get_port_by_index(i)
if port.is_a(lv2_AudioPort):
continue
ports.append(str(port.get_symbol()))
plugins[frozenset(ports)].append((uri, inputs, outputs))
if len(plugins) > 0:
for portset in plugins.keys():
if len(plugins[portset]) < 2:
continue
print("---", portset)
for uri, inputs, outputs in plugins[portset]:
print(" ", inputs, outputs, uri)
print()
else:
print("There are no variant plugins on this system.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment