MIDI thru

Hi,

What’s the best way to get MIDI thru out of TOUCH?

I have a keyboard wired to a MIDI interface connected to my computer running TOUCH.
In Touch, I opend the MIDI device mapper and I can see my note events under the IN Events tab - cool.
Test it: it works!
I click on the Out Events tab and notice that the note events are also being sent to the MIDI out - cool.
Test it: doesn’t work. MIDI device mapper is misleading me?

I look at my MIDI interface and the IN light blinks when I hit key but the OUT light does not.
The midi notes are getting ‘stuck’ in Touch.

I manually put in a MIDI in chop, set the note number to * to include all notes and wire that
to a MIDI out chop. Now it works but with a 500ms delay.

It would be sweet to have a MIDI thru toggle somewhere as I want the keyboard to ‘play Touch’, then pass thru
and play another outboard synth connected.

Is there another way to do this? I’m on the latest build of TD068.

HI David,

If you are not actually generating any midi from Touch itself, the tightest way to do it is as follows…

install midiox from [url]http://www.midiox.com/[/url]
also install midiYoke from the same site (if you don’t already have a midi loopback driver)

the latter is a midi loopback driver that creates a bunch of fake midi ports that can be patched how you like.

in midiOx, go to the options menu and click ‘MIDI Devices…’ That brings up a page where you can choose the MIDI input port (the one from your keyboard in this case).
then you set the output to either your hardware out for an external synth or ‘out to midiYoke:1’ then, in yout software synth set midiYoke:1 as your midi input.
then you set another output to ‘out to midiYoke:2’ then, in the touch MIDI mapper, select midiYoke:2 as your input.

this arrangement effectively splits the MIDI so that, instead of going through Touch, it goes straight to your synth. This totally eliminates any delays from touch.

MidiOx also lets you filter certain MIDI data or remap controllers, and generally better see what’s going in and out of Touch while debugging MIDI stuff.

Hope that helps.

In general avoid daisy-chaining MIDI through several devices as there will always be a delay.
listen to how crisp synthesiser music from the early '80s sounds compared to that from 1989 onwards. that’s when MIDI really took over and techno got sloppy. Our ears got used to it, but get an old kraftwerk record and feel what zero latency can do for your soul. :stuck_out_tongue:

Rod.

Ahhh… the MAN MA CHINE MA CHINE MA CHINE MA CHINE.

Thanks for the response. Will the setup you described still allow me to run Touch off of
my MIDI input as well as pass it directly through the interface to MIDI out?

I desgined a simple colorscale setup but once i copy/paste my process and create
6 of these Touch slows down to a crawl.

i have to learn how to use Clones (what they are exactly) and how to optimize my setup.

i’m running into issues with timesliced chops that are processing MIDI, when the
channel carrying the note trigger on info ceases to exist in between note triggers
this causes major problems with the limit SOP making geometry and crashes any Render TOPs.

i feel like i’m close but need to spend time with thetouch masters to fully undersatnd what’s going on.

i know it can run really quickly as i’ve seen touch do some amazing things. hope to get that performance out of TD
in 2008.

To get around this, you can use a Replace CHOP. Create a Constant CHOP that contains all you channels that you use with some default values. You can use the “Snapshot Input” button in the Constant CHOP’s Snap parameter page to do this if you plug your CHOP stream into the Constant’s input. Then wire the Constant CHOP into the 1st input of the Replace CHOP, and then wire your CHOP stream into the 2nd input of the Replace CHOP.

The Replace CHOP will output the 2nd input’s channel values when they exist. If the channel is not present in the second input, then the 1st input’s values will be used for that channel name. This will give you a constant channel set defined by the channels in input 1.

Could you post a .dmp of this crash you’re seeing? I haven’t been able to reproduce it myself.
Thanks

One way to output is to gather all your input channels using Midi In or MIDI Map CHOPs.

After that uber-CHOP, put a Text DAT that runs On Value Change on the CHOP. In the Text DAT put a “midi” command that reflects what changed. “echo $args” in your script will help you figure out what changed.