Re: MIDI input

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Ursprüngliche Nachricht-----
> Von: "Dave Phillips" <dlphillips@xxxxxxxxxx>
> 
> After starting DOSemu go into the directory where you have the vapimpu 
> driver. Start the driver like this:
> 
> vapimpu
> 
> If it succeeds, you're ready to rock, and you can launch SPG.

Thanks a lot!  That worked perfectly!  I could record and play back, with perfect timing and no delay.  The MIDI is always in sync with the PC speaker metronome beep.  So the setup is perfect, even with a plain vanilla kernel.

There is clearly a big difference in how both programs are reading MIDI data.  If I use the S debugging switch with SPG, there is so much debugging output that it runs pretty fast through the output window.  Here is a random extract of the output while I play notes at 240 bpm on the MIDI keyboard:

MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Processing IO callback, 1 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read status port = 0x3f
MPU401: Read data port = 0xfe, 0 bytes still in queue
MPU401: Read status port = 0xbf
MPU401: Read status port = 0xbf
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Processing IO callback, 3 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x90, 2 bytes still in queue
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x3c, 1 bytes still in queue
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x4e, 0 bytes still in queue
MPU401: Read status port = 0xbf
MPU401: Read status port = 0xbf
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Processing IO callback, 3 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x80, 2 bytes still in queue
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x40, 1 bytes still in queue
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x40, 0 bytes still in queue
MPU401: Read status port = 0xbf
MPU401: Read status port = 0xbf
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port
MPU401: Read status port = 0xbf
MPU401: Write 0xf8 to data port

Now a random extract for the Score program, same notes played at the same speed.  As I wrote, this is a random extract - it does not represent a time interval that is similar to the above output.  However I suspect that the time interval between the lines saying "MPU401: Processing IO callback, ... bytes" should be about equal.

SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x48, 29 bytes still in queue
MPU401: Processing IO callback, 3 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x4d, 31 bytes still in queue
MPU401: Processing IO callback, 1 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x80, 31 bytes still in queue
MPU401: Processing IO callback, 3 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x4c, 33 bytes still in queue
MPU401: Processing IO callback, 3 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f
MPU401: Read data port = 0x40, 35 bytes still in queue
MPU401: Processing IO callback, 1 bytes
SB: Activating irq type 4
SB: Interrupt activated.
SB: Activated IRQ for MIDI
MPU401: Read status port = 0x3f


This output comes much slower than that of SPG (you can see that from the lines "MPU401: Processing IO callback, ... bytes" that I mentioned above which are much denser here).  I assume there are far too few lines saying "MPU401: Read status port = 0x3f", so there is a pretty high number of bytes still in the queue.  What is responsible for reading from that buffer?  Is it the DOS program, FreeDOS or Dosemu?  On "real" (non virtual) systems with old hardware and MS DOS the MIDI input apparently works with Score.  What does a "real" system with MS DOS do that Dosemu/FreeDOS don't?  I'm wondering whether I should try installing MS DOS in Dosemu...  How can I do this without damage to the nicely running FreeDOS?  (I have MS DOS 6.2 here.)

Thomas W.
______________________________________________________________
Jeden Monat 1 hochkarätiger maxdome-Blockbuster GRATIS!
Exklusiv für alle WEB.DE Nutzer. http://www.blockbuster.web.de

--
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Console]     [Linux Audio]     [Linux for Hams]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Camping]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Samba]     [Linux Media]     [Fedora Users]

  Powered by Linux