def make_zero_based_midi(defs):
    """
    The official MIDI spec is 1 based (why???), but
    clearly most things are 0 based. So this function shifts all of the
    program numbers down by one and keeps 0 as piano.
    :param defs:
    :return:
    """
    for k, v in defs.items():
        pgms = [max(i - 1, 0) for i in v['program_numbers']]
        defs[k]['program_numbers'] = pgms

    return defs