Image Map Image Map
Page 1 of 4 1234 LastLast
Results 1 to 10 of 36

Thread: A Trick up Its Sleeve - MIDI with the Tandy PSSJ

  1. #1
    Join Date
    Apr 2007
    Location
    Western United States
    Posts
    564

    Default A Trick up Its Sleeve - MIDI with the Tandy PSSJ

    Complementing its already capable sound-related functionality, the Tandy PSSJ has yet another, hitherto unknown/uncommon feature: its serial UART is nearly MIDI output compatible, requiring only proper configuration and a simple, passive adapter to provide current-loop and DIN connectivity to a MIDI device.

    The "trick" here is that, in the Tandy 1000 RL, RLX, SL(/x) and TL(/x) systems, the serial portion of the PSSJ is clocked with 24 MHz OSC input signal. A configurable division of either thirteen (default), or one, then determines in the UART input clock frequency. With the latter setting, the requisite, MIDI-compatible 31250 bps serial rate can be derived.



    A simple debug script can be used to configure the UART for MIDI-compatible operations (where FFEB bits 1-7 will need to be set as appropriate for your system/configuration):

    o ffeb d5
    o 3fb 83
    o 3f8 30
    o 3f9 00
    o 3fb 03
    q


    From there, it's simply a matter of constructing, or purchasing, the necessary hardware adapter. There are a few simple designs for Palm Pilot devices that can be used for this purpose, similar to the following:

    http://www.frankwillems.com/gig-rig/old_gig-rig9.html

    Note that the Palm Pilot is a DCE device. If you build an adapter based on related designs, connect the resistor to pin 3 of the D-SUB connector, rather than pin 2.

    If building an adaptor isn't your thing (it's certainly not mine), molded adapters are available from miniMusic that are reasonably priced and look great. Being designed for use with a Palm Pilot, you'll need to use a null-modem cable.




    With that, you're almost there. Just need to hack/modify the MPU-401 routines of game drivers for serial-port output, and then boom, MIDI with the PSSJ...



  2. #2
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    31,775
    Blog Entries
    20

    Default

    Reminds me of the old trick of re-crystaling the original IBM PC async card and setting it to the CL interface. Used before PC MIDI adapters became mainstream.

  3. #3
    Join Date
    Apr 2007
    Location
    Western United States
    Posts
    564

    Default

    The unusual thing here is that there's no hardware modification necessary, and with the 0.16% error rate for the "standard" baud settings being well within specification, it's a wonder that more UARTs weren't clocked similarly.

    I suspect that MIDI wasn't Tandy's intent in providing the additional clocking option, but with a couple of cents in additional parts, and perhaps some additional logic to provide MPU-standard addressing, it would have been interesting to see how far they could have run with this.

  4. #4
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    31,775
    Blog Entries
    20

    Default

    Well, you still need an EIA RS232C-to-Current Loop adapter, so it's a wash, as you didn't need one with the IBM Async board. Betcha a crystal is way cheaper than a converter.

  5. Default

    Does it behave the same as a dedicated "Intelligent" mode card?

  6. #6
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    31,775
    Blog Entries
    20

    Default

    Probably not--but recall that MIDI is just a stream of simple messages sent over a serial current loop.

    If you want to do something fancy, you do it in software.

  7. #7
    Join Date
    Apr 2007
    Location
    Western United States
    Posts
    564

    Default

    Quote Originally Posted by Chuck(G) View Post
    Well, you still need an EIA RS232C-to-Current Loop adapter, so it's a wash, as you didn't need one with the IBM Async board.
    The current-loop conversion is just the addition of an in-series diode and resistor as part of the DE9-to-DIN adapter construction. Here's a shot of another Palm-intended adapter, where the miniMusic version is the same circuit, but encased in molded plastic.



    Likewise, an IBM Async card yet requires DB25-to-DIN adaptation. Given the simplicity of an external current-loop, I'm not clear on why the use of an Async card would have been advantageous or preferred over the use of a standard, OSC-modified serial card. Were the Async cards just less expensive? Regardless, being mod-less, the Tandy PSSJ situation is presumably unique for its time, at least in the IBM-compatible PC world.

    Quote Originally Posted by InfiniteClouds View Post
    Does it behave the same as a dedicated "Intelligent" mode card?
    Yes. Other than the non-MPU-standard addressing, lack of command interfacing, and 1-byte data buffer, the behavior is the same as that of an MPU-401 in UART mode.

    Just to be clear though, the solution presented here is completely obviated by the use of an MPU-401 or compatible card. If you have a free ISA slot, use one of those instead. If, on the other hand, you're blessed with a single-slot Tandy 1000 RL or RLX, serial MIDI output might be appealing, using either a synthesizer or tone generator with RS-232C connectivity and corresponding 38400 bps rate, or the "direct" method outlined here instead.

    Concerning the effort involved in hacking MPU-401 drivers for serial output, it's comparable to that required for the recent OPLxLPT and DreamBlaster S2P products. Here's what I had to modify in the AIL MT32MPU.ADV driver used in the Dune 2 video example:

    send_byte
    ---------
    MPU-401:
    49C: 2E 8B 16 41 04 EC A8 40 74 18 A8 80 75 F7 FB EB 00 EB 00 EB 00 2E 8B 16 3F 04 EC 2E 8B 16 41 04 EB E3 2E 8B 16 3F 04 8A 46 06 EE 5D CB

    Serial:
    49C: 90 90 BA FD 03 EC A8 20 75 18 A8 80 74 F7 FB EB 00 EB 00 EB 00 90 90 BA F8 03 EC 90 90 BA FD 03 EB E3 90 90 BA F8 03 8A 46 06 EE 5D CB

    send_cmd
    ---------
    MPU-401:
    4C9: 55 8B 2E 8B 16 41 04 B9 FF FF EC A8 40 74 04 E2 F9 EB 1D 8A 46 06 EE B9 FF FF 2E 8B 16 41 04 EC A8 80 75 0A 2E 8B 16 3F 04 EC 3C FE 74

    Serial:
    4C9: 55 8B 90 90 BA FD 03 B9 FF FF EC A8 20 75 04 E2 F9 EB 1D 8A 46 06 EE B9 FF FF 90 90 BA FD 03 EC A8 80 75 0A 90 90 BA F8 03 EC 3C FE 75

  8. #8
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    31,775
    Blog Entries
    20

    Default

    A diode and resistor may work as a current loop interface after a fashion, but it's hardly the same thing as a real one.

    A more typical interface is a bit more involved. In particular note the opto.

  9. #9
    Join Date
    Apr 2007
    Location
    Western United States
    Posts
    564

    Default

    Quote Originally Posted by Chuck(G) View Post
    A more typical interface is a bit more involved. In particular note the opto.
    The opto is only required for MIDI input, for which other, readily-available serial solutions exist to provide. The point of this thread was to advertise a simple, output-only method specific to the named Tandy systems.

  10. #10
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    31,775
    Blog Entries
    20

    Default

    Ah, I don't have any output-only requirements. I use keyboard synths. If all I had were MIDI-output type interfaces, I probably wouldn't have MIDI.

    But maybe I'm different--all of my MIDI needs are using MIDI as an input device.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •