Dup Ver Goto 📝

.h2p Diff Tool

DAW/plugins/uhe/zebra2 zebra does not exist
To
61 lines, 158 words, 1331 chars Page 'H2pDiffTool' does not exist.

.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()