Posted by Frank L on November 23, 2000 at 21:15:18:
In Reply to: QSR and sequence playback posted by Mark on November 10, 2000 at 12:45:05:
Mark –
This has turned into a long response, but I think it solves your problem (and it gave me something to do to kill some free time).
I’ve played around with writing midi files created in Cakewalk to a PCMCIA card to play on my QSR, and I think I understand why you’re encountering your problem and how to get around it. I use Cakewalk ProAudio 9, but I suspect my solution will work fine with version 8 as well.
It seems to me (and let me say I’m surmising some of this based on what I see, not what I know for sure) that when you save a Cakewalk program as a midi file (either Type 0 or 1), it searches for the first patch change message in each track event list and, no matter where it is, early or late in the file, it places that first one at the very beginning of the file. Also, when Cakewalk opens a midi file, it places the first patch change message in the track view as an “initial” patch and doesn’t show it in the event list. (It also does this for the first volume and pan messages on each track.) I think this is a convention designed mainly for creating files meant to be played with GM where the “mix” is set to General Midi when you turn GM mode on , which is usually done with an autoload sysex message in standard GM midi files that precedes even these initial patch change messages. So, if you’re doing GM stuff this works out fine, but since we’re trying to use the other non-GM mix features of the QSR it’s a bit of a nuisance.
OK, so here is how I worked around it, making use of some of the sysex messages that I included in my earlier response to your posting. If you’re familiar with Alesis sysex this will be fairly easy to follow, if not thenit’s probably a good way to start learning about it. I’ve derived most of this from the document you can download from the Alesis website called QS Series Midi Sysex Specs dated 2/97 – it isn’t the easiest thing to interpret and there are a couple of errors in it.
What follows assumes that, at the beginning of your sequence, you want to turn GM off and get the QSR to the Multitimbral patch in Mix mode (User Bank, Patch 00) and assign specific Program Patches to each channel since that’s one of the main advantages of the QSR over GM. If you’ve put something else in that spot of the User Mix bank, you’ll have to change it back to Multitimbral to make the rest of this work as written. (At the end I’ll describe how you would call up any of the other couple hundred Mix patches available in the Preset and User banks of Mix mode; and even how to change these in the middle of a sequence.)
So, once you’ve gotten your sequence all worked out and playing beautifully from Cakewalk (again using Mulitimbral for now), and it’s time to save it as a midi file to burn on the card, here’s what you do. First, make sure you leave several seconds of space at the beginning of the file before the music actually begins. Also make sure you have all the initial bank-patch-volume-pan settings for each channel in the Track view so that Cakewalk already has them there and doesn’t pull in a second set you’ll be entering later in the Event List. Then go to the Sysex view and create the following sysex banks. (You can test each of these by sending them once you create them, just make sure you have the port set correctly to reach the QSR.)
Bank 0: F0 00 00 0E 0E 10 00 00 02 00 F7 (This turns GM off)
Bank 1: F0 00 00 0E 0E 0D 01 F7 (This puts the QSR in mix mode, calling up whatever the last mix was)
Bank 2: F0 00 00 0E 0E 10 00 05 00 11 F7 (This makes the QSR change mixes when it receives a bank/patch message on Ch 16; all other channels change the program on that specific channel.)
Bank 3: F0 BF 00 00 CF 00 F7 (This sends a bank/change message on Ch 16 to call up User Bank Patch 00 which is where the Multitimbral Mix is.)
When you enter these sysex banks for the first time in Cakewalk, be sure to save them so that from then on you can just recall them in new sequences rather than having to re-enter the sysex codes each time.
Now go to the Cakewalk event list view on Track 1; you can use any track but I try to use Track 1 consistently for entering these sysex banks so I know where they all are. Now just enter the 4 sysex banks a little after the very beginning of the file, and adjust the times so that Bank 0 goes at , say measure 1:01:010; Bank 1 goes at 1:01:020, etc etc.
Now, at this point the Multitimbral Mix has loaded with the default patches that it comes with on each channel. And these would undoubtedly be the wrong patches for your sequence. So, you now have to re-enter those same inital bank – patch – volume – pan settings you have in the track view into the event list, being sure that they come after the last Sysex bank, and of course before your music begins.
Here’s one thing to be careful of that I found to be a terrible Cakewalk quirk. When you enter these events in the Event List, make sure that you have first gone back to track view and highlighted the specific track you are working on each time. For example, if Track 1 ports to Channel 1, highlight the name or channel number cell in Track 1 in the track view list that has the midi out channel you want that particular program on before entering it into the event list. Opening the event list just for that Track or changing the Channel in the event list to the correct one won’t work, it defaults back to whatever the track number at the beginning of the current . Really dumb feature.
[Note: I actually found it was easier and more reliable to re-establish these patch settings using another sysex bank message, but if you’re not familiar with all the codes that would be a lot to describe here.]
Now, if all of this has been done right, when you save your file as a midi file (I usually use Type 1 files but I don’t think it matters), and burn it to your card to play in the QSR it should work fine. Also, when you re-open that midi file in Cakewalk, the Sysex banks and new patches you entered should all be there, as well as the initial ones in the track view. Depending on how your system is set up, you may have to re-set the port for your tracks and for the sysex banks to make the file work right from Cakewalk. Remember, it doesn’t know that this midi file used to be a Cakewalk file so it applies defaul port settings.
If you make any changes to the patches, volume or pan in the initial settings in track view, you’ll also have to make them in the additional event you placed in the event list for them.
Now, it also sounded in your posting like you wanted to be able to change Mixes themselves as part of your sequence (that is, other than Multitimbral), and with the setup I gave you above you can do that simply by sending a Bank – Patch message on Channel 16. Remember, the sysex message in Bank 2 above sets up Ch 16 to change the entire mix rather than the program on Ch 16. Remember too when you do this, the Mix that comes up has whatever programs it comes with on its various channels. Also, you won’t be able to change the program on Ch 16 (I can give you another bank to let you do this if you need that channel too, however.) You can enter these Ch 16 mix patch changes right after the sysex banks or at any point in the sequence. I found that changing them mid sequence causes a little hiccup, so do it during some silence.
If you’re interested in more on this sysex bank approach, let me know because I left a few things off here that I found help to make things run more smoothly. For example, I found it best to also send a couple additional sysex banks at the outset that clearly re-set all the Global Edit parameters where they should be. Sometimes quirky things happen such as the Master Pitch or Tune will get set wrong, which sucks if you’re about to play along with your sequence and it’s strangely out of tune with your other instruments. I can also email you the various sysex files I’ve setup, and even an Excel Spreadsheet I put together to convert the instructions in that Alesis document I mentioned above to useable sysex code.
Good luck. By the way, it’s always possible I made a mistake in writing some of sysex code out so if it doesn’t work right let me know and I’ll fix it.
f3
: I'm using a QSR with Cakewalk Pro 8.0. My overall goal here is to create/edit midi files with cakewalk, burn these to flash RAM, and use the QSR for playback and sound source. I'm having a problem trying to figure out how to set the PgmSelect mode, (page 10 in Global Edit), with a midi command. The manual is very brief on this, but my understanding is that this parameter needs to be set to a specific midi channel in order to respond to Mix pgm changes. I'm trying to make sure at the beginning of each sequence, the QSR gets set to the proper Mix pgm. Another problem I'm having, and this is probably more Cakewalk specific, is making sure all the proper pgm selections for each midi channel/sequence track, are made at the beginning of each sequence. In Cakewalk I can put these commands into each track's event list in the proper order I want each command to be sent, and everything works fine, until I save the file, (as a midi file). Upon reopening the same file in Cakewalk, these events have disappeared from each track's event list and are displayed in Cakewalk's track display. This is still fine for playback from Cakewalk, but if I write this midi file to the QSR's flash RAM card using Soundbridge, then play it from the card, the QSR does not get any of these pgm change events, or the sysEx event which turns off GenMIDI mode. It's as if these events, which happen very early in the tracks, are no longer part of the midi file. Any advice will be greatly welcomed, thanks for your time, Mark