VOGONS


First post, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie

In a recent discussion, Marmes asked me to look into the reason that Impulse Tracker refuses to work with Orpheus boards (other than the InterWave on Orpheus II). The result of that is a revised WSS driver that takes a different approach to detecting the hardware.

The "problem" with the original drivers is that they either probe a limited set of I/O addresses (that are not appropriate for the cards in question), or expect to find the configuration interface of the original Microsoft design. All of these approaches fail on Orpheus. The simplest solution was to start with the original GUS Max driver (which uses the on-board CS4231 CODEC), and replace most of the detection routine. The resulting driver is attached.

The original port probing is (mostly) gone, and we instead rely on the ULTRA16 environment variable set by ORPHINIT (when invoked via ORPHEUS.BAT) and the installation routines for the original GUS 16-bit daughterboard and GUS Max. If it doesn't find it, or it's obviously invalid, "detection" will fail. Any IRQ line or DMA channel supported by the hardware should work. I/O addresses are currently limited to 12-bit (FFFH or less), which should be workable for most current hardware.

To use the driver, simply de-compress and copy it into your IT directory, then IT will have to be invoked with IT /sITCS.DRV.

This has been tested and confirmed functional on Orpheus and Orpheus II LT. Additionally, it should work on any card bearing an AD1848 or CS423x or compatible (Ensoniq Soundscape series, GUS PnP, GUS Max, GUS with 16-bit daughterboard, Audiotrix Pro, original Windows Sound System board and many more). For those whose installations don't define it, it should be as simple as setting an environment variable before running IT, as follows:

SET ULTRA16=base_address,playback_DMA,IRQ,0

The base address is the actual CODEC address, not the control/configuration port; this is often 534H by default. As an example, for Orpheus one would typically use SET ULTRA16=534,1,5,0 (or similar).

Depending on the sources you read, there is some disagreement about the format of the last part, but this will nonetheless work most of the time.

In my testing, playback quality was generally very good, and any problems appear to be related to IT playback bugs. In all honesty, I haven't (yet) changed anything other than the detection routine, driver name and mixing rate, so I don't expect to have introduced any new problems. Of course, I'm open to feedback and discussion, if anyone has problems.

Attachments

  • Filename
    itcs.zip
    File size
    9.26 KiB
    Downloads
    110 downloads
    File comment
    Impulse Tracker Crystal WSS driver
    File license
    Fair use/fair dealing exception
Last edited by 640K!enough on 2023-05-31, 06:21. Edited 2 times in total.

Reply 1 of 10, by keropi

User metadata
Rank l33t++
Rank
l33t++

thanks for sharing and for the hard work 640k!enough !
it works great for me and I could not detect any anomalies with the MOD files I have - nothing fancy though , mostly amiga game rips

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 2 of 10, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie

It wasn't anything particularly difficult, but I think it makes it easier to get the software running on such cards.

For those who don't like drivers that are not part of the original distribution, the other option (meaning you don't need anything more than the latest official release; no third-party driver) is to specify the configuration on the command line, as in:

IT /sITGUSMAX.DRV /Ax /Iy /Dz

Where:
x is the CODEC base address (hexadecimal)
y is the CODEC IRQ
z is the playback DMA channel

Last edited by 640K!enough on 2023-05-31, 06:18. Edited 1 time in total.

Reply 3 of 10, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t

Nice work!

A suggestion, if I may. Rename the topic title to "Revised WSS driver for Impulse Tracker". In this day and age, very few people will associate the IT abbreviation with Impulse Tracker, even here on Vogons.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 4 of 10, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie
Joseph_Joestar wrote on 2023-05-31, 06:08:

Nice work!

A suggestion, if I may. Rename the topic title to "Revised WSS driver for Impulse Tracker". In this day and age, very few people will associate the IT abbreviation with Impulse Tracker, even here on Vogons.

That's a fair suggestion; done.

Reply 7 of 10, by digistorm

User metadata
Rank Member
Rank
Member

I have no need for this myself, because I have an original GUSpnp card, but are you aware that there is also a .mmx driver for the codec? If you CPU supports MMX it provides much higher quality mixing (the default mixer is not very good) and it supports the resonant filters of the .IT format.

Reply 8 of 10, by Gmlb256

User metadata
Rank l33t
Rank
l33t

An MMX version of the WSS driver for Impulse Tracker would be great.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce2 GTS 32 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 9 of 10, by carlostex

User metadata
Rank l33t
Rank
l33t
digistorm wrote on 2023-05-31, 13:14:

I have no need for this myself, because I have an original GUSpnp card, but are you aware that there is also a .mmx driver for the codec? If you CPU supports MMX it provides much higher quality mixing (the default mixer is not very good) and it supports the resonant filters of the .IT format.

Ooof that would be awesome. For the likes of us with Pentium MMX's and K6's, which probably are used in the most well suited all rounder DOS machines, this would be great. Dunno how hard it would it to be though, depending on whatever compiler is used and its support for MMX. Unless the coder uses MMX registers directly in assembler.

Reply 10 of 10, by carlostex

User metadata
Rank l33t
Rank
l33t
carlostex wrote on 2024-02-04, 12:40:
digistorm wrote on 2023-05-31, 13:14:

I have no need for this myself, because I have an original GUSpnp card, but are you aware that there is also a .mmx driver for the codec? If you CPU supports MMX it provides much higher quality mixing (the default mixer is not very good) and it supports the resonant filters of the .IT format.

Ooof that would be awesome. For the likes of us with Pentium MMX's and K6's, which probably are used in the most well suited all rounder DOS machines, this would be great. Dunno how hard it would it to be though, depending on whatever compiler is used and its support for MMX. Unless the coder uses MMX registers directly in assembler.

640K!enough wrote on 2023-05-31, 03:28:

The "problem" with the original drivers is that they either probe a limited set of I/O addresses (that are not appropriate for the cards in question), or expect to find the configuration interface of the original Microsoft design. All of these approaches fail on Orpheus. The simplest solution was to start with the original GUS Max driver (which uses the on-board CS4231 CODEC), and replace most of the detection routine. The resulting driver is attached.

I wonder if this is also the problem with DIGPAK (John Ratcliff) real mode WSS driver. I never got it to work in my Orpheus cards.