MIDI files are similar to digital sheet music, where notes on individual tracks are played with a selected instrument from a central sound library. This allows the relatively small MIDI file of only a few kilobytes to play anything from simple piano music, to full symphonic arrangements.
When Apple introduced QuickTime X in Mountain Lion, it unfortunately removed support for MIDI file playback. This limitation prevents these files from playing in the QuickTime Player; however, this also broke the ability to play or preview these files in the Finder and in Web browsers that use the QuickTime plugin.
While you can download QuickTime Players 7 or other media players and use them to play MIDI files locally on your computer (or open a URL that points to such files), this is less convenient than previewing the files directly.
Even though there are no direct fixes that will enable MIDI playback in QuickTime X, and subsequent associated programs like Finder and Safari, there is a way to at least get MIDI playback going again in your Web browsers. To do this, you will need a copy of the QuickTime plugin from a Snow Leopard or Lion system, and then modify its implementation to only handle the MIDI file types. This will allow QuickTime X to handle all the standard media files and formats, while the older plugin is used only for MIDI files.
These instructions were first provided by user “andyBall_uk” at the Apple Discussion forums:
1. Copy the “QuickTime Plugin.plugin” file from the Macintosh HD > Library > Internet Plug-Ins folder on a Snow Leopard or Lion machine, and place it into the username > Library > Internet Plug-Ins folder of your current Mac running Mountain Lion or Mavericks.
If you do not have access to another Mac, but do have an installer for Lion or Snow Leopard, then you can extract the QuickTime plugin using a package manager like Pacifist.
2. Open the Terminal and run the following commands to change the represented name of the plugin for programs that load it (copy and paste both or all three lines of each as-is from here into the Terminal):
defaults write ~/Library/Internet\ Plug-Ins/QuickTime\ Plugin.plugin/C\ ontents/Info.plist CFBundleName 'QuickTime Plugin.plugin2' defaults write ~/Library/Internet\ Plug-Ins/QuickTime\ Plugin.plugin/C\ ontents/Info.plist CFBundleIdentifier 'com.apple.QuickTime Plugin.plugin2' defaults write ~/Library/Internet\ Plug-Ins/QuickTime\ Plugin.plugin/C\ ontents/Info.plist WebPluginMIMETypesFilename com.apple.quicktime.plug\ in2.preferences.plist
3. Go to the username > Library > Preferences folder (use the Finder’s Go menu and hold the Option key to reveal the Library).
4. Duplicate the file com.apple.quicktime.plugin.preferences.plist and rename the duplicate to “com.apple.quicktime.plugin2.preferences.plist”
5. Open this new file in TextEdit
6. Locate the contents of the “WebPluginMIMETypes” dictionary, which is the listing of file types this plugin will be responsible for handling, and replace them with the following (copy and paste):
<key>audio/mid</key> <dict> <key>WebPluginExtensions</key> <array> <string>mid</string> <string>midi</string> <string>smf</string> <string>kar</string> </array> <key>WebPluginTypeDescription</key> <string>MIDI</string> <key>WebPluginTypeEnabled</key> <true/> </dict> <key>audio/midi</key> <dict> <key>WebPluginExtensions</key> <array> <string>mid</string> <string>midi</string> <string>smf</string> <string>kar</string> </array> <key>WebPluginTypeDescription</key> <string>MIDI</string> <key>WebPluginTypeEnabled</key> <true/> </dict>
When done, the file should look something like the following (highlighted text is the replaced content):
Now launch Safari and load a MIDI file from a Web site, or from your Mac. You will have to instruct Safari to trust the plug-in, but it should now load and play properly.
Note that this modification should not affect the handling of movies and images by QuickTime X, and should only route the handling of files of type MID, MIDI, SMF, or KAR, to the older QuickTime plugin. In addition, since the modified plugin is placed in your user library, this modification will only be available to your user account, and not to others on the system. To do so for other accounts, you will need to re-do these instructions while in those accounts.
To undo this modification, simply delete the modified QuickTime Plugin from your user library, and remove the “com.apple.quicktime.plugin2.preferences.plist” file from your preferences folder.
I *think* there is an erer in your Terminal entry text. OTOH, I don’t have a Snow Leopard user Library to look at… All your Terminal input have the following:
defaults write ~/Library/Internet\ Plug-Ins/QuickTime\ Plugin.plugin/C\
ontents/Info.plist… and then slightly different code.
The first two instances of “\ ” are used to insert a space so “Internet Plug-ins” and “QuickTime Plugins” will work. I’m not sure what is between “C\” and “ontents/”. I’m thinking this is simply the name of a directory (Contents) that will contain the “Info.plist” file?
Backslashes are not only to escape spaces, but can do so for most other characters as well. The slash at the end of each line prior to the last one just escapes the carriage return, allowing the command (which is generally on a single line) to be issued in multiple lines. You can do this in the Terminal for any command. Just start typing it out and then type a backslash followed by Enter, and then continue typing the rest of the command.
For instance, the following is the same as “ls ~/Library” to list the contents of the user library:
Tophers-Laptop:~ tkessler$ l\
I only do this for commands that will extend beyond the bounds of the blog posting, where they may either be cut off or auto-wrapped to a new line. In this way, people can copy and paste the entire two or more lines of the command, and still get the same effect.
Contents/” would have been even more strange looking! Just one of the joys of displaying ‘code’ in different web apps (most forums have a “code” tag, WordPress probably not?). Since I didn’t actually paste the text into Terminal, the problem is on my end. (Again?!) Thanks for finding a way to get the code from WP into Terminal! :clap: