When you assign a function into the menu, like channel("45")
you are actually assigning the result of running that function, since there's no language construct to differentiate between "pass this function and parameter for running later" and "run right now."
Normally when you assign a function, you pass it by name only so there's no confusion.
There's a right to get around this, however, in the form of an anonymous function. In Python these are called lambdas and take the form:
lambda arg1, arg2: arg1+arg2
Lambda functions can accept arguments, and return the result of a simple expression or, crucially, of executing another function.
You can change your menu item assignments to:
menu.add_item('Blue Order/Main patch/E-mu Modular/Fat square', lambda: channel("45"))
menu.add_item('Blue Order/Main patch/E-mu Modular/Fat Saw', lambda: channel("56"))
This is basically a shorthand for something like this:
def channel_45():
channel(45)
def channel_56():
chanel(56)
menu.add_item('Blue Order/Main patch/E-mu Modular/Fat square', channel_45)
menu.add_item('Blue Order/Main patch/E-mu Modular/Fat Saw', channel_56)