Jump to content

Cakewalk seems not to recognize sysex message [SOLVED]


Victor Peters

Recommended Posts

Hi,

I've searched this forum on the topic but couldn't find an answer. Hopefully here someone has an explanation (and maybe solution) to the following behaviour of Cakewalk.

I have some commercially produced MIDI sequences for the Roland Sound Canvas series of synthesizer modules (SC-88 and up) that I've purchased several years ago.

After years of doing nothing with synths and sequencing (I sold all my gear, kept only an acoustic guitar) I recently purchased a Roland SC-880 Sound Canvas module and started doodling with it.

Some of the commercially produced sequences use System Exclusive messages to enable the Sound Canvas module to have a second rhythm track (instead of only track/channel 10). The SysEx message (F0 41 10 42 12 40 1A 15 02 0F F7) effectively switches part/channel 11 from a 'normal' instrument part to a rhythm part, thus adding a second rhythm track to the 16 track/part sequence.

Playing back the sequence in another sequencer/DAW that I own (Reaper) all parts sound as they should. Part 11 is a rhythm part and for that part a sound effects rhythm kit is selected.

When I play back the same sequence in Cakewalk, the sequencer/DAW does not seem to recognize the System Exclusive message and does not change part/channel 11 to become a rhythm part and makes the sequence/song sound wrong.

I've attached the MIDI file to this post, but have stripped all the non-rhythm tracks/parts from it (I used Reaper for that). Be aware that it is copyrighted material and is only provided as a means to demonstrate the issue I'm having with playing back the MIDI sequence.

Can someone help me get Cakewalk to properly handle System Exclusive messages such as the one in the provided sequence?

Thanks in advance.

midi_export.mid

Link to comment
Share on other sites

3 hours ago, Victor Peters said:

[1]  The SysEx message (F0 41 10 42 12 40 1A 15 02 0F F7) effectively switches part/channel 11 from a 'normal' instrument part to a rhythm part, thus adding a second rhythm track to the 16 track/part sequence.

[2] When I play back the same sequence in Cakewalk, the sequencer/DAW does not seem to recognize the System Exclusive message and does not change part/channel 11 to become a rhythm part and makes the sequence/song sound wrong.

midi_export.mid 48.98 kB · 0 downloads

Found a quicker quick fix that works for me: Delete the second reset.  For me that changed dr2 on ch 11 back to normal.

image.png.f821c616d09025781c374c585d986915.png

 

 

{1] I used to do this manually on my Roland M-GS64.  (from my sysex file: F0 41 10 42 12 40 1A 15 02 0F F7.)  It didn't work at first [Bank 1], then I set sysex on my M-GS64 and it seemed to do the trick.  I sent the command directly from Bank 1].

I set A11 to normal, then sent sysex Bank 1.  That switched A11 to dr2 mode.

I will try now with autosend. That did not do it!  I suspect a delay is needed between the banks to allow time for the Roland to switch.  

I cheated with the following quick fix:

 

 

 

[2] This is backwards: Cakewalk sends the sysex command; the Roland receives it (or should receive it).

 

image.png

Edited by User 905133
To suggest a quicker quick fix that might work
Link to comment
Share on other sites

43 minutes ago, User 905133 said:

{1] I used to do this manually on my Roland M-GS64. I could get it out and test the sysex from Cakewalk to see if it switches.  

[2] This is backwards: Cakewalk sends the sysex command; the Roland receives it (or should receive it).

I think that I'm missing your point.

Indeed, I could perform the switch manually, but then I would. also need to delete the GS reset SysEx message at the  very start of the sequence.

My old Voyetra MIDI Orchestrator Plus and Voyetra Digital Orchestrator Pro were able to play back these sequences properly on my SC-88 back in the day. I would expect that Cakewalk, which has a long standing reputation for sequencing on PC, would be able to play the songs properly too.

The SysEx messages are on track 1, 3 and/or 3 of the attached MIDI file.

 

Edited by Victor Peters
Link to comment
Share on other sites

3 minutes ago, Victor Peters said:

I think that I'm missing your point.

Indeed, I could perform the switch manually, but then I would. also need to delete the GS reset SysEx message at the  very start of the sequence.

My old Voyetra MIDI Orchestrator Plus and Voyetra Digital Orchestrator Pro were able to play back these sequences properly on my SC-88 back in the day. I would expect that Cakewalk, which has a long standing reputation for sequencing on PC, would be able to play the songs properly too.

The SysEx messages are on track 1, 3 and/or 3 of the attached MIDI file.

 

Apologies--I edited my post and was about to hit submit when you replied.

Back in the day, I fooled with Cakewalk's send sysex rate/delay settings, but I don't remember how to do that and am not sure its advisable any more.

The quick fix I used (assuming the sysex commands arrive too fast for the Roland) was to put the normal -> dr2 mode switch in track 2, a few ticks from the start.

As for missing the point, your comment says ". . . sequencer/DAW does not seem to recognize the System Exclusive message." I may have worded it badly. It sounded like you were saying Cakewalk didn't respond to the sysex. Sorry for the confusion. 

I only looked at that sysex command; do the others work?

image.png.073253381ac2acd4451803e6208e8de0.png

 

Link to comment
Share on other sites

2 hours ago, Victor Peters said:

My old Voyetra MIDI Orchestrator Plus and Voyetra Digital Orchestrator Pro were able to play back these sequences properly on my SC-88 back in the day. I would expect that Cakewalk, which has a long standing reputation for sequencing on PC, would be able to play the songs properly too.

After discovering the quicker quick fix, I revise my hypothesis that the problem may have been caused by fast back-to-back sysex commands. At least on my M-GS64, the problem was solved by not doing a second reset (which put channel 11 back into normal mode).

Dunno.  Maybe the quicker quick fix will work for you.

Steve

I think Sonar X1 on my 2004 vintage 32-bit XP SP3 PC might not have needed a work around (quick fix) or fiddling with sysex send rate/delay. Cakewalk Professional for Windows probably didn't send sysex too fast.  If the quick fix doesn't work for you, I'll let others more knowledgeable about the inner workings of the current Cakewalk address the sysex rate/delay settings.

Oh, as for my reference to having done it manually ages ago, I didn't mean to imply you should do it manually.  Sorry for that impression--my poor wording because I was anxious to get my M-GS64 to test your file.  

Instead of "{1] I used to do this manually on my Roland M-GS64. I could get it out and test the sysex from Cakewalk to see if it switches. " I should have said "{1] I used to do this manually on my Roland M-GS64. I will get it out and test the sysex from Cakewalk using your file to see if it switches automatically from the sequence." 

Edited by User 905133
To point out initial hypothesis was not validated; to clarify re: "manually" and to apologize for not being clear.
Link to comment
Share on other sites

I'm currently at work, so I cannot verify what I'm about to state with the information in the original or edited MIDI file. Since I edited the  MIDI file with Reaper to strip all channels but channel 10 and 11 from the sequence, I had to export the 'project' in Reaper to a MIDI file. The export dialog has a lot of options that I left at default. But because of this the attached file may have a different amount of tracks and those tracks may (or may not) contain the exact same data as the original did.

What I do know is, that the original sequence has some sort of master track that contained all SysEx messages. At 1.0.00 there's a GS Reset command to initialize the sound module and (I believe) at 1.1.17 there's the SysEx command to switch part/channel 11 from 'normal' to rhythm.

In a Cakewalk knowledge base article (https://www.cakewalk.com/Support/Knowledge-Base/2007013095/System-Exclusive) it is suggested that adding a statement to TTSSEQ.INI might solve the issue. I found the INI file and edited it accordingly. But restarting Cakewalk and playing the original MIDI file still causes the same problem.

Link to comment
Share on other sites

Yup--the TTS.INI parameters were the ones I had in mind. The Reference Guide also has info about some of those parameters (p. 1143 of the 25.09 version). It makes sense that the five auto send sysex banks I saw (in export.mid) might not be the same as in the original version. However, if the original does have a second reset somewhere after the part/channel 11 switch from normal to rhythm, the TTS.INI changes won't help.

On the M-GS64, I can send the normal -> rhythm sysex  manually from a bank and see the change without having to play the file. If you can see that parameter on your Roland and it switches from the single sysex, I'd look for a second reset--either auto sent or somewhere else.

Also, if I stop the transport a few measures in and then send the part/channel 11 normal -> rhythm sysex,  channel 11 plays percussion instruments for the rest of the file.

I hope one of the quick fixes help.  I left the M-GS64 out last night and could do some additional testing if you'd like.  BTW, from my ancient *.syx files, it looks like I occassionally switched part/channel 12 to drums, too! This brings back fond memories--I actually got started on Roland sysex/parameter changes helping a BBS friend sort out issues with an MT-32 and the Commodore 64!

 

Link to comment
Share on other sites

I've used SYSEX MIDI messages for the last 20 years with Sonar and Cakewalk products (up to CbB 2019.9 Build 70) to control an external XG device.  In all that time I have never had an issue.

First this was with an internal PCI card (SW1000XG) that responds to SYSEX. Now it's via a USB to MIDI converter (Roland Um-One Mark II)  to an SW1000XG in a second PC.  SYSEX data has always been sent and recognised by the intended equipment. 

Note: With CbB, I found that I needed the MIDI driver mode to be set to MME rather than UWP. UWP always gave me issues of missed data - especially sysex.

Link to comment
Share on other sites

4 hours ago, Promidi said:

Note: With CbB, I found that I needed the MIDI driver mode to be set to MME rather than UWP. UWP always gave me issues of missed data - especially sysex.

Interesting point!  When I saw people mention the MIDI driver mode in the forum, I looked at my setting. It was MME and I just left it there, mainly because I saw no reason to change it. Good to know about possible issues running under UWP.

Link to comment
Share on other sites

I'm using Cakewalk by Bandlab (version 2019.09 Build 70, 64-bit). Since I purchased my Windows 10 laptop (in September 2017) I have NEVER used any previous version of Cakewalk or Sonar before installing Cakewalk by Bandlab. So Cakewalk by Bandlab has been the first and only version of Cakewalk / Sonar that I've installed and used on my PC. The MIDI driver mode is MME by default and changing it to UWP doesn't solve the problem.

I'm a Cakewalk novice and noticed that I'm unable to see any System Exclusive event in the Event List view. Not even the GS Reset message at the beginning of the song. Despite having made sure that all MIDI data are displayed in the Event List view.

I found an option in the Preferences dialog [under File > Ask Before Sending System Exclusive (When Opening Project)] and activated it.
Now when I open the original MIDI file, I'm asked if I want to send the SysEx message in the MIDI file to my MIDI gear and upon confirmation the GS Reset is sent to and executed on my SC-880. I can verify this by looking at the flashing of the display and the fact that after the event has been fired all channels are set to instrument 1 in bank 1 ("Piano 1" for all normal parts, drum patch "STANDARD 1" for part 10).

Why can't I see the System Exclusive events in the MIDI file in Cakewalk by Bandlab? Should I activate an option in the Preferences dialog that I haven't discovered yet?
I can see the SysEx events in Reaper and I can see them in a free MIDI sequencer named Sekaiju (version 5.7).
When I play the MIDI file in Reaper all SysEx data are sent to my SC-880 and part 11 is switched to become a thrythm part, thus sounding as it was meant to be by the programmer of these sequences.
When playing the MIDI file in Sekaiju, the GS Reset message is sent and the module is reset to GS, but the SysEx message to switch part 11 to rhythm is not sent and/or received by the sound module.

This time I've attached the original, unedited commercial MIDI file. I also attached another commercial MIDI file that utilizes the same mechanisme for switching a normal part (part 11) to become a rhythm part and has the same problem in Cakewalk by Bandlab.
When playing both files in Reaper, the module does the GS Reset and switches part 11 to rhythm mode.
Sekaiju on the other hand plays the Flintstone tune properly (switching part 11 to rhythm), but doesn't do so while playing the Mission Impossible tune. Since I'd prefer to use Cakewalk by Bandlab, I would likt to find out why that is and would like to get this issue resolved.

Edit:
I stated that Sekaiju doesn't play back the Mission Impossible tune properly. The reason for this is that the uploaded file is corrupt.
After copying the original file with its original 'cryptic' name from my external drive to my hard drive and renaming it, soemhow in this process the file got corrupted.
When I play back the original file from the external drive, Sekaiju  plays back the song properly.
To make sure no SysEx, CC or PC or oher data remained behind in the sound module prior to loading the song into the sequener, I performed a factory reset before loading each song. It turns out I was wrong.
I've attached the original, unaltered file as-is (with its original file name, 096103_G8.MID). I hope it doesn't get corrupted again.

 

Copyright notice:
Both attached files are copyrighted. Please use them only to examine this issue. Do not distribute them in any way.

Thanks in advance for any advice you could give me.

Theme from Mission Impossible.MID Theme from The Flintstones.MID

096103_G8.MID

Edited by Victor Peters
Link to comment
Share on other sites

I downloaded "Theme from Mission Impossible" and opened it up in CbB.  The SYSEX data is definitely there.  It's in track 1 right at the beginning.

What I do when looking for SYSEX data in a MIDI file is I select all tracks.  The open event list.  If present, the SYSEX is at the start, but sometimes it can appear in the middle of the track.  I do this at times with the MIDIs I create.

You can use the event manager (Under the view menu on the Event List window) to restrict the view to just SYSEX data.

As sysex does not contain channel information, it can be in any track.

Link to comment
Share on other sites

34 minutes ago, Victor Peters said:

I'm unable to see any System Exclusive event in the Event List view. Not even the GS Reset message at the beginning of the song.

Theme from Mission Impossible.MID 69.04 kB · 1 download Theme from The Flintstones.MID 42.07 kB · 0 downloads

32 minutes ago, Victor Peters said:

I found an option in the Preferences dialog [under File > Ask Before Sending System Exclusive (When Opening Project)] and activated it.
Now when I open the original MIDI file, I'm asked if I want to send the SysEx message in the MIDI file to my MIDI gear and upon confirmation the GS Reset is sent to and executed on my SC-880. I can verify this by looking at the flashing of the display and the fact that after the event has been fired all channels are set to instrument 1 in bank 1 ("Piano 1" for all normal parts, drum patch "STANDARD 1" for part 10).

Why can't I see the System Exclusive events in the MIDI file in Cakewalk by Bandlab? Should I activate an option in the Preferences dialog that I haven't discovered yet?

(1) When you load/boot a file that is supposed to set part/channel 11 to drums, does Cakewalk tell you that there are sysex banks to send and ask if you want to send them?

(2) If yes, do you tell Cakewalk to send them?

(3) If no, that is a problem that should be resolved.

(4) Did you look at the sysex banks? [Views > Sysx]

(5) If yes, do the auto-send sysex banks send a reset after the part/channel 11 change?

(6) If yes, try deleting the additional reset.

(7) If no, the problem you are having might be found elsewhere.

(8) Did you try my first quick fix?

(9) If so, did it solve the problem?

(10) If no, I'm going to put my M-GS64 away and let others try to help.  :P

(Just joking on #10; you have my curiosity; I will try the new files you posted, just because I am renewing my appreciation for Sound Canvas gear.)

image.png.18c31aa1375382aebd3c79c7d32175d5.png   image.png.5fe0264cd45e8012c5ea2a6a94c143b1.png  image.png.f21c646bda09f06cf88332dd612165df.png

Edited by User 905133
edited to reflect the OP's change in Preferences to allow the auto-send dialog.
Link to comment
Share on other sites

39 minutes ago, User 905133 said:

(10) If no, I'm going to put my M-GS64 away and let others try to help.  :P

(Just joking on #10; you have my curiosity; I will try the new files you posted, just because I am renewing my appreciation for Sound Canvas gear.)    

(1) The Flintstones file asks if I want to send auto-send sysex banks. I said "OK." Sysex banks were sent to my Sound Canvas box.  Part/Channel 11 is normal/not drums.

(2) I look at sysex banks in Cakewalk.  (Views > Sysx)

(3) I see the same problem. I delete the extra reset (bank 2) and save the file as Filntstones-changed.

(4) I close it; I open it; Cakewalk asks if I want to send the auto sysex banks; I OK it.

(5) Part/channel 11 switches to drums.

Hope these steps help.

 

 

image.png.4c7bd0b13bbe131dd9dd584742a3cd40.png   image.png.2cfedcef430781a85fea4cba0b62a6de.pngimage.png.09ee096ea5e7bdf0d1633f807e512e76.png

 

PS:  Footnote: Cakewalk can have sysex commands in a couple of different places, e.g. as sysex banks, as "inline" hex.  Another option like the quick fix: instead of inserting "inline" hex (the sysex bytes), you can send the relevant bank as a bank. Based on The Flintstones file, bank 0 is the reset and bank 1 is the sysex command to change part/channel 11 to drums.  Before I deleted it, bank 2 (another reset) changed part/channel 11 back to normal.  (At least on my Sound Canvas module.)

image.png.55079dfcabc98a4d46317da1693f07af.png

image.png.862823e51e27e76aa06a004255c2f0ff.png

image.png

Edited by User 905133
to add a footnote regarding a second quick fix method
Link to comment
Share on other sites

1 hour ago, Victor Peters said:

This time I've attached the original, unedited commercial MIDI file. I also attached another commercial MIDI file that utilizes the same mechanisme for switching a normal part (part 11) to become a rhythm part and has the same problem in Cakewalk by Bandlab.

I can't test this in another DAW; so, this is a guess.  Perhaps the original file has the sysex commands at the very first tick in different tracks. Perhaps when Cakewalk parses the file, it sees initial sysex data at the first tick and puts them into the sysex banks based on the order they are found starting with track 1. Perhaps the first sysex command Cakewalk finds becomes bank 0, next becomes bank 1, etc.

Not sure, but it might explain a few things.

So, if the reset is in Track 1 and also in Track 3, with the channel switch in track 2, and I am right, that could explain the problem you found.  

Edited by User 905133
clarifications
Link to comment
Share on other sites

Well, I finally figured out how to make Samplitude do something other than give me error messages.  So, it plays the Flintstones.mid file on my Roland Expansion Module. Unfortunately, I cannot figure out how to view midi data.  I suppose to others used to working with Samplitude, it as second nature to them. To me, there is no easy path to  "View Event List." It does things with something called "objects."

Egads!!!!! The tune is in there; it plays. So then it tells me I have to import the midi file into a VIP project!!!!!!

I now understand the frustrations newcomers to Cakewalk feel!  :P

This is unbelievably frustrating. I thought it would be easy to look at midi data in Samplitude, but one thing after another I try tells me I have to do something else and those things never show me the midi data. 

Edited by User 905133
Link to comment
Share on other sites

2 hours ago, User 905133 said:

I can't test this in another DAW; so, this is a guess.  Perhaps the original file has the sysex commands at the very first tick in different tracks. Perhaps when Cakewalk parses the file, it sees initial sysex data at the first tick and puts them into the sysex banks based on the order they are found starting with track 1. Perhaps the first sysex command Cakewalk finds becomes bank 0, next becomes bank 1, etc.

Not sure, but it might explain a few things.

So, if the reset is in Track 1 and also in Track 3, with the channel switch in track 2, and I am right, that could explain the problem you found.  

Tested hypothesis within Cakewalk. Seems to be confirmed with regard to sysex commands placed at tick 1 in *.mid files.

Interesting: At tick 2 [01:01:001] the resets in tracks 1 and 3 go into banks 1 and 3 with Auto send = yes.  However, the part/channel 11 switch to drums from track 2, stays in track 2, but is also inserted as bank 2 with Auto send = no.

Because banks 1 and 3 (resets) happen before play starts, on my Roland, part/channel 11 did indeed switch to drums after I hit play (from the beginning).  That makes sense, it was 1 tick in!

For your solution, I suggest using my quicker quick fix and seeing if that works. In the sysex banks, delete the second reset and save with a name variant so you can tell it apart from the original.  Maybe it will work on your Roland, maybe not.

The other quick fixes might be a second and third option:  insert part/channel switch to drums sysex command a few ticks from the beginning either (a) as inline hex or (b) as a call to send that bank.

I saved screen shots of the changes I did and the results when Cakewalk opened the altered files. Unless someone in the know confirms that this is a known behavior (and perhaps there are reasons for it), I will share my screenshots tomorrow.

If my assumptions have been correct, I don't understand why the file maker would put a reset in two different tracks at the same time designation unless they are both there in case the user has two different devices and both need to be reset.

Anyhow, I hope some or all of my fixes some the issue on your Roland. 

Edited by User 905133
Link to comment
Share on other sites

Some USB MIDI interfaces have issues with long sysex messages, especially the cheaper USB "cables" you can buy on eBay.

The issue lies in the (quite common) USB MIDI chip inside, which has an extremely small internal buffer size. The interface will quite happily receive MIDI data at USB speeds, but then has to send them out at 31.25Khz for MIDI, which means holding the data inside its tiny buffer while it sends the data out at the slower speed. This is why sending sysex data is smaller packets and at staggered times works.

The only two interfaces I've found work without having to do these sorts of workarounds are the M-Audio MidiSport range & the MidiTech MidiFace range.

I've also found that MME is far more reliable than UWP for sysex.

  • Like 1
Link to comment
Share on other sites

1 hour ago, msmcleod said:

Some USB MIDI interfaces have issues with long sysex messages, especially the cheaper USB "cables" you can buy on eBay.

Excellent point!!  I used to have a link to a very detailed, technical analysis of those cheap 1x1 usb interfaces.  If I have it book marked, I haven't been able to find it for a few years.  I seem to recall that two-way I/O was just one of the problems. 

A few years ago, I picked up an iconnectivity mio 1x1 usb interface primarily to test sysex between the Casio CZ line and midi-ox.  Bulk data dumps (patches and sequences) worked to and from the mio.  

I have not had problems (including bulk sysex dumps) with a number of E-Mu PCI cards and the E-Mu 2x2 usb interface. On the other hand, e-magic's mt4 (usb 2 in 4 out ) couldn't even handle the one-way stream of aftertouch from a Casio  DH-100 without issues.  

 

Link to comment
Share on other sites

  • Victor Peters changed the title to Cakewalk seems not to recognize sysex message [SOLVED]

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...