# -*- coding: utf-8 -*-
"""
Created on Sat Apr 22 10:18:04 2017

@author: Frédéric
"""

import re
import xml.etree.cElementTree as ET

ins_filename = "D:/Pa5X.txt"
cubase_filename = "D:/Pa5X_cubase.txt"

work = {}

with open (cubase_filename,"w") as cubase_file:
    print("[cubase parse file]", file=cubase_file)
    print("[parser version 0001]", file=cubase_file)
    print("[comment]Pa5X", file=cubase_file)
    print("[creators first name]Frederic", file=cubase_file)
    print("[creators last name]Loyer", file=cubase_file)
    print("[device manufacturer]Korg", file=cubase_file)
    print("[device name]Pa5X", file=cubase_file)
    print("[script name]Pa5X", file=cubase_file)
    print("[script version]version 1.00", file=cubase_file)
    print("[define patchnames]", file=cubase_file)
    g1_name = ''
    with open (ins_filename) as ins_file:
        patch_re = re.compile("^(.*) (\d*) (\d*) (\d*)$")
        page_re = re.compile(".*\|.*")
        header_re = re.compile(".*Sound CC00 CC32 PC.*")
        g1_re = re.compile("(.*)/([^/]*)\n")
        
        for line in ins_file.readlines():
            if page_re.match(line) != None:
                continue
            if header_re.match(line) != None:
                continue
            patch_match = patch_re.match(line)
            if patch_match == None:
                g1_match = g1_re.match(line)
                if g1_match.group(1) != g1_name:
                    g1_name = g1_match.group(1)
                    print ("[g1]", g1_name, file=cubase_file)
                print ("[g2]", g1_match.group(2), file=cubase_file)
            else:
                name = patch_match.group(1)
                msb  = patch_match.group(2)
                lsb  = patch_match.group(3)
                pc   = patch_match.group(4)
                # print (name, msb, lsb, pc)
                print ("[p3, {}, {}, {}] {}".format(pc, msb,lsb,name), file=cubase_file)
    print("[end]", file=cubase_file)
