.h2p Diff Tool
This is a simple Python script I wrote to compare two .h2p patches.
I wrote it for Zebra, but it should work for any U-He synth that uses the
same preset format.
#!/usr/bin/env python
import argparse
from collections import defaultdict
def read_lines_from(fn):
a = readfrom(fn)
if a is None:
return None
else:
return a.rstrip().splitlines()
def parse_mod(lines,mods):
mod = None
for line in lines:
if line.startswith("//"):
return
if line.startswith("#cm="):
_, mod = line.split("=")
elif mod is not None:
if "=" in line:
k,v = line.split("=")
mods[mod][k] = v
def main():
parser = argparse.ArgumentParser(prog="h2pdiff",description="simple h2p diff")
parser.add_argument("left",type=str)
parser.add_argument("right",type=str)
ns = parser.parse_args()
left_fn = ns.left
right_fn = ns.right
left = read_lines_from(left_fn)
right = read_lines_from(right_fn)
left_mods = defaultdict(dict)
right_mods = defaultdict(dict)
parse_mod(left,left_mods)
parse_mod(right,right_mods)
for k in left_mods.keys():
lm = left_mods[k]
rm = right_mods[k]
for kk in lm.keys():
lv = lm[kk]
rv = rm[kk]
if lv != rv:
print(f"{k}:{kk} {lv} != {rv}")
if __name__ == "__main__":
main()