from mididings import *

config(
  client_name='MMC-Translate',
     in_ports=[('MIDI-note-CC-in')],
     out_ports=[('MMC-out')],
	)
run(
	#######  MPK Midi to MMC  ########
  (
	Filter(CTRL)
	>> CtrlSplit({
		# Play
		4: SysEx('\xf0\x7f\x7f\x06\x02\xf7'),
		# Stop
		3: SysEx('\xf0\x7f\x7f\x06\x01\xf7'),
		# Rew
		1: SysEx('\xf0\x7f\x7f\x06\x05\xf7'),
		# Fwd
		2: SysEx('\xf0\x7f\x7f\x06\x04\xf7') 
		})
	)
	//
	(
	Filter(NOTE)
	>> KeySplit ({
		# 24-35 octave sends MMC RecArm (0x4f) ON
		24: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x00\x20\x20\xf7'),
		25: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x00\x40\x40\xf7'),
		26: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x01\x01\xf7'),
		27: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x02\x02\xf7'),
		28: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x04\x04\xf7'),
		29: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x08\x08\xf7'),
		30: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x10\x10\xf7'),
		31: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x20\x20\xf7'),
		32: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x40\x40\xf7'),
		33: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x02\x01\x01\xf7'),
		34: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x02\x02\x02\xf7'),
		35: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x02\x04\x04\xf7'),
		# 24-35 octave sends MMC RecArm (0x4f) OFF
		36: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x00\x20\x00\xf7'),
		37: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x00\x40\x00\xf7'),
		38: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x01\x00\xf7'),
		39: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x02\x00\xf7'),
		40: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x04\x00\xf7'),
		41: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x08\x00\xf7'),
		42: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x10\x00\xf7'),
		43: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x20\x00\xf7'),
		44: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x01\x40\x00\xf7'),
		45: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x02\x01\x00\xf7'),
		46: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x02\x02\x00\xf7'),
		47: SysEx('\xf0\x7f\x7f\x06\x41\x04\x4f\x02\x04\x00\xf7'),
		# 48-59 keys send MMC Mute (0x62) ON
		48: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x00\x20\x20\xf7'),
		49: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x00\x40\x40\xf7'),
		50: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x01\x01\xf7'),
		51: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x02\x02\xf7'),
		52: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x04\x04\xf7'),
		53: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x08\x08\xf7'),
		54: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x10\x10\xf7'),
		55: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x20\x20\xf7'),
		56: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x40\x40\xf7'),
		57: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x02\x01\x01\xf7'),
		58: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x02\x02\x02\xf7'),
		59: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x02\x04\x04\xf7'),
		# 60-71 keys send MMC Mute (0x62) OFF
		60: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x00\x20\x00\xf7'),
		61: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x00\x40\x00\xf7'),
		62: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x01\x00\xf7'),
		63: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x02\x00\xf7'),
		64: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x04\x00\xf7'),
		65: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x08\x00\xf7'),
		66: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x10\x00\xf7'),
		67: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x20\x00\xf7'),
		68: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x01\x40\x00\xf7'),
		69: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x02\x01\x00\xf7'),
		70: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x02\x02\x00\xf7'),
		71: SysEx('\xf0\x7f\x7f\x06\x41\x04\x62\x02\x04\x00\xf7'),
		# 72-83 octave sends MMC Solo (0x66) ON
		72: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x00\x20\x20\xf7'),
		73: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x00\x40\x40\xf7'),
		74: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x01\x01\xf7'),
		75: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x02\x02\xf7'),
		76: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x04\x04\xf7'),
		77: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x08\x08\xf7'),
		78: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x10\x10\xf7'),
		79: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x20\x20\xf7'),
		80: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x40\x40\xf7'),
		81: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x02\x01\x01\xf7'),
		82: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x02\x02\x02\xf7'),
		83: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x02\x04\x04\xf7'),
		# 84-95 octave sends MMC Solo (0x66) ON
		84: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x00\x20\x00\xf7'),
		85: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x00\x40\x00\xf7'),
		86: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x01\x00\xf7'),
		87: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x02\x00\xf7'),
		88: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x04\x00\xf7'),
		89: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x08\x00\xf7'),
		90: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x10\x00\xf7'),
		91: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x20\x00\xf7'),
		92: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x01\x40\x00\xf7'),
		93: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x02\x01\x00\xf7'),
		94: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x02\x02\x00\xf7'),
		95: SysEx('\xf0\x7f\x7f\x06\x41\x04\x66\x02\x04\x00\xf7')
		})
	)
	>> Port('MMC-out') 
)
