Sysex Channel Separation

I am importing MIDI song files into Cubase 6.5 in order to record out the parts to audio.

The MIDI file places all the Sysex information for each channel on to one track. This track remains unmuted in order to send out the relevant data to the part that is being recorded to audio. The problem is that there is often a huge amount of Sysex data not relevant to the part that is being recorded to audio, and so MIDI glitching occurs when large amounts of Sysex data are transmitted from the track that is holding all the information.

To solve the problem, I need to extract all the Sysex data relevant to each MIDI channel and paste it into that channel so that only the data for that channel is transmitted when the channel is solo’d for recording out to audio.

But this is a massive task particularly when there is a shed load of Sysex data in one track and needs to be separated out. I am unable to find a way in the Logical Editor to be able to select specific Sysex messages and extract those out of the track.

For example: I would like to extract all messages pertaining to MIDI channel 14: F0 43 10 4C 08 0D 00 01 F7. The “0D” part of the message defines channel 14.

Is there any way I can select all messages that include 0D and extract them without having to manually scroll through the track to select every message for that channel? A huge task and takes lots of time to do!

It appears that the Logical Editor does not have a facility to do this. The Syex message has no channel or data 1, 2 or 3 information, and the actual message itself is placed into the comments field of the list editor. So there is no option within the Logical Editor to specify this field and provide the necessary data.

I’m guessing it’s not possible and I will have to continue manually extracting all the data, but I thought someone might have a solution to this problem.


Are you using SysEx during the song, or at start (as settings) only?

If you are using at the start only, you can send all SysEx for all tracks together just once (in multi-timbral). All your settings will be done. If you will not send another SysEx, all settings should stays during next playback. So, if you start playback after all SysEx, you should get the right one sound, with using all SysEx information, and you don’t need to send all SysEx again. You can Solo this track, and record it as audio.

Is this solution for you?

Hi Martin,

I’m using a Tyros 3 and recording the tracks on the keyboard in order to apply all the Sysex data that is required for the articulations, drum kit setups, DSPs and everything else. So the Sysex data is being set at the start of the track and then being applied right the way throughout the track. It ends up with a vast amount of Sysex information being sent out throughout the duration of the track.

When that gets imported into Cubase, all the data resides on one track - for all the channels. So separating it out is a nightmare because there is so much of it. At the end of the day I can do it - it just takes a lot of time to extract data for each channel and paste it back in to the relevant channel.

Just thought there might be a more efficient way of getting specific channel data out of the track.


The problem is that there is NO standard way to send channel information in SysEx data. SysEx is just any data, which begins with F0 end ands with F7. If there’s channel information in SysEx data, it’s in device-specific format. And there’s simply no way Steinberg would include interpretion of more than 10 000 different SysEx formats into Cubase.

The best thing we could have for SysEx processing in logical editor could be:
“Byte XX is equal/not equal/less than/greater than YY”

Hi Jarno,

I understand the concept of Sysex entirely - I’ve been using it for years.

What would be handy is if there was some implementation in the Logical Editor to specify in the ‘comments’ field the string that is required to look for the data. For example, if I could specify the ‘Type’ as Sysex and then use a wildcard in the comments field that might read something like ‘F0 43 10 4C 08 0D*’ it would be very handy to process large amounts of Sysex.

In that way Steinberg would not be required to include thousands of different Sysex messages. Of course, that’s not remotely possible in terms of what Cubase is designed to do!

Yes. Using search strings with wildcards for choosing SysEx messages would be a great solution. Potential Feature Request!

PS. Sorry for teaching you something you already knew. It wasn’t clear in your original post if you completely understood the way SysEx work or not.

Not a problem - I understand entirely where you’re coming from. And I actually do like your suggestion of evaluating byte values - could still be potentially a solution. I’ll give it a crack!

As far as I remember from way back you could record the notes only by turning the sysex filter on in Preferences and then, on an additional track, you can (after turning the filter off) record the sysex only to another track using the same midi channel.
You can also use the filters to omit the notes so that all you get is the data. (manual p408 here)
Ctrl + F in the manual and enter “midi filter” does that get you anywhere you haven’t been regarding Cubase?

I know you’re talking importing midi here but I’m hoping that a roundabout way you could do this is and trick the system to import the midi and turn the filters on or off depending, then re-record the midi to another track and end up with the data you want where you want.
Having not tried this I’m not certain that plain copying with the filters applied would work as this is all off the top of my head at the minute. But it might. :mrgreen:

Yah. It’s not an easy process to find a way to do this. Unfortunately I can’t implement Jarno’s idea of evaluating byte data - the Logical Editor again does not make room for that.

The MIDI file is being recorded and saved from the keyboard as one finished song file to USB. That is then being imported into Cubase. The notes and data aren’t actually being played from Cubase. The reason for this is that the Sysex is applied directly from the keyboard as the song is played and recorded. Otherwise I would have to apply each message manually throughout the song.

Perhaps I’ll play around more with the import filtering options, but it would seem that Cubase will just automatically separate out any data other than channel specific notes and controllers on to individual tracks - which is understandable. The problem then is to try and collate channel specific data out of those tracks back to the relevant channel/track.

I still think I might put in a feature request for a wildcard/string search in the comments field. Particularly for Sysex it would make the management of the data a whole lot easier to work with.

Thanks for your suggestions.

Try the Sound on Sound forum with this one. The crowd’s bigger and they know more.

Were you able to fix your issue. I am running to the same problem. If you share with me your solution, I would greatly appreciated. I am on Yamaha PSR-A3000.