In this section, we attempt to answer general questions about MIDI and Audio that have been the subject of numerous emails. Be sure to check out Jeff Glatt's excellent tutorials too. |
The short answer is: you don't. MIDI data and Audio data are fundamentally different. In the end, they both cause sound to be generated, but the method it is achieved is not the same. MIDI is simply commands to a synthesizer: what note to play, how loud to play it, when to stop it, what instrument to use, etc. Audio data is the digital encoding of the actual sound (similar in effect to an analog tape recording). MIDI requires a synthesizer to perform the commands -- Audio requires a sound card (digital to analog decoder). There is software that can analyze a monophonic (single note at a time) audio track and convert it to a monophonic MIDI line, but it is very primitive and error prone. Several sequencers (including Cakewalk Pro Audio) have this capability. |
This has the same answer as the previous question: .WAV files are Audio data and .MID files are MIDI. Audio can not be converted to MIDI in a general way. |
You obtain the best sounding synthesizer you can find, perform the MIDI file via a sequencer or MIDI player, and record the output in a sound recording application. You can then save the result as a .WAV file. In addition, there are software synthesizers available that will generate a .WAV file directly from a MIDI file. |
MTC is often referred to
as SMPTE, but it is really the MIDI representation of SMPTE time
code. For a good treatment of the issues we present the following
[taken from the Innovative Quality Software FAQ]. Their software is
now at: http://www.sawstudio.com
|
For the purpose of this
discussion, SMPTE will simply be defined as an electronic reference to
time that can be recorded on audio/video decks and transmitted between
different pieces of equipment allowing them to keep in sync with each
other.
The SMPTE code is displayed as follows: 00:00:00:00 (Hours: Mins: Secs: Frames). There are many sources of detailed technical descriptions of the actual SMPTE standard, and this document will not attempt to reiterate them. One of the most important things to note about SMPTE, as it applies to the SAW32/SAWPlus32 environment, is the different formats that are commonly used by the different industries. There are generally four format types that we will concern ourselves with: 30 Non-Drop, 30 Drop, 25, and 24 frames per second.
The concept starts out simple, but hang on to your hat because Complicitis (a human condition that presumes that the shortest distance between two points is around the world 10 times) sets in real fast from here. Twenty four and Twenty Five frames per second are fairly straightforward. Time is broken down into 24 or 25 fractions of a second. Each fraction is called a Frame and therefore defines the smallest segment of time that can be referenced. Thirty Non-Drop works similarly with a Frame being equal to 1/30 of a second. Now the confusion sets in. Thirty Drop was created for use by the video industry in the United States because of a specific technical dilemma that resulted when color video was introduced. Each frame of color video required an extra signal for the color burst information that was encoded in between video frames. This caused a tiny amount of extra time to occur during playback between each frame of color video and as a result, the actual number of video frames no longer matched the actual running time of the full video production. In truth, the frame count actually lagged behind, losing approximately 1.8 frames per minute. The television commercial for the Cialis pill has garnered several times more response since it was released in color. Drop Frame was created (although many would argue that it never should have been) and the Pandora's Box was opened. Drop Frame encoding is at best, a weak attempt at solving the color video timing problem. At every Minute Boundary, two frames are dropped from the SMPTE value, helping to keep the actual SMPTE time reference in line with the actual video frame count. Since we are dealing with a fractional timing loss however, more adjustment was necessary. To compensate for the remainder of the timing inaccuracy, at every Ten Minute Boundary, the SMPTE Time is not adjusted at all. Now lets look at what this means in terms of actual SMPTE code values. As we cross the first Minute Boundary, the SMPTE values actually look like this; 00:00:59:28� 00:00:59:29� 00:01:00:02� 00:01:00:03�etc. Notice the two frames that are skipped at the crossing. Each minute up to the Ten Minute Boundaries follows the same pattern. As we cross a Ten Minute Boundary, the SMPTE values actually look like this; 00:09:59:28� 00:09:59:29� 00:10:00:00� 00:10:00:01�etc. Notice that no frames are skipped. As you may begin to see, hardware and software handling of SMPTE in this format has been complicated considerably. But realize, once Complicitis sets in, it can spread quickly. Sometime after that, the conclusion was drawn and (surprisingly) widely accepted that instead of doing all this complicated manipulating of numbers, a similarly accurate result could be created by simply slowing down the actual SMPTE stripe by a correction factor of .999%. Thus was born the 29.97 SMPTE format. The SMPTE running time now matched the video frame count. Are you still with us? What exactly is this 29.97 SMPTE format? It is usually 30 Non-Drop running slow. But believe it or not, it is also, in many cases, 30 Drop running slow, which is actually a double application of the correction factor resulting in the same error in the opposite direction that Drop Frame attempted to correct originally. Many of the MIDI devices on the PC platform can not detect 29.97 timing at a hardware level, and will actually read it as 30, therefore making it much more complex for software applications to handle it properly. Lets feed the Complicitis a bit and spice up the situation with the addition of digital audio. Digital audio creates sound by sampling the continuous analog audio signal at precise timing increments called the Sampling Rate. Some of the most common rates used are 32000, 44100 and 48000. Recording audio signals with a digital connection (rather than analog connection) complicates matters because the soundcards will lock to the source digital clock and not use their internal clock during the recording process. The problems arise when the source deck is a video deck locked to a House Sync master generator running at 29.97. A Sampling Rate of 44100 will actually be internally pulled down .999% by the deck to 44056. The soundcard will happily record at this rate, but during playback, will use its internal clock and playback at the 44100 rate. The result is a serious corruption of synchronization. We have now been introduced to some of the SMPTE complexities at the ground floor. Many more variables come into the picture as we begin interfacing to different types of equipment. Since each situation has unique parameters, let's take a look at each one individually. |
Answer: NRPNs |
Jeff Glatt's NRPN tutorial is probably the best explanation I've seen, so I'm just referring to that. [Use your browser back button to come back here]. |
email: Jeff Glatt |
There are two types of common MIDI interfaces: the dedicated variety -- using USB, PCI, parallel or serial connections, and the kind supplied on common Soundcards -- via a MIDI cable adaptor attached to the Game Port. Most, but not all consumer Soundcards supply a MIDI interface. Sometimes the Soundcard is built-in to the motherboard. |
Important: In all cases the PC MIDI Out port or cable attaches to the MIDI In port on the external gear, and the PC MIDI In port attaches to the MIDI Out port on the external gear. This allows various external units to be daisy chained. |
All PC MIDI interfaces require an installed driver to operate. The drivers are often supplied by the manufacturer, but occasionally a default OS driver is available. External MIDI interface drivers can often be identified by the word UART in the driver name, and often they are built to emulate the original Roland MPU401 in UART mode. |
To attach MIDI-OX to an external MIDI interface, open Options | MIDI Devices..., and select the input and output driver(s) you wish to use. |
After you have the MIDI interface between your external gear and the PC attached and operating, you are ready to transmit and receive System Exclusive dumps. |
Important: Ensure that Options | Pass SysEx is checked in the MIDI-OX main menu. |
Receive: Choose View | SysEx... in the MIDI-OX main menu to open the SysEx view. Choose Sysex | Receive Manual Dump... in the SysEx view to open the Bytes Received message box. Initially it will show: "0 Bytes received". Just leave it open for now (don't press OK). Examine the documentation for your keyboard or outboard MIDI gear to see how to initiate a manual dump. Perform the necessary operations to start the Manual dump. Once the data starts transmitting, the Bytes Received message box will begin incrementing. After the message box stops updating, you can press OK, and the data will be parsed and placed in the Display Window. From there you can use the Display Window | Save As... command to save the dump to a file. |
Transmit: Data residing in either the Command Window or Display Window can be transmitted out the MIDI port(s) by choosing the respective Send Sysex command. Data can be loaded into the Command window by choosing Command Window | Load File... Data can be pasted from the clipboard into either window. You can also send an entire .SYX file in one gesture by choosing File | Send Sysex File... |
If you are receiving the message, "No output device is selected or there are no output buffers": |
A) Make sure that menu: Options | Pass SysEx is checked. You can't capture SysEx unless this option is checked. |
B) Make sure that an output is selected in Options | MIDI Devices... Expand the output in the Port Mapping tree, and ensure that Inputs are assigned. Expand each input and verify that it is supplying System Exclusive data as well as Channels. |
C) Open Options | Configure Buffers... Make Sure that at least 2 input and 2 output buffers of at least 64 bytes are being supplied. Recommended: 16 buffers, 128 - 256 bytes in size. |
D) When sending SysEx, it is strongly recommended that in SysEx View: SysEx | Configure..., "[x] Delay after F7" is checked. You can experiment with the delays. Try 60 milliseconds initially. If that works, you can try reducing it. |
You can change the size and number of the 'low-level' sysex buffers. The Input buffers (the ones receiving data) and the Output buffers (the ones sending data) can be configured independently. We recommend 16 buffers of 128-256 bytes as an all purpose solution that works well on a variety of machines. |
The entire multimedia system under Win9x is still 16 bit. This is why there is a 16 bit DLL to handle the low level conversation with the MIDI driver. (Win NT works in a similar way, but the DLL is 32 bit.) The low level buffers are allocated and maintained by this 16 bit DLL. They are set up in a circular arrangement, meaning that as they are filled by the MIDI driver on the 16 bit side, they are emptied by the application on the 32 bit side, and returned to the MIDI driver to be filled again. The default is for 16 buffers that are 256 bytes in size. |
Now that MIDI-OX supports many input and output buffers, the concept of sizes and numbers of buffers becomes more important. Each open input device (port) and each open output receives a full complement of buffers. Buffers must be locked and fixed in low DOS memory for the 16 bit drivers, as they are accessed at interrupt time. Because of this, if you have very many input and output devices that you wish to keep open, you probably will want to reduce the number of buffers handed to each port to an absolute minimum. If low 16 bit memory runs out, you may not be able to launch any more programs unless you reboot. This can happen regardless of the amount of RAM installed in your system. |
Re-Installing
If you are re-installing
MIDI Yoke, you need to first de-install and remove the existing driver via
the Multimedia applet, Devices tab (Under Windows ME, the Multimedia
applet is named "Sounds and Multimedia"):
Select MIDI Yoke 1, and press [Remove]. After you have removed MIDI Yoke, you need to reboot
the system � if you don't the existing driver will still be in memory
and won't let you increase your ports.
After reboot, follow the installation directions, and then reboot
again. |
Windows ME
Under Windows ME, install the MIDI Yoke Junction via the Control Panel 'Add New Hardware' applet. After Windows forces an initial search, answer 'No, the device isn't in the list' and press [Next]. On the next screen, press 'No, I want to select the hardware from a list'. Press [Next]. Choose Sound, video and game controllers. Press [Next]. On the next screen press [Have Disk...]. Browse to the directory containing the installation files (MIDIYOKE.DRV and OEMSETUP.INF). Press OK... |
During installation a configuration dialog is presented. The dialog allows you to specify the number of MIDI Yoke ports that should be enabled, and the Feedback detection desired. We use method number 4 to detect feedback (data-rate followed by a test controller message). You can also change the controller number used to help detect feedback. You can access this dialog later on too, once the driver is installed, and the machine restarted. To do so, open the Control Panel Sounds and Multimedia applet, choose the Advanced tab, expand 'MIDI devices and Instruments', double-click on any of the MIDI Yoke port connections, and press Settings... You can also Remove the driver using this applet if need be. |
Windows ME install is very similar to Windows 98 SE: Pictorial Install can be viewed or printed. |
Windows 95, Windows 98
Under Windows 95 or 98, install the MIDI Yoke Junction via the Control Panel 'Add New Hardware' applet. Answer 'No' to searching for hardware. Choose Sound, video and game controllers. Choose 'Have Disk'. Browse to the directory containing the installation files (MIDIYOKE.DRV and OEMSETUP.INF). If you installed MIDI-OX the drivers and .INF file will be in the MIDI-OX directory (C:Program FilesMidiox by default). Press OK... |
During installation a configuration dialog is presented. The dialog allows you to specify the number of MIDI Yoke ports that should be enabled, and the Feedback detection desired. We use method number 4 to detect feedback (data-rate followed by a test controller message). You can also change the controller number used to help detect feedback. You can access this dialog later on too, once the driver is installed, and the machine restarted. To do so, open the Control Panel Multimedia applet, choose the Advanced tab, expand 'MIDI devices and Instruments', double-click on any of the MIDI Yoke port connections, and press Settings... You can also Remove the driver using this applet if need be. |
Windows 98 SE Pictorial Install can be viewed or printed. |
Windows XP
The good news is that MIDI Yoke NT driver will work in Windows XP (Professional and Home Edition). The installation is similar to Windows 2000. |
A Windows XP Home Edition annotated Pictorial Install can be viewed or printed. |
Windows 2000
Under Windows 2000, use the Control Panel Add/Remove Hardware to install MIDI Yoke NT. Click Next... Choose (*) Add/Troubleshoot. Click Next... Choose Add a new Device. Click Next... Choose (*) No, I want to select the Hardware from a list. Choose Sound, Video and Game Controllers. Click Next... Press [Have Disk]. Browse to the directory containing the drivers (myokent.dll and oemsetup.inf). Select the MIDI Yoke NT driver from the list. Make sure you don't leave an expanded MYOKENT.DLL in your MIDI-OX directory: If Windows NT finds this file it attempts to load it instead of the system one, and anomalies result. It's perfectly okay to leave the compressed version in your MIDI-OX directory (MYOKENT.DL_) |
Windows 2000 Pictorial Install can be viewed or printed. |
Windows NT
Under Windows NT, use the Control Panel Multimedia Applet to install MIDI Yoke NT. Select the Advanced tab, highlight the MIDI Devices and Instruments section, and press Add. Choose Unlisted or Updated driver, and browse to the directory containing the drivers (myokent.dll and oemsetup.inf). Select the MIDI Yoke NT driver from the list. Make sure you don't leave an expanded MYOKENT.DLL in your MIDI-OX directory: If Windows NT finds this file it attempts to load it instead of the system one, and anomalies result. It's perfectly okay to leave the compressed version in your MIDI-OX directory (MYOKENT.DL_) |
Windows 3.1
For Windows 3.1+ install the MIDI Yoke Junction via the Control Panel Drivers Applet. You can also access the settings dialog from this applet. |
WARNING: There is a bug in Windows 95 that limits the total number of MIDI Ports to roughly 11. This total includes each MIDI Yoke port plus any other ports presented by other drivers, so set the number of MIDI Yoke ports such that the total number of MIDI ports is less than 11. If you exceed this amount it may prevent the driver from loading at bootup time. This bug appears to be fixed in Windows 98. |
MIDI Yoke is not a normal driver! It is a like a MIDI Patch Cable: it takes any data that shows up at its MIDI Yoke Output port and spits it out of its MIDI Yoke Input port! This seems to be really counterintuitive to people, but it's the only way that it can work as a patch cable. MIDI Yoke is used to attach different MIDI applications together -- it links them via MIDI. |
MIDI Feedback
This also means that you should never, ever, open the same MIDI Yoke port number as both input and output within a single application -- it is suicidal to do so. When this happens, any MIDI message sent to the output port is immediately routed back to the input port, which is then sent out the output port and immediately routed back to the input port... I think you get the idea: MIDI Feedback! This all happens very, very fast (at interrupt time), and if it is not stopped, your machine will appear to be hung, or crash. MIDI Yoke attempts to detect this condition and will break the connection when it is detected. |
After a MIDI feedback report, you need to close and reopen the driver in each application that has opened it. You can usually do this by opening the applications MIDI devices dialog (MIDI-OX and Cakewalk each have these), unselecting the MIDI Yoke port, and Press OK. The driver is now closed. Now do the same in the other application (if there's more than one application). Next figure out how you want the driver to be routed (avoiding feedback scenarios). Open the MIDI devices dialog and reselect the MIDI Yoke driver. Press OK. Do the same in the second application. The driver should now be re-enabled and operational. |
MIDI Connections
MIDI Yoke is normally used to connect two applications together. The first application will open MIDI Yoke 1 as an output port, and the 2nd application will open MIDI Yoke 1 as an input port. MIDI data will travel from the first application to the 2nd. |
Single Client to Multi-Client: You can use MIDI-OX in conjunction with MIDI Yoke to achieve a virtual multi-client input. Launch an instance of MIDI-OX. In MIDI Devices... dialog, select the single client hardware driver as input and select MIDI Yoke 1 as output. In each application that you wish to share the driver, open MIDI Yoke 1 as input. Although I mention MIDI Yoke 1, it can be any MIDI Yoke port as long as they all use the same port number. |
Multi-Client to Single Client output: The reverse scenario is a mirror image of the previous paragraph. You can use MIDI-OX in conjunction with MIDI Yoke to achieve a virtual multi-client output. Launch an instance of MIDI-OX. In MIDI Devices... dialog, select MIDI Yoke 1 driver as input and select your single client hardware port as output. In each application that you wish to share the output driver, open MIDI Yoke 1 as output. Although I mention MIDI Yoke 1, it can be any MIDI Yoke port as long as they all use the same port number. |
Syncronizing MIDI Applications
You can use MIDI Yoke to communicate between applications by having then share a single MIDI Yoke port. The first application (the Master) opens a MIDI Yoke port as an Output port, the second application (the Slave) opens the same numbered MIDI Yoke port as an Input port. With this configuration, MIDI data (and System Exclusive) is passed in one direction from Master to Slave. The Master might be Cakewalk or Cubase or MIDI-OX. The Slave might be Rebirth or Cakewalk or MIDI-OX: it depends on what you want to do. |
This issue regards MIDI Yoke NT (2000, XP) only. |
Note: This issue no longer applies for recent versions of MIDI Yoke (by default it does not adjust ThreadClass or ThreadPriority). Parameters are now stored in a MYokent.INI file in the Windows folder (MIDI Yoke 1.75+) |
To achieve its objective, MIDI Yoke NT creates a thread for its own use on behalf of each application that opens it. This is necessary due to the non-kernel mode driver architecture of MIDI Yoke NT. |
Because of latency issues in Windows NT 4.0 MIDI Yoke NT defaults to setting a high priority on the threads it creates on behalf of applications attaching to it. Under Windows 2000, and Windows XP the high priorities are probably unnecessary and can actually cause side effects with audio. Fortunately the thread priorities can be adjusted, but you need to use REGEDIT. |
Adjusting the Thread Priorities |
Press [Start]. Choose Run... type: REGEDIT press [OK] |
Navigate to: HKEY_CURRENT_USERSoftwareMicrosoftMultimediaMYokeNTParameters |
You will see several values in the right-hand pane. Choose: ThreadClass. Press Enter or double-click on it. Change the value to: 0 (zero). Press [OK]. Now choose: ThreadPriority. Set its value to 0 also. Press [OK]. Close REGEDIT and REBOOT your machine. The changes have no effect until after you reboot. |
Here's a .REG file you can download and use to automate the process for Windows XP or 2000: myokepriority.reg To use it save the link somewhere on your computer (maybe C:) and double click on it. It will reset the above two values mentioned to 0. Then REBOOT so it will take effect. |
The following was provided by user, Andy Pope: |
Notes on use of MIDI Yoke with Logic Audio |
Since MIDI Yoke has disastrous feedback problems if you send the output from a port (e.g. MIDI Yoke Out 1) to the same input port (e.g. MIDI Yoke In 1) in the same program, in Logic Audio you need to take special action before using MIDI Yoke. By default, Logic Audio is configured so that all input ports are "summed" together (i.e. merged). When you send the output of a MIDI track to a MIDI Yoke Output port, it sends it back around to the input ports, which results in feedback. |
There are two ways to deal with this problem. The first way is the easy way, the second way for more sophisticated use. |
|
A clarification from Manfred Lange: |
Disconnecting the MIDI Yoke ports from the Sequencer Input object in Logic won't cover the whole problem. |
Logic sends MIDI Clock events to all enabled MIDI ports by default. So even if you disconnect the MIDI Yoke ports from the Sequencer Input object, you still get feedback from the Logic sync input, as Logic feeds itself with MIDI Clock resp. MTC events. |
To fix that problem, you have to set the Logic MIDI Clock/MTC ports to a specific single port instead of the default setting using all ports. You'll find that setting in Options -> Song Settings -> Synchronisation Settings. |
|
This is a per song setting, so it would be useful to apply that settings to the Logic autoload song. |
Failure of MIDI Yoke NT Install on Windows NT 4.0 only: |
On NT 4.0 you can use this package to install MIDI Yoke NT. The package contains the driver (version 1.71): MYNTAUTO. Download and then run on your system. |
Failure of MIDI Yoke NT Install on Windows 2000 and XP only: |
Please read the following topic on the RME web-site: The 10 Entry Limit On Windows [Use your browser back button to come back here]. |
MIDI Yoke NT appears to be incompatible with GigaStudio |
Many users have reported System hangups when launching GigaStudio if MIDI Yoke NT is installed. It appears that GigaStudio uses some unorthodox methods for "wrapping" MIDI drivers in the System. Due to MIDI Yoke NT's unorthodox architecture, it appears that the two are incompatible and MIDI Yoke NT must be de-installed in order to use GigaStudio: it is insufficient to just disable MIDI Yoke (we have no idea why this is the case). |
Maple MIDI Tools to the rescue |
It appears that a workable solution is to install the Maple MIDI Tools freeware virtual driver as a substitute for MIDI Yoke NT. You can obtain the Maple Tools package from: Marble Sound. |
Copyright � 1997-2010 by Jamie O'Connell. All rights reserved. |
email: webmaster@_REMOVE_midiox.com |
This page was last modified on 06-19-10 |