New features in MIDI Doctor

MIDI Doctor (Fig. 1) is a versatile tool to fix or to customize MIDI files. With it, you can adjust the volume and instrumentation of MIDI channels, transpose the key, modify the tempo, remove channels and perform several other operations. Recently, we’ve added powerful new capabilities. One improvement is a display of the exact temporal position in the file during playback (lower arrow in Fig. 1). This is a useful feature when excerpting sections (discussed below). We’ve also added the feature to MIDI Microscope, MiniMIDI player and MIDI File Organizer.

MIDI Doctor, main window

Figure 1. MIDI Doctor, main window.

A new Global settings button brings up the dialog shown in Fig. 2. There are three operations: 1) adjust the dynamic range, 2) adjust the play duration and 3) make an excerpt. The operations are global in the sense that they change the entire file.

MIDI Doctor, global settings dialog

Figure 2. MIDI Doctor, global settings dialog.

Dynamic range

There are many differences between western art music (i.e., classical) and popular music. One of them is that classical music gets soft and loud while popular music proceeds at a fairly uniform volume level. I was sharply reminded of this when I hoped to relax in the evening by listening to a MIDI file of Rachmaninoff’s Rhapsody on a Theme by Paganini. It was a great file except that the arranger had gone overboard with the dynamics. It ranged from inaudible to painful, and I was constantly clicking the volume control on my headphones.

In response, I added a method to compress or to expand the dynamic range of MIDI files. When the Global settings dialog opens, MIDI Doctor computes the minimum, maximum and average velocity values of all NoteOn messages with non-zero velocity. You can set new values in the boxes. The choices allow you to change the average volume or to compress/expand the low and high volume ranges individually. Click the Apply button to change all velocity values in the file. Be sure to save the modified file with a different name. There are many possible applications of this tool, including converting classical music to easy listening. Here are examples of effect that you can download: Original file with high dynamic range. Modified file with compressed dynamic range.

Play duration

One of the advantages of working with MIDI is that you can change the tempo of a piece without affecting the pitch. With this tool, you can set an exact duration for the file playback. One application — suppose you’re creating a video and need background music that ends exactly at the last fade. When the dialog opens, MIDI Doctor shows the current file duration in minutes and seconds. Simply fill in the desired values, click the Apply button and save the modified file.

Make excerpt

Use this tool is you want to make a demo or to pull out a favorite section. The end result is a modified file that only plays the specified interval. When the dialog opens, the Start and End values are set to the beginning and end of the file. Narrow the range to make an excerpt by changing the times. You can use the time display in the main window to determine values.

You may notice that when you save the excerpted file, it has the same length as the original file. This is because it’s tricky to cut out a piece of a MIDI file. The state of the synthesizer at any time depends on the sequence of all preceding MIDI messages. If you simply cut out a set of messages, you may wind up with a hanging note that plays to infinity. The solution I used in MIDI Doctor was to include all messages in the file, but to adjust those before the excerpt so they play at t = 0 with the velocity of NoteOn messages set to zero. The message time within the excerpt is adjusted to (t – TStart). Messages after the excerpt are all sent at (TEnd – TStart) and NoteOn message have zero velocity.


Comments are closed.