A couple of MT questions

Bryan

2007-09-13 07:18:52

Dear Florian,

1) Is it possible, either with the classic or pro versions, for one translator to know if another is active? That is, if I press a G, I want its actions to be different depending on whether C is currently being held down. Can one translator set and clear a variable which can be tested by another?

2) I have another program listening to the same MIDI in as MT. I would like MT to instead act as a filter, passing on some MIDI events but not others. Is it possible in Windows to set up a "MIDI pipe" that MT would write to and the other program could listen to?

Bryan

2007-09-15 03:46:56

Well, I found MIDI Yoke, and it seems that MT Pro does what I want.

I'm a little confused about the licensing--since it's a beta version, is there still a license fee?

florian

2007-09-15 11:44:00

Hi Bryan,

1) with MT Pro you can set and query variables. Variables are 2-letter words, starting with g, e.g. ga,gb,gc... (there are also local variables which loose their meaning when done processing an event).

The way to go (taking your example):

Code: Select all

Translator 1: set flag when C is down
INCOMING: key C down
RULES: gc=1
OUTGOING: <none>

Translator 2: clear flag when C is up
INCOMING: key C up
RULES: gc=0
OUTGOING: <none>

Translator 3: do one thing on G with C not pressed
OPTIONS: stop processing: unchecked
INCOMING: key G
RULES: IF gc!=0 THEN exit rules, do not execute action
OUTGOING: <do one thing>

Translator 4: do another thing on G with C held down
OPTIONS: stop processing: unchecked
INCOMING: key G
RULES: IF gc!=1 THEN exit rules, do not execute action
OUTGOING: <do another thing>
Licensing:
Indeed, there is a license fee for the beta version after the 30 day trial. I know it's not usual, but in this case, MT Pro has already been very stable, and the main reason why it's still in beta phase is the lack of a user manual. We're currently working on it.

Also, owning MT Pro beta, you'll get a free update to the release version, of course.

And there'll be a new beta soon...

I hope that explains,
Florian

florian

2007-09-17 11:40:23

"exit rules, do not execute action" moves on the the next rule regardless of the stop option, right? It would be handy if there were a way to prevent this.
Indeed:
- "exit rules, do not execute action" will skip anything further in this translator entry and move on to the next translator, examining its input action
- the "stop processing" flag only applies when the Outgoing Action is executed. Then, if the flag is true, further translator entries will be ignored.

You can always (though it's clumsy) add a "swallow" translator entry with "Stop Processing" turned on, and an empty/"None" outgoing action.

For a future version of MT Pro we will add a rule "Stop processing of this input event" to force "stop processing" in a rule.

Florian

PS: Bryan, I don't know why your reply does not show up here - I received a notification email about it, so I just included it as a quote.

Bryan

2007-09-17 19:41:50

I erased it, since it seems like a nit pick, but I'm glad to hear you're considering it for a future improvement.

My other suggestion would be to allow variables in the keyboard output.

Outgoing3=KAM10100KSQ100020ga2ga

I realize the problem is making this user-friendly

florian

2007-09-18 14:20:53

yes, I've been thinking about ways to parameterize the outgoing key string.

One important thing is to "send text" rather than keystrokes, i.e. you just enter e.g. "Typed Text" as Outgoing Action. Now variables can be inserted with an escape sequence, e.g. "Still %ga% notes left". %ga% would be replaced by the number, e.g. "Still 10 notes left" if ga has the value 10.
Also it should be possible to replace a variable with the ASCII equivalent, e.g. %(ga)% or so will be replaced with the ASCII character with index ga (I'm not sure about a suitable format yet).

How does that sound?
Florian

Bryan

2007-09-18 22:28:26

I'm more interested in sending a particular character then in converting to decimal. For my application, probably ASCII conversion in text would be good enough, though being able to do more general keystrokes would be cool.

As far as syntax, why not use the C printf format?