I ran into something really odd while doing some PSG testing for a nice future product...
To get some PSG going on in basic I dug deep in my memory and came up with some simple MML:
10 DEFINT A-Z 20 A$(1)="l16 o4CEGo5C o4EGo5CE o4Go5CEG CEGo6C" 30 A$(2)="l16 o4EGo5CE o4Go5CEG CEGo6C o5Eo6CEG" 40 B$(1)="l8 o2Co3C o2Co3C o2Co3C o2Co3C" 50 C$(1)="l4 o6g f e d" 60 C$(2)="l4 o6c o5b a g" 70 ' 80 PLAY B$(1) 90 PLAY B$(1) 100 PLAY B$(1),A$(1) 110 PLAY B$(1),A$(2) 120 PLAY B$(1),A$(1),C$(1) 130 PLAY B$(1),A$(2),C$(2) 140 GOTO 80
As you can see, at the end I play all three channels at the same time. And if you check the "l" in the start of the strings in lines 20-60 and count the capital letters which are the actual notes, you see that this "l" stands for the length of the note to be played. l16 contains twice as many notes as l8 which contains twice as many notes as l4.
So, everything should be perfectly in sync... Well... Try for yourself...
Now the funny thing...
For this next step you need an MSX-Music connected...
_music play #2,"c"
This plays a C on your MSX-Music.
If you run the MML listing again now, which still plays on your PSG, it'll all be perfectly in harmony.
I've tested this on a turbo R in z80 and r800 mode as well as on a Philips NMS8250 on 3.5MHz and 7MHz. openMSX emulates this issue as well...
I've been out of MML business since FAC soundtracker 1.0 1991 was released (was it 1991?), so my knowledge about this curious thing is not clear to me. But yet it bothers me not knowing why this occurs.