Transformer: Filter Midi Channels 'Type 0' (Resolved)

The above link shows my ‘resolved’ difficulties with streaming midi from an other app to Cubase.

But it’s ‘solution’ revealed a different problem. The midi stream was like a ‘type 0’ midi file. It was received by Cubase only on channel 1, but included all the voices on individual channels within it.

If you stream this midi to GM capable hardware, it of course plays the correct GM patches for the different channel voices.

But since my GM compatible hardware doesn’t permit either assignment of individual midi channels to separate audio outputs or muting of individual channels in GM mode, there is no way to obtain individual audio tracks of each channel voice … plus I’m limited to using only GM patches.

I want to break the midi stream inputted to Cubase so I can assign voices on a track by track basis.

Since Cubase reads the input only on channel 1, I figured it must be possible to route the same input to multiple tracks all receiving on channel 1 and then filter out all the embedded channels save one. That one being, of course, the channel voice I want for that track.

Looking through the manual it would seem that either Transformer MIDI or Midi Input would be the proper tools.

Can this work with either or both?

Which would be better for this task?

Any tips on best way to program them? (I have a ‘foggy notion’ about the filtering from reading the manual).

Thanks for any help.


That link would appear to be invalid :confused:

^Yeah … I guess it won’t work when you place it in the ‘u’ underline brackets instead of the ‘url’ … :blush:

but anyway … what’s the answer?


Yes, the Input Transformer is the solution…
Record-enable 16 MIDI tracks (set to “Any”), with a local Input Transformer on each.

TY Vic!

I see I’m on the right track … well almost there, anyway.

Short question thinking about setting presets/ template: any reason you recommend the Input Transformer over Transformer Midi plugin?


The Input Transformer transforms the data before it gets recorded on to the track.
The Transformer MIDI Insert plugin transforms the data “on its way out” (whether from the track, or from the input’s “thru”).

Excellent! Alles Klar.

Thanks so much.

Now I just have to figure out the logic/ programming for the Transformers. :laughing: But knowing I’m using the right function makes it sooooooooo much more motivating than dinkin’ around in the dark.


I’m confused about what you’re doing exactly.

Unless you have more than 16 streaming parts can’t you just assign them all a discreet channel, record them all to one track, and then dissolve by midi channel in Cubase? If it is more than 16 tracks to transfer do 16 at a time? Assuming you only have one midi port.

I can also only assume that the first application doesn’t export midi files or you wouldn’t even be asking about this but… how many tracks are in the stream?

Not getting it. The link in the OP sounds like you’re trying to record on an Instrument track instead of maybe a midi track set to “Any”?

True … been doing that. But then the midi tracks are ‘printed.’ Say I want to make some changes in the autocomposition app to tweak something? If I can feed Cubase in real time I can hear those changes with different voices instead of being tied to GM. I can also load different versions of the same track recompiled, etc. … which I can’t do when printed without going through an extended midi import/ export routine.

I can also only assume that the first application doesn’t export midi files or you wouldn’t even be asking about this but… how many tracks are in the stream?

Yes it does … but answered that above. Generally no more than 5 tracks … but can be as many as 10 or so.

Not getting it. The link in the OP sounds like you’re trying to record on an Instrument track instead of maybe a midi track set to “Any”?

Nope … no instrument tracks for me. It’s rack or nothing.


Ok, I got you. You’re not necessarily recording the midi data yet, you just want to hear it through Cubase and some other instruments while you fiddle around with the other app. Yeah, just do what Vic France said and setup your input transformers to only filter everything but ch1, ch2, ch3, down the line and save it as a template.

It’s already setup there in the Transformers “Channel Filtering” preset so just select one channel for each Cubase track from 1 to x and you’ll be able to use Cubase as a “synth rack” for your other program.

It should be the same in Cubase 6… those presets there.

Thanks to you, Audiocave … the mini tutorial is greatly appreciated!

Over the years I’ve acquired several different midi compositional programs. The idea of being able to ‘audition’ them through Cubase and record them if desired is really exciting … and I think will greatly simplify my work flow.


OK … not working so far.

For whatever reason, filtering out the midi channels, except for the one I let pass, does not filter out the notes on the other midi channels. Now it seems all the notes from the different channels all play on the single ‘passed’ midi channel.

I thought filtering the channels would also filter out the notes on the channels?

Can someone confirm whether or not filtering a midi channel should also filter out the notes?

I’d like to know if I just have the filter set incorrectly … or there are some further steps I need to do.

BTW … does the input transformer affect all midi in or only midi in while recording?



The input transformer does filter the imcoming notes if setup correctly.
You need to activate the actual transformer module(s)…
The input transformer affects the data at the input stage, no matter if recording or play or stop mode.

Yep, we all fall into that trap! :smiley: (it’s the switch on the left side of each module widget)

Thanks for the direction, Vic!

I’m still getting my head around the transformer/ logical editor functions. The BFM is pretty dense and unfriendly to the attention deficit disordered.

So … if I want to filter out program change messages, for example, do I set the middle box to equal, unequal or the other setting?


Boolian Logic (i.e. what is used here) should kinda look like, and make sense in, English.

So, to filter out Program Changes, you’d set…
Type is___equal___ Program Change

(and Function set to “Filter”)

If you had set it to “Unequal”, it would filter out everything except Program Changes! :wink:

I can’ believe I’m actually saying this (or in the vernacular, ‘dis’) … But, Vic, You da man!