Magazine Archive

Home -> Magazines -> Issues -> Articles in this issue -> View

MIDI By Example (Part 7)

Another piece of the MIDI puzzle

If you've just discovered the limitations of FSK as a means of syncing tape to sequencer, it could be time to seek a little professional help...

In Part 6, last month, we looked at ways of using an FSK-to-MIDI converter to get a drum machine or sequencer to play in time with a multitrack tape recorder. There were, we discovered, two main problems with using such a system. Firstly, the song sequence has to be completed before recording the sync tone to tape - you cannot change the structure of the song afterwards. This is because the transmission of MIDI Clocks from the sequencer is translated into a sync tone and any tempo or time signature alterations made after the recording of that tone will alter the playback timing of the sequence. The second problem, though not perhaps so difficult to live with, is the fact that the sync tone for each song has to be recorded to tape individually - you can't record tape sync to the entire reel in one go. This is again tied in with the nature of FSK.

The solution to both problems lies in the use of SMPTE code rather than FSK. Widely regarded as an all-round professional synchronisation system, SMPTE is an acronym for the Society of Motion Picture and Television Engineers - the organisation responsible for its development. It differs from FSK primarily because it is a measure of absolute time; when using a SMPTE-to-MIDI converter, the SMPTE clock commences at a Start time determined by you - the actual time then being recorded to tape using a tone similar to that of FSK. This comprises two frequencies an octave apart, one denoting a '0' and the other a '1'. On playback, the SMPTE-to-MIDI converter recreates the timing information and passes it onto the sequencer. As the translation is a one-way process, the sequencer doesn't have to be in playback mode when the code is recorded (or 'written') to tape and this means that you can subsequently alter your song as much as you wish - as long as the Start time is kept the same, the multitrack recorder and sequencer will stay in sync.

Figure 1: A SMPTE-to-MIDI converter consists of two parts; a SMPTE generator for writing/reading time code and a SMPTE-to-MIDI translator for MIDI Clock or MIDI Time Code.

There are two different types of SMPTE-to-MIDI converter (see Figure 1). The first is very similar to the Smart FSK type in that it creates MIDI Start, Clock and Song Position Pointer messages when the time code is played back from tape. As the sequencer is not playing back at the time when the code is recorded to tape, it is invariably necessary to enter any tempo or time signature changes via the buttons of the SMPTE-to-MIDI unit itself - a rather awkward and time-consuming process. The second type of converter generates a different kind of MIDI message called MIDI Time Code - or MTC for short - which is effectively a translation of time into a series of MIDI events. This allows us to use the tempo 'map' of the song sequence as a means of control and so alleviates the need to enter tempo and time signature changes as additional data. If your sequencer gives you the option, always use MTC.

In operation, the SMPTE-to-MIDI converter is fairly straightforward; Figure 2 shows the basic connections.

Figure 2: The basic connections for a SMPTE-to-MIDI converter.

When using SMPTE, it is often more convenient to set a Start time of 59 minutes 45 seconds and to record time code on the entire length of the tape, using an outer track lo reduce the possibility of signal bleedthrough from adjacent tracks. The Start time for the first song is then set to one hour, allowing 15 seconds from the commencement of the time code. Subsequent songs then have their Start times set according to where the previous song ended. When adopting this method, it's a good idea to leave about thirty seconds between songs so that any change of mind about the length of fade outs (for example) can be accommodated after the event. The level of tone on the tape should still be around -3dB.

Figure 3: Most SMPTE-to-MIDI converters include a MIDI In port to merge incoming MIDI signals with the MIDI timing data being generated.

One of the problems of using a SMPTE-to-MIDI converter (...there's always a problem) arises if you want to continue recording to the sequencer while running in sync with the multitrack. The MIDI In of the sequencer has to accommodate both the MIDI Out from the SMPTE-to-MIDI converter and the MIDI Out from your synth or whatever instrument you're playing. Fortunately, most converters of this type have a built-in merge facility whereby the MIDI data arriving at the MIDI In is combined with the MIDI sync information being created internally (Figure 3).

A typical set-up is shown in Figure 4. The SMPTE-to-MIDI converter is connected to the multitrack as before; when the time code is being played back, the MIDI information from the keyboard (notes, pitch bend, aftertouch and so on) is merged with either MTC or MIDI Clock data and transmitted from the converter's MIDI Out. Care has to be taken to ensure that not too much keyboard information is generated, otherwise the accuracy of sync-to-tape will be compromised through the late arrival of MIDI sync data at the MIDI In port of the sequencer.

Figure 4: A complete system comprising multitrack recorder, sequencer, synth and SMPTE-to-MIDI converter.


This month, a look at the nuts 'n' bolts of MIDI...

Status byte

Every MIDI message starts with a piece of information indicating what kind of message it is: this is referred to as the Status byte. There are eight types: Note Off, Note On, Polyphonic Aftertouch, Control Changes, Program Changes, Channel Aftertouch, Pitch Bend and System. In the case of the first seven types, the MIDI channel number is also incorporated into the Status byte.

Data byte

Following the Status byte come a number of Data bytes, each of which has a value of less than 128 - hence the upper limit of 128 for MIDI Program Changes, Control Changes and Velocity Values. With the exception of a System message, either one or two Data bytes are used. These are as follows:

MIDI Event transferred No. of Data bytes Informations
Note Off 2 note number, velocity
Note On 2 note number, velocity
Polyphonic Aftertouch 2 note number, amount of pressure
Control Changes 1 program number
Channel Aftertouch 1 amount of pressure
Pitch Bend 2 amount of pitch bend (both bytes)

As regards System messages, many have no Data bytes (as in the case of Tune Request, MIDI Clock, Start, Continue, Stop, Active Sensing and System Reset).

MIDI Time Code and Song Select use one Data byte while Song Position Pointer uses two. As for a System Exclusive message, the sky's the limit! The Start and End of SysEx Status bytes and the manufacturer's personal ID code are mandatory, but any number of Data bytes can go in between.


Read the next part in this series:
Midi By Example (Part 8)

Previous Article in this issue

Akai S2800 & S3000 Samplers

Music Technology - Copyright: Music Maker Publications (UK), Future Publishing.


Music Technology - Mar 1993





MIDI By Example

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 (Viewing) | Part 8

Feature by Vic Lennard

Previous article in this issue:

> Akai S2800 & S3000 Samplers

Next article in this issue:

> Future History FS1 and FST T...

Help Support The Things You Love

mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.

If you value this resource, you can support this project - it really helps!

Donations for October 2020
Issues donated this month: 0

New issues that have been donated or scanned for us this month.

Funds donated this month: £63.00

All donations and support are gratefully appreciated - thank you.

Please Contribute to mu:zines by supplying magazines, scanning or donating funds. Thanks!

Monetary donations go towards site running costs, and the occasional coffee for me if there's anything left over!

Small Print

Terms of usePrivacy