Play a MIDI file

If you want to play a MIDI file from VB you have to use MCI functions. The main MCI function is mciSendString, that sends command strings to the system and execute them:

Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal _    lpstrCommand As String, ByVal lpstrReturnString As String, _    ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

The first argument is the command string, lpstrReturnString receives return information (if needed), uReturnLength indicates the size, in characters, of lpstrReturnString, and hwndCallback is used for system notification. Remember that every command string described in this tip must be sent to the system with:

CommandString = "Your MCI command here"RetVal = mciSendString(CommandString, vbNullString, 0, 0)

First you must open the MIDI device with

CommandString = "Open " + FileName + " type sequencer alias MidiFile"

Notice that FileName must be in the short format 8.3 characters; lpstrReturnString is null because you don’t need any return information. “MidiFile” is an arbitrary name that you’ll use in the next command strings as an alias of the filename. Finally you can play the MIDI file:

CommandString = "Play MidiFile wait"

The execution is synchronous, but you can play the file asynchronously and receive notifications with

CommandString = "Play MidiFile notify"RetVal = mciSendString(CommandString, vbNullString, 0, MyForm.hWnd)

where MyForm is the form you are using. The system will send to your form a MM_MCINOTIFY message when the playback is finished. To intercept this message you have to create a custom window procedure and use subclassing.

By default playback begins at the current position and stops at the end of the content, but you can play only a part of the file with this statement

CommandString = "Play MidiFile from X to Y"

where X and Y are two different positions. It’s often useful to specify X and Y in milliseconds, so before Play command you must set the time format with this command:

CommandString = "Set MidiFile time format milliseconds"

With asynchronous executions, you can pause / resume and stop playback with’ pause playbackCommandString = “Pause MidiFile”‘ resume a paused playbackCommandString = “Resume MidiFile”‘ stop playbackCommandString = “Stop MidiFile”When you have finished to use the MIDI device, remember to close it with

CommandString = "Close MidiFile"

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

The Latest

your company's audio

4 Areas of Your Company Where Your Audio Really Matters

Your company probably relies on audio more than you realize. Whether you’re creating a spoken text message to a colleague or giving a speech, you want your audio to shine. Otherwise, you could cause avoidable friction points and potentially hurt your brand reputation. For example, let’s say you create a

chrome os developer mode

How to Turn on Chrome OS Developer Mode

Google’s Chrome OS is a popular operating system that is widely used on Chromebooks and other devices. While it is designed to be simple and user-friendly, there are times when users may want to access additional features and functionality. One way to do this is by turning on Chrome OS

homes in the real estate industry

Exploring the Latest Tech Trends Impacting the Real Estate Industry

The real estate industry is changing thanks to the newest technological advancements. These new developments — from blockchain and AI to virtual reality and 3D printing — are poised to change how we buy and sell homes. Real estate brokers, buyers, sellers, wholesale real estate professionals, fix and flippers, and beyond may