Author Topic: "Why is MIDI timing on a Mac so bad?" (May 1999 article)  (Read 2946 times)

0 Members and 1 Guest are viewing this topic.

Offline chrisNova777

  • Administrator
  • Posts: 8296
  • Gender: Male
  • "Vintage MIDI Sequencing + Audio Production"
    • www.oldschooldaw.com | vintage audio production software + hardware info
"Why is MIDI timing on a Mac so bad?" (May 1999 article)
« on: November 15, 2016, 09:23:18 PM »
http://web.archive.org/web/19990505184713/http://www.hinton.demon.co.uk/mac/macmidi.html
Quote
"Why is MIDI timing on a Mac so bad?"

The Macintosh has been around almost as long as MIDI itself and has long been the computer of choice by the majority of music industry professionals. Why then is timing accuracy that leaves a lot to be desired tolerated?
Firstly, there is not much choice, whatever criticism can be levelled against the Mac other platforms are worse - far worse! Secondly, until recently there was nothing much that could be done about it.

Quote
The Problem

The original Macintosh only had two serial ports and only ran one application at a time. Although it had an advanced USART, the Zilog Z8530 SCC, it was incapable of being set to the correct baud rate for MIDI use so an external clock had to be supplied. The SCC was also the poor relation in terms of interrupting the CPU and there were some strange tricks to keep it working during disk accesses.

As the Macintosh design advanced the serial communications capability did not improve correspondingly and even got worse. With the introduction of System 7 ((May 1991)) when multitasking was no longer optional and the increase in demand in serial communications for the Internet, the Printer and Modem ports became oversubscribed.

To meet the demand for more and more MIDI ports the "Multiport Interface" evolved, but this brought a whole new range of problems. All data passing through them was delayed (twice if coming in and then out) and a bottleneck was created between the interface and the serial port. The larger the system and the more MIDI traffic the worse the performance.

From the time of the Centris 660av (July 1993) through to the Power Macintosh 8100/110 (Nov 1994) the SCC was integrated into an Apple ASIC with a DMA  controller supported by a SerialDMA driver. However the first (driver file version?) design was flawed and it is essential to ensure that SerialDMA 2 is used. Later Power Macintoshes (from 1995???) up to the beige G3s (introduced in Nov 1997) have an improved ASIC. For the full story lookup Technote 1018 on Apple's web site (http://www.fenestrated.net/~macman/mirrors/Apple%20Technotes%20%28As%20of%202002%29/tn/tn1018.html)

Quote
ASIC = (Application-Specific Integrated Circuit?)
DMA = (Direct Memory Access)
660AV = http://www.everymac.com/systems/apple/mac_centris/specs/mac_centris_660av.html
8100 = http://www.everymac.com/systems/apple/powermac/specs/powermac_8100_110.html



To make matters worse the SerialDMA bugs were especially bad for high data rates (when used in combination with) Xon/Xoff (hardware) handshaking which is just what the Multiport Interfaces require. This eventually led to to all sorts of myths like "MIDI can only work on one port on a Power Mac".

On early (<100MHz) Power Macintosh (ppc) models much of the serial support was still 68k code run under emulation so it was actually running slower than on the models it superceded. Even on later Power Macintosh models, and even with OS 8.5 which is "95% native", the Device Manager serial support is still 68k code. Every time the PPC switches between 68k code and native code up to 50 microseconds is wasted (depending on model and OS version) and this may happen several times for every MIDI byte transmitted and received. This can seriously limit the CPU bandwidth available for other important tasks like audio processing.

Although modern computers are very good at processing large amounts of data at high rates; they only do so on their own terms. They can handshake and retry when an error occurs and normally the user is unaware that this is even happening. However they are still poor at handling single events where there is no chance of a second try which is exactly what MIDI requires.

Apple's bombshell this year has been to throw away asynchronous serial communications altogether and to tell everybody to use USB while they had not yet been able to supply an USB Driver with a granularity of better than 4ms - which although adequate for computer devices is of no use for MIDI. A new driver was promised for "Spring" which has been further delayed now until "Summer" and even if the granularity is improved to the theoretical minimum of 1ms it is doubtful if this will be enough for serious MIDI usage, especially if timecode synchronisation is required as well.

Quote
The Solution

The solution has always been obvious - get more ports directly onto the main CPU bus, get rid of software routing devices and try to get a Note On from one place to another within 1 millisecond as originally intended.

Previous attempts to provide more ports on NuBus cards on 68k Macs failed to have suitable performance for MIDI applications. (Three companies supply most of the NuBus cards for additional serial ports: Advanced Logic, Creative Solutions, Inc., and Digiboard. -- http://www.megawolf.com/serial.html)

Now MegaWolf Inc. have introduced a PCI card with highly specified UARTs and fully native PPC software support so now the question is:

"Why is MIDI timing on a Mac so good?"
http://www.oldschooldaw.com/forums/index.php?topic=2028.0

Quote
from : http://lowendmac.com/1998/macintosh-serial-throughput/
GeoPort, DMA Serial

Introduced with the Centris 660av and Quadra 840av, the GeoPort became a standard feature when the Power Mac was introduced. The GeoPort design permits 230.4 kbps performance on either serial port, but using LocalTalk may reduce performance on the second port to 115.2 kbps. Still, that’s within the comfort range for 56k modems, even factoring in data compression. Thus, you don’t need to disable LocalTalk to get good serial throughput with a GeoPort Mac.
the 5400 performa (1996? http://www.everymac.com/systems/apple/powermac/specs/powermac_5400_120.html)   was the first to have geoport serial tied into the PCI subsystem!!!! (serial ports implemented via DMA/PCI rather then how they had been before on the 68k platform)

Quote
https://everymac.com/systems/by_year/macs-released-in-1989.html - Macintosh IIci (25Mhz 68030)
https://everymac.com/systems/by_year/macs-released-in-1990.html - Macintosh IIsi (20Mhz 68030)
https://everymac.com/systems/by_year/macs-released-in-1991.html - Quadra 900 (25Mhz 68040)
https://everymac.com/systems/by_year/macs-released-in-1992.html - Macintosh IIvx (32Mhz 68040)
« Last Edit: February 02, 2019, 11:07:16 PM by chrisNova777 »

Offline chrisNova777

  • Administrator
  • Posts: 8296
  • Gender: Male
  • "Vintage MIDI Sequencing + Audio Production"
    • www.oldschooldaw.com | vintage audio production software + hardware info
Re: "Why is MIDI timing on a Mac so bad?" (May 1999 article)
« Reply #1 on: July 24, 2017, 12:43:04 PM »
heres some notes on what vintage macs have "Simple serial ports" great for MIDI
to avoid + sidestep the issues discussed in the above article:

similarly i think these nubus machines are the only machines that can properly run SOUND DESIGNER app with the digidesign audiomedia II nubus card or pro tools nubus cards that it requires



Quote
Quote
Nubus Capable
Quote
Macintosh II 16 MHz 68020 x6 nubus slots ********** perfect!
Macintosh IIx 16 Mhz 68030 x6 nubus slots ********** perfect!
Macintosh IIfx 40 MHz 68030 (expensive) 6x nubus slots

Macintosh IIcx 16 MHz 68030 3x nubus slots ********** perfect!
Macintosh IIvi 16 MHz 68030 3x nubus slots ********** perfect!
Macintosh IIci  25 MHz 68030 3x nubus slots ********** perfect!
Macintosh IIvx 32 MHz 68030 3x nubus slots ********** perfect!
Macintosh Performa 600 (CD) 32 MHz 68030 3x nubus slots ********** perfect!
Macintosh Quadra 700 25 MHz 68040 (expensive) 2x nubus slots
Macintosh Quadra 900 25 MHz 68040 (expensive) 5x nubus slots
Macintosh Quadra 950 33 MHz 68040 (expensive) 5x nubus slots

Quote
No Nubus slots:
Macintosh Classic 8 MHz 68000 (weak cpu)
Macintosh LC 16 MHz 68020 (weak cpu)
Macintosh LC II 16 MHz 68030 ********** perfect! but no nubus slots
Macintosh Performa 200 16 MHz 68030 (rare?)
Macintosh Performa 400 16 MHz 68030 (rare?)
Macintosh Classic II 16 MHz 68030 (no nubus slots)
Macintosh SE/30 16 MHz 68030 (hard to find)
Macintosh IIsi 20 MHz 68030 (no nubus slots)
Macintosh Quadra 630 33 MHz 68040 ********** perfect! but no nubus slots
http://www.everymac.com/systems/apple/mac_quadra/specs/mac_quadra_630.html[/size]
----------------------------------------------------------
http://www.everymac.com/systems/apple/mac_classic/specs/mac_colorclassic_ii.html
Processor Speed: 33 MHz Processor Type: 68030
(power of a IIvx with no nubus slots)

https://68kmla.org/forums/index.php?/topic/30897-quadra-630-owners-question-re-serial-port-performance
« Last Edit: July 25, 2017, 11:10:03 AM by chrisNova777 »