I didn’t know what category this belonged on. It came up in the VCVRack Discord, someone wanted to change the audio device in a bunch of patches.
VCV patch files are JSON, and plenty of languages can manipulate JSON. This is a python version.
One could use this basic strategy for other ‘find and modify’ operations on VCV files.
EDIT: If anyone cares, the ‘indent’ of 2 matches what Rack writes out. If you use an indent of 2, then you can use diff to see what’s changed & it just shows modified lines.
import json # for json import sys # for argv & exit # expect a filename and devicename on command line if len(sys.argv) < 3: print('missing arguments: convertaudio.py filename newDevice') sys.exit(1) filename = sys.argv device = sys.argv with open(filename, 'r') as f: # open the VCV file data = json.load(f); # parse it into a JSON dictionary for module in data['modules']: # look for the module # This works for core AudioInterface, would need to change for any # other variety of audio interface module if module['plugin'] == 'Core' and module['model'] == 'AudioInterface': module['data']['audio']['deviceName'] = device outfile = filename + '.new' # write output with open(outfile, 'w') as fout: # open output json.dump(data,fout,indent=2); # dump the json