General MIDI Reset with Media Player

Some background… I have several thousand General MIDI songs and backing tracks that I’ve collected over many years. Many of these songs were written by various individuals, so there is no standardized approach to how they are setup. When using my DAW (Sonar) to play songs, I have a setup (Roland GS reset) within Sonar that automatically resets the Gen MIDI for each file to its default settings. That way, the settings changes (e.g. volume, velocity, etc.) from the last song don’t carry over to the next song I play.

When using Cantabile 3 and media player, I often load up a playlist of 20 MIDI songs, and use Media Player for playback. But in doing so, the only way that I know of to reset the Gen MIDI after each played song is to play a “Reset” file that I have which does the reset. It works, but a bit annoying to always have to run the file before each song as compared to using Sonar.

If anyone can suggest a better way to reset Gen MIDI without leaving C3, please do tell.

Otherwise, Brad… would it make sense in your future development queue to add a Gen MIDI reset for the 16 channels, which can be initiated before each playlist file by checking an option box, e.g. Do a MIDI reset before each Playlist song?.

Perhaps I am overly unique in my need, so although I would benefit from such a feature, maybe no one else would. Just seems like a nice safety feature for those setting up playlists of songs or backing tracks, especially when creating new playlists of songs that you haven’t customized or run in sequence (since you wouldn’t know what the last song played may have done with a MIDI setting. Yes, I know it’s good practice to do a Gen MIDI reset at the beginning of each song, but I would hardly look forward to making that change across 4-5K MIDI songs (which include multi versions of the same songs).

Hi @cfcboc

Seems like this would be a reasonable option to add. It would need to be optional and I’m thinking perhaps a simple option on a midi player that indicates to send the reset when playing from the beginning of a file.

Is there a spec somewhere for exactly what constitutes a General MIDI Reset? (I could search for it but I’m lazy/busy and want to make sure we’re on the same page anyway :).

Brad

I will send you a stand-alone file called Reset.MID that I use within Media Player to do the reset. I “play” the reset.mid file and then “play” a midi file. The reset.mid sets all MIDI channels to default values. This of major value when the last MIDI file played did a fade out at the ending. If no reset is given, then the new file will retain the last volume setting which would be a zero and result in no sound for those tracks.

I will also send you a Sysex string for reference if that might be of some use.

Thanks for considering adding this feature in a future release.

1 Like

Wouldn’t it be easier to simply insert the GM Reset Sysex in your midi file (at the start or end) via Sonar.

Just thought I’d add that there are apps out there that can actually batch insert GM reset messages into every midi file in a folder :wink: So it’s pretty easy and quick!

Pax… Yes, it would be easier, for my specific needs, to insert a GM reset into my MIDI files, but as you noted in your followup comment, I would need to do that with some type of batch insert tool, because I have over 6500 GenMIDI files if you count the several modified versions on many songs.

I should re-look at MIDI batch applications. I did that a few years back, but at the time the only one I found was a product from www.gnmidi.com that had lots of features, but as I read through their PDF user manual, my conclusion was that that the software would overlay any settings that I may have intentionally placed into the MIDI file (which unfortunately I would have placed into Bar 1 of the MIDI tracks). The GNMIDI batch routine appears to be able to change the settings to do a GM or GS reset, but would simply overlay any settings I had already modified to reflect my desired startup values at the beginning of each file. I have to look again if the tool can insert at the end of a file as an option.

A quick check reveals that there is an updated version of the GNMIDI product, so I will look into the docs and see if it offers a way to move Bar 1 to Bar 2 as the first step, then insert a reset into Bar 1 for a second pass.

If you are aware of other tool options, please forward, as a Google search I just did (“MIDI file batch update”) revealed a couple of Mac tools, and a DOS tool (which won’t work in my PC-based 64-bit system, so would require setting up a second operating sub-system, which could still make sense as this would be a one-time operation), but nothing else of note in the first few search pages other than the GNMIDI product.

Aside from my specific needs, however, I still think there may be other users of Cantabile that might want to use the Cantabile media player to play a random group of MIDI files, and having a Reset option built-in to the media player options would provide a handy way of handling MIDI files that don’t have an initialization routine embedded in the file.

Thanks for your comments. I will take another spin at batch MIDI updating options.

Did you send the file? I don’t think I received it.

Logged here.

Next build (3197) will have support for this:

When enabled Cantabile will automatically insert at the start of each track reset events for any channels referenced by that track:

  • CC 121 (reset all controllers) = 0
  • CC 123 (all notes off) = 0
  • CC 7 (volume) = 127
  • CC 0 (Bank Select MSB) = 0
  • CC 32 (Bank Select LSB) = 0

This is a media player setting and will apply to all MIDI files in that player’s play list.

1 Like

Since Build 3197 (experimental) is already available in the Download folder, I’m ready to give it a try!!

I suppose the best way to test is to setup a separate instance of Cantabile 3 Solo for the experimental releases? Is there any issue with a second activation of the license on the same computer?

Hi Cfcboc,

In most cases it easier to switch between stable/experimental by simply running the installer for which ever version you need. If you install them in separate folders they should both reference the same license and just work.

Brad

Brad you do know that CC 121 already zeroes MSB/LSB , and if you have it placed after your CC7 in the sequence it will zero that even though you have it (CC&) at 127?

I might suggest you add a centre pitch wheel as well… as IIRC, CC121 does not centre the wheel…but it’s been a while hahaha!

Dennis

Hey Dennis,

as far as the official MIDI specification goes, CC121 should NOT zero CC7, while pitch wheel WILL get centered (at least as long as the device you are addressing complies with official MIDI recommendations). Also, bank select should NOT be zeroed. See here:

Upon receipt of Reset All Controllers message (Controller #121) the following actions are taken for the specified MIDI channel:

  • Set Expression (#11) to 127
  • Set Modulation (#1) to 0
  • Set Pedals (#64, #65, #66, #67) to 0
  • Set Registered and Non-registered parameter number LSB and MSB (#98-#101) to null value (127)
  • Set pitch bender to center (64/0)
  • Reset channel pressure to 0
  • Reset polyphonic pressure for all notes to 0.
  • Do NOT reset Bank Select (#0/#32)
  • Do NOT reset Volume (#7)
  • Do NOT reset Pan (#10)
  • Do NOT reset Program Change
  • Do NOT reset Effect Controllers (#91-#95)
  • Do NOT reset Sound Controllers (#70-#79)
  • Do NOT reset other channel mode messages (#120-#127)
  • Do NOT reset registered or non-registered parameters.
  • Any other controllers that a device can respond to should be set to 0, or the behavior should be specified and/or documented. If the manufacturer does not want the Reset All Controllers message to affect a particular controller, that is also permissible, as long as the behavior is documented.

Cheers,

Torsten

2 Likes

As I said it was a long time since I was working with MIDI files haha! But it was nice of you to spend all that time researching it to produce that information, cheers!

So I think what it’s doing should cover it right?

The big question is how well any connected devices (and plugins) handle the reset request. I think I’ll just play this by ear and if there’s something missing consider changing it.

It does appear to be working fine, although I haven’t fully tested it over a large sample of random MIDI files yet.

1 Like

Not a lot of effort - MIDI specification is right in the middle of my link list :wink:

1 Like

haha fair enough…seriously though, back when I was actively programming MIDI files, I ws sure the 121 command centerd and zeroed a lot mroe than is written there. Is that from the GM 1 or GM 2 spec Torsten?

It’s from the “Recommended Practices” - addendum to the MIDI 1.0 spec, approved in 1998/99

See here: http://dev.midi.org/techspecs/rp15.php

Cheers,

Torsten

thanks Torsten. I’ll have look and re-acquaint :slight_smile: