...making Linux just a little more fun!
By Jim Dennis, Jason Creighton, Chris G, Karl-Heinz, and... (meet the Gang) ... the Editors of Linux Gazette... and You!
From sindi keesan
Answered By: Thomas Adam, Heather Stern, Jay R. Ashworth, Kapil Hari Paranjape
I compiled playmidi-2.5 from source code, using a version of linux (Basiclinux 3.3) based on Slackware 4.0 (libc5) with the Slackware 7.1 kernel and modules (kernel 2.2.16) because the source code would not work with glibc2. A version I downloaded from somewhere for Slackware 7.1 (2.4.9) told me 'No playback device found'. I have no midi device other than sound card and speakers so I typed playmidi -f for FM synthesis because -e for external midi device is default. 'No playback device found' either way.
I am using OSS sound, sb.o, Vibra16 AWE32 card which works perfectly in DOS and has two 4MB 30-pin SIMMs. My DOS players appear to load sound libraries automatically.
To compile without X or GTK or svgalib I commented out the lines in the Makefile referring to splaymidi, xplaymidi, etc. because there was no --without-X type option in the configuration program. I configured to use SB AWE32 as the default device. I installed the developers' ncurses package when it complained about not finding the right ncurses files. It appeared to compile.
I am using the bare.i (basic) Slackware kernel, or a kernel which I compiled for sound myself, and have inserted:
soundcore soundlow sound uart401 sb v_midi awe_wave
I can play wav files with sox and mp3 files with mplayer.
I also typed mknod /dev/sequencer b 14 1 and mknod /dev/midi b 14 2 (my distribution came without sound devices and I previously made dsp audio mixer and sndstat to play wav and mp3 files with).
I tried to use playmidi in Basiclinux 3.3 where I compiled it dynamically (it needs libc5 and libncurses, both there) and if I typed playmidi -f (for FM synthesis) test.mid 'No playback device found'. Without the '-f', using the default AWE32 which I compiled for, I presume, it gives me a message about AWE32 and the author and looks like it should be playing but there is no sound.
I put the FM synthesis all the way up with aumix.
What am I missing? The Makefile is attached.
My package (including the libncurses dependency) is at:
You will need to change an option if you are not using AWE32 (the default).
Do I need to somehow load sound libraries to the ROM in this card? I have never used linux to play midis before.
See attached playmidi.Makefile.txt
[jra] You know, I don't have an answer for you, but let me just say that that's about the Smartest Question I've seen here all year. :-)
Someone said I need to insmod opl, which involves learning how to use ispnptools because it requires specifying some settings.
pnpdump > /etc/isapnp.conf && isapnp /etc/isapnp.conf
Pnpdump(8) comments the file rather well, so you can definitely try it and see.
I was told I also needed to edit the resulting file.
[Thomas] Maybe. Maybe not. pnpdump is intelligent in its detection, and will often leave reasonable defaults uncommented. But yes, do obviously look at it before hand.
Do I really need to do this if I can figure out the settings by trial and error, or from what worked for other people? I can tell which IRQ and DMA the sound card is using when I boot (or with a diagnostic program).
[Thomas] Which diagnostic program is this? They're not that reliable. Have a look at using 'modinfo' on the module,
hwinfo seems to be reliable (DOS shareware, Slovak) for irq and dma
[Thomas] As is the Linux equivalent.
Since I boot into linux with loadlin from DOS, the DOS version works best for me.
[Thomas] That doesn't account for accuracy, of course.
SB16 has so far identified settings perfectly - if they work in DOS, they work in Linux. Except for one time when DOS needed IRQ2 and linux needed IRQ9.
[Heather] Otherwise known as the "cascade interrupt" - irq 2 is irq 9, the manufacturers used that trick to extend the original bank of interrupts. Someone must have thought we'd never need 8 devices at once the way we'd never need 640k for one program to abuse...
So is the DOS SB16 diagnose program - if I use the same irq and dma and mpu_io for linux it always works (with insmod sb).
[Thomas] You ought to be using 'modprobe' (insmod only loads the device you tell it to -- modprobe loads dependant devices on it). As for DOS diagnoses programs, they're iffy at best -- and not always is it the case that IRQs are transferrable.
The first question I ever had for TAG concerned where to find modprobe so I could modprobe mdacon. Our linux has only insmod. I was told there is a list of module dependencies somewhere, and I figure it out either by doing web research, or looking at the error messages and guessing which modules will fix them (similarly named to parts of the messages).
[Thomas] I don't recall this question. Mind you, if modprobe is being distributed separately from insmod, and modinfo, then that's in grave error, IMO.
It was two years ago. I wanted to use a 2-floppy disk linux with TTL and VGA monitors. The discussion veered off into suid and other things that I had never heard of in my two weeks of linux experience.
[Thomas] Welcome to TAG. "The answers themselves may range from friendly to gruff and often contain sharp humor, horseplay, fluff, pedantry, and pontification; the discussion spawned by your question may well wander off-topic and possibly back on again - with all of this reflected in your mailbox. Thin-skinned folks, those who expect "their answer" and nothing else, and narrow-minded people are urged to take the appropriate precautions. (Yellow helmets and fire- and bullet-proof underwear are available in the shop just off the main lobby.)"
From one of the sillier portions of our Ask The Gang intro page. http://linuxgazette.net/tag/ask-the-gang.html -- Heather
Syschk is hopeless - it told me 6 IRQs were free when only one really was.
[Thomas] as some allow for options to be passed to them:
The sound cards (at least for mad16 and sb) let you specify settings, as do ISA ethernet cards.
For one sound card (an opti) I needed two settings pertaining to midi (mpu_io and mpu_irq). Is there some way to figure them out without isapnptools?
Is opl needed for awe32 or just for FM synthesis? He also said my FM synthesis is broken - will awe32 work without it? I have four awe32 cards, which I think are all plugnplay.
[Thomas] Yes, it will. FM Synthesis is optional.
My Makefile was created by removing the parts of the standard Makefile that I thought were irrelevant. I probably removed too many pieces
[Thomas] More than likely -- when you embark on this, start from the centre (the 'install' directive, and work outwards.)
Thanks. The precompiled package I found for playmidi does not seem to support AWE so I attempted my own. I was unable to compile the source code with glibc2 (I got an error message about GLIBC2 and atexit) but it worked with libc5.
[Thomas] atexit and glibc2 (that is libc6) is a classic case of "oops, this version of glibc is not going to work. libc5 is fine and will coexist with libc6 just happily. I have a number of motif apps that are dependent in this way.
I put libc5 and libm and ld-linux on my glibc linux, and glibc2 on my libc5 linux, to provide a wider choice of programs.
[Thomas] You can just say "libc5" here, as I know what it contains.
Some things (like Opera) don't come in source code so you are stuck with their choice of library, meaning I also had to upgrade glibc2. The problems occur when they have dependencies other than libc (libpng, for instance) and you have to specify to use the libc5 not the libc6 version when you have both of them. I have a little script for that.
[Thomas] This is not good, as you will get stuck at some point. Libc5 is not going to handle newer versions very well, and there will be a point when it will fail.
I have been using libc5 mainly just to run programs that I don't have working with libc6, such as this playmidi, and also a few other things that our basiclinux list members have compiled for libc5, or specifically for the setup we have which uses it (files are in sort of odd places) such as Abiword. I can chroot between the two linuxes to wordprocess but playmidi ought to work in both since I added libc5.
It is old source code, but I thought that problems arose only when you tried to compile newer source code with an older libc, not vice versa.
[Thomas] Not always.
I will check with modinfo as to whether I can specify settings for opl which are the same as for sb. I will have to install modinfo first - our linux has only the essentials (the kernel did not even support sound).
[Thomas] Interesting, as modinfo is part and parcel of insmod and modprobe and the like. An omission of it is surprising...
Our 'basiclinux' started as a 2MB download, with just insmod. We have busybox versions of many things which don't always work as required, and have to install the full versions. I just pick out a file or two from a package, to keep things small. We also have Xvesa (about 1MB) instead of a larger X. Sometimes these busybox versions are what keeps things from compiling. Playmidi may not have liked my minimal X, which is why I removed it from Makefile.
[Thomas] I'd say. This "picking and choosing" process is... an interesting idea, but perhaps a bit too thorough for some things.
Yes, the author of our linux thinks I am crazy too, but I prefer to just install the things I am actually using. If they have dependencies, I have to install those too, and make symlinks, but I learn a lot that way. Sometimes I install the whole package and then delete most of it, for instance SANE supported many scanners and I deleted all but HP, along with networking stuff.
[Thomas] Looked at Linux From Scratch? (LFS)
The neighbor suggested it but I don't know enough about compiling. Playmidi was one of my bolder adventures (modifying the Makefile manually).
[Thomas] There's an "instruction" manual weighing in at 300tonnes.
Can I delete most of it after compiling? It would take me a few years to download.
I could add some package to get modprobe and modinfo but it is more fun figuring these things out on my own.
[Thomas] I'd go with the quickest option -- it's something you need, and not something you can fool around on a whim as and when you come across it.
I would rather understand things than be quick.
[Thomas] I know nothing about this distro -- but a distro as minimalistic as that which gives one the option of not having modprobe as "standard" is fundamentally flawed.
He was trying to fit into 2 floppy disks. We can add any Slackware 7.1 packages we like after installing to hard drive, but he suggested the most basic ones. I also deleted 1MB of locale files in the first 11MB installed to HD.
[Thomas] Why the brutual stripping? Surely your hardware can't be that antiquated? Or is this just for fun?
Why would I want 1MB of locale files? It just takes longer to find things I do want on there and I don't speak Korean. Or 50 copies of LICENSE or COPYING or TODO? I like to only keep things on the computer that I know I am using.
[Heather] You'll be pleased to know that Debian policy points at only one copy of the standard licenses, with a notation in /usr/share/docs that's much shorter, or a whole license if an app is special. Also it's easy to set up your incoming sources so you don't use the contribs and non-free, thus avoiding the more curious and/or onerous license types.
Several of us put together a little script to convert man pages to html and display with a browser, but lynx does not display some characters as intended.
[Heather] Lynx also makes a fine pager over plaintext files, if you don't mind also giving up boldness. If you set your TERM=dumb and then use man to dump your pages (redirected out to a file of course) then the formatting is stripped very quickly without resort to scripting tricks and missed characters. We did this for LNX-BBC... and then found that many man pages were superceded by the --help the programs had buried in them. Scalpel time <IMG SRC="../gx/dennis/smily.gif" ALT=":)" height="24" width="20" align="middle"> I do find myself wondering if you'd enjoy trying an LNX BBC for your baseline though. Everything was from scratch at the time and are libc6 binaries.
It saves 8MB of groff and man programs. We have Xvesa with only the fonts and files needed to run it in an rxvt (all this in a linux that fits on 2 floppy disks), but Xvesa has a few problems. If we run into problems we install larger versions or additional files. There was no sound or scsi support so I learned to compile my own kernel, and removed support for some things I don't use, to keep it small (around 450K), such as firewall and samba. I included awe support in the kernel. What would I have learned if I just used a standard distribution and kernel?
Our star compiler put together a static (libc5 or libc6) mplayer (7MB executable) but it won't play midis. We can run linux on a 486 with 16MB RAM and 100MB hard drive if we don't need to compile or use Mozilla.
[Thomas] I still do all of that using SuSE 6.4
Yes, SuSE is one of the more reasonable distributions, in fact the only other one besides slackware that worked on our 486s. But it still installed itself to run processes at regular intervals, and took much longer to boot because it assumed you had new hardware and went looking for it. Our little linux boots in 14 seconds on a 486.
[Heather] Now I know you didn't try debian; I had 386 and 486 hardware running on it fine. Though admittedly I haven't tried to install Sarge. However, every installer based system has a kernel that goes looking for the kitchen sink - it can't know what your hardware is until it looks. So the first "high tech" thing people do at installfests is build their own kernel to get that zip. Though it matters a lot less if you're not going to reboot your machine constantly, about shaving a minute off of your boot time. Linux is more suited for being always-on.
I went looking for awesfx, which is a set of utilities also containing sfxload. I found the author's site, with his comment that he had switched from bz2 to gz because of download problems, but the source code was bz2 and the download was corrupted. I found the binary package at linuxpackages.net - for SW10. I found nothing of the sort for SW7.1 or SW8.1. Any ideas where to look? I don't want to upgrade to the SW10.0 glibc.
[Thomas] No idea, sorry. I'd only be doing the same thing you are, via google.
I learned that SB Live also accepts sound fonts (soundbanks) but they seem to be different ones from SB16 AWE32. And that SB AWE64 still does not work in DOS (or probably therefore in linux) because awe will still not initialize even after the card starts working with standard settings.
[Thomas] It is a very old card...
The awe64 is the newest card that I am using. I have mostly 1992-1995 SB16s with jumpers. They sound nice. Most of them have four jacks (line and speaker are separate) and a couple have volume dials.
[Thomas] I'm well known for having and running antiquated hardware. I also know when to give up and concede that there are some things just not worth the headache. That said, you still have some outstanding issues to try -- and I'd probably push with the pnpdump(8) idea.
I first need to get hold of uncorrupted source code for the sound bank loader and see if the DOS initialization was adequate. I wrote the author. He may have posted the .tar.gz package at Creative's opensource site, which always times out.
I might give up on four Opti 929A/Crystal cards, but SB is under control and our 'distribution' even has a package for it.
I am considering PCI mainly because we are running out of ISA slots - MGA card, modem, sound card, ethernet card. Only the sound cards seem to be pnp.
I also learned that I can set my ISA SB16s to use standard settings by disabling USB in CMOS, running SB16 diagnose in DOS (which no longer complains that IRQ5 and DMA0 and DMA1 are taken), then reenabling USB (on one computer - on the other I have to leave it disabled or the conflict comes back). Would a PCI sound card avoid this problem?
[Thomas] Anything this side of the late renaissance (for which, alas, your poor SB16 card does not) would, yes.
What sort of sound cards did they use in harpsichords?
Someone just gave me a 'Live'.
I may write the author of awesfx to ask where to get a .gz version of source code.
[Thomas] Remind me again why bzip2 is not preferrable? If it helps, I can always convert it to .gz for you and shove it on my webserver.
The download gets corrupted. I even tried downloading to a local bbs with a fast connection and bunzipping it there - premature end of file. We had the same problem when someone posted a .bz2 package for our group. I used lynx to download and other people downloaded with other programs.
awesfx*.tar.bz2 (version 4-4 or 4.4) if you want to attempt the download and bunzip.
I will search for an rpm binary of this package.
[Heather] Debian contains version 0.5.0b-2. The perl script alien (which I highly recommand for anyone's sysadmin kit) could turn it into an rpm.... or even into a slackware package, which it looks like your box would prefer. But the important thing is that debian has a well scattered mirrors system, and its source package contains an orig.tar.gz as well as their diffs, and you can read the maintainer's changelog to see what the diffs were done for. I've used the trick of fetching debian parts for other distros before - though I mainly deal with the mainstream ones, your little distro should be served easily as well. There is even an archive server if you insist on hunting down older packages.
http://rpmseek.com/rpm-pl/awesfx.html lists 65 links to rpm binaries or source code for awesfx 0.4.3, 0.4.4, or 0.50, for 586 or 686.
There are versions of source code and binaries for ASP 7.3, Alt 2.2, Alt Sisyphus, PLD 2.0, TurboLinux .0, SuSe 8.1, Redhat.2, and later (and other linuxes). If I am just after source code, does it matter which version of linux I get the source rpm for?
[Thomas] No, since you'll be linking to whatever versions of libs you have on your machine. Yes, the program might complain that you need a newer library version or whatever, but that's not too much trouble.
I don't know much about compiling so it would be easier if I did not have to specify or modify details about libraries.
I would rather use a precompiled binary but I don't know which glibc all the rpm linuxes use, except that Redhat 7.2 is glibc2.2.x and I have upgraded from SW7.1's 2.1.3 to SW8.1's glibc2.2.5. (Never mind that playmidi is compiled for libc5 - I will use it in a linux which contains both lib5 and libc6). Is there some site that lists the libc's used by various versions of linux?
[Thomas] Nope, not that I know of.
I don't care which directories the packages put things in as I am just planning to take the package apart and extract the few pieces I want.
I can use rpmtotgz to convert rpm binary packages to slackware binary packages - will this also work for the source code? I know how to extract Debian .tar.gz with ar +x (and keep the larger of three files produced). One of our members explained how to extract tar.gz's from rpms using a complicated little script based on a small utility (that I picked out of a larger package), which I tried on a playmidi rpm but it failed (corrupted download?).
[Thomas] Really? rpm2cpio is just fine for all cases. And of course, there's "alien".
That may have been the utility (rpm2cpio).
You don't even have to wander from my original subject, I have done it for you. Minimal distributions are so much more educational.
I will give this a try with a soundbank some time soon and then if needed look into modinfo and isapnp.
and therefore do not have FM synthesis. I compiled my own when a precompiled version did not work for me as FM synthesis (due to opl being missing). It would not compile before I edited Makefile because I did not have GTK. I only wanted the CLI version of playmidi, not X, GTK, or SVGA.
Apparently if you boot with loadlin from DOS, you can initialize a plugnplay sound card in DOS and don't need to bother with isapnp. On three computers with awe cards, the one with awe64, which does NOT play midi files with an awe midi player in DOS (but does in Win98 in a DOS window), informs me 'awe initialization failed', which implies it worked on the other two.
What I am missing appears to be:
This is probably why it appeared to be playing but no sound came out - the sound bank was empty so that is what it played.
For FM synthesis I need to use a version of playmidi that was properly compiled, and insmod opl, possibly initializing it with isapnp.
Can someone explain how isapnp and plugnplay work and what initialization does to a pnp card? The person trying to help me says it is very complicated. He got it working with FM synthesis and one Vibra16 card.
Time to wander again. The computer with the AWE64 card, which was working fine in Windows and almost fine in DOS and linux (no midi, would not initialize awe), suddenly stopped being able to boot Win98FE after I changed the ethernet card (to another PCI model) and put in an internal PlugNPlay modem (which is the only other plugnplay card in there) because I needed the external modem for a computer with fewer ISA slots. Removing the modem did not help, nor did disabling onboard USB (which uses an IRQ, and which helped previously to get sound to work, and I could then reenable it and sound kept working).
Removing the ISA sound card fixed the problem. With PCI sound card (SB Live, of which I now have two) Win98 boots. I don't have drivers for it for DOS, linux, or Win98 and will have to work on that problem for a while (it is not SB16), or figure out how to get a SB16 ISA to work in there again, maybe a different one, before continuing with playmidi and awesfx. My other computer is in pieces.
I have no free IRQs. The DVD-ROM drive can't even find one and disables DMA (I was told there is a way to do this with hdparm but maybe I need DMA to play DVDs?). I am using a SCSI CD-ROM drive to read CDs. I put a scsi card in here, and ethernet, and ISA modem, MGA (disabled the parport to free up an IRQ) and sound. The PCI video card also wants an IRQ. So to free up IRQ5 for the ISA sound card (instead of IRQ7, which it took away from the printer port) I disabled USB onboard, then was able to run DOS SB16 diagnose, which reset the ISA sound card to standard settings, then when I reenabled USB the sound card still worked with standard settings. Is there a better way to do this? I have hwinfo, which tells me which IRQ and DMA settings are being used by what. I will keep hunting around the CMOS setup for ways to set IRQ and DMA to be used by legacy devices but this is not the BIOS I am used to (it has little icons - AMI instead of Award or vice versa).
Do some devices also work even without IRQ and DMA and can I disable their use of them manually in BIOS?
[Heather] Parallel ports can use a polling mode that is slower. If you have both IDE and SCSI devices, I'd see if you can disable the other entirely and stick with only one drive interface. Beware that some 486's can only boot off scsi hard disks not scsi CD since they expect a bootable CD to be atapi - that's assuming they can boot from an off-board controller at all. I suppose you need the floppy in your conditions - it uses an IRQ, too, but could be your boot device - even just a master boot record can fit on it nicely.
I am thinking of trying different SB16 cards in there before tackling the 'Live' drivers. I still have two jumpered SB Pro's.
No wonder our little linux came without sound support.
It was not necessary to initialize any of the ISA SB sound cards (or two clones) in linux (they were being initialized in DOS), or the ISA Opti 931 (which pnpdump said is not pnp). I hope to avoid isapnp for a while longer. The modem (pnp) was working in another computer without initialization, as com2, just like a jumpered modem would have worked.
The author of awesfx steered me to the .tar.gz at www.alsa-project.org/~iwai.
Version 5 includes ALSA and version 4 does not and it also does something else differently which might be better with older cards.
I just acquired a second Soundblaster Live, which also accepts sound fonts using this same program. Win98FE, which suddenly stopped booting with the AWE64 ISA card (after I changed PCI ethernet cards and added MGA), boots with this one but the driver needs SE not FE (which would imply they don't support DOS). Linux OSS worked perfectly (soundcore.o and emu1k10.o - ?) and this PCI card also cured my problem of the DVD-ROM drive not finding a free DMA and IRQ.
So I am set to compile awesfx and test it on a card which I am certain does not need isapnp because it is not isa, and then on an AWE32 with and without initialization in DOS, to see if it really needs to be DOS or isapnp initialized. Supposedly the sb driver initializes the card itself. The mad16 definitely did so for the opti 931 and a cs4232 appeared to do the same (but no sound came out).
Ubuntu linux did not find our ISA ethernet or sound cards.
[Kapil] As far as I know "automatic" detection of ISA cards is fraught with problems. You need to "know" which driver to load and occasionally you also need to know other parameters (irq, ioports etc.).
I replaced the ethernet card with PCI. The ISA sound card is a Crystal which I could not get to make sound when I manually insmodded with what I hoped were the correct parameters, but someone said to try aumix in case it starts with 0 volume. Ubuntu is not my main problem, just tried to test a sound card with it. It came from a friend and probably works.
[Heather] Crystal sound isn't an emu10k1, that'd be a module in the sounds area named cs(some numbers). Probably cs4232 since I find it shown in more of my kernels, but cs423x or cs4281 are possible. It won't be a cs46xx - that's a PCI card.
[Kapil] In your case, since you "know" that you have an SB Live card, you can do "modprobe snd-emu10k1" and that should be enough.
The SB Live card is since yesterday working with OSS in a different computer in a small Slackware-7.1 based distribution. insmod soundcore insmod emu10k1 did it. Replacing the SB awe64 ISA card with the PCI card also let Win98FE start booting again, and fixed a problem with the DVD-ROM drive, which no longer has to disable DMA access or wait for IRQ to time out. I had three ISA cards in there, now only two. And PCI video, ethernet and scsi. I think the awe64 was grabbing DMA 0 and/or 1, which the DVD-ROM drive needed. I am losing track - at one point I also had an awe32 in there.
[Kapil] After that "sfxload" should be used to load the wavetable with the appropriate soundfont to play your midi file.
The author of awesfx wrote to tell me where to find source code in .tar.gz format after the .bz2 package failed to download completely (premature EOF - some code put in by bzip2) and I need to compile it in order to have sfxload.
[Kapil] I think playmidi has a switch to indicate the AWE card output, but you need to set up the oss emulation mode. However, you can directly use the ALSA sequencer via "pmidi".
I will let you know when I succeed in getting sound from a midi file. Thanks for the help.
I am not using ALSA, but OSS. I compiled playmidi myself to use AWE32 as default. The later version (5) of awesfx works with ALSA, version 4 does not but will work for OSS. awesfx is said to work with awe32/64 and Live cards, but the sound banks are different for the Live cards (of which I just got another at a yard sale in case a future computer balks at ISA).
On another computer I had to disable USB support in BIOS to get the ISA sound card to work. On this one I could disable USB, get the ISA card working, and reenable USB, and sound still worked in linux but Windows would not boot at that point (I had also added two more ISA cards but those were not the issue). I don't really know what happened but the PCI sound card fixed it. Now I need to upgrade Win98FE to SE in order to use the Live card.
Someone said DOS assigns DMA to all PCI cards, maybe Windows did the same and ran out?
I will report back when I get sfxload and midi working.
I have done some more experimenting on the ISA AWE cards. I have a Vibra16 CT3930 which has jumpers (not pnp) and it is the only one that initializes AWE32 in DOS and plays AWE in DOS. I have two CT3600s one of which is AWE32 and has 512K free RAM and the other SB32 without the free RAM, but all three cards have two SIMM slots (with 2x4MB) - one had a jumper to enable this RAM, the others did not.
The CT3600s and two AWE642 (4520) play awe in a DOS box under Win98, which means Windows is initializing the awe part. They play all but AWE in plain DOS. I have not yet tried the Vibra16 in linux with playmidi.
None of these cards needed sound banks loaded in DOS or Windows (unless Windows loads its own automatically) so I don't think that is my problem, I think it is initialization.
I got Creative's CTCU.ZIP (at the pipeline driver site) and played with it for a long time. I was able to get both CT3600's working in a computer where they had conflicts by resetting the MPU IRQ and DMA with CTCU and then running CTCM. The AWE32 retains these settings permanently, the SB32 has to have them reset every time. I also had to disable the gameport by running ctcu and ctcm (and possibly the IDE secondary controller) to get them to work - otherwise DIAGNOSE (SB16 - similar to CTCM but cannot disable things) cannot find a free address on one card or a free IRQ on the other card. They both came set to MPU 300 and IRQ 10. One is now IRQ5. I can now use these cards in linux with the same settings that work in DOS, except for AWE, which works in neither despite being set (apparently) by CTCM (from ctpnp.cfg file, which I edited manually).
The two AWE64s refuse to permanently change their IRQ settings and Diagnose tells me IRQ5 is taken - by the card, somehow, perhaps for the second 32 voices? I have not managed to disable whatever takes up IRQ5 and they won't work at all on this computer but work on other computers. (One is lacking FM synthesis, so who cares). But they ought to work in linux where the PCI cards are more polite about grabbing IRQs, if I can get AWE initialized, probably with isapnp.
With the remodeled CT3600 AWE32 in this computer, Win98FE boots correctly and makes noises, and the DVD-ROM drive is no longer complaining about IRQs and DMA. IRQ5 DMA 1 and 5.
I found sbldos.zip - DOS drivers for the PCI SB Live - not yet tried. Win98FE has no drivers, SE does.
and a cs4232 appeared to do the same (but no sound came out).
I still have to try the Vibra16 CT3930, which is not pnp, in linux, with playmidi. (FIrst I had to run some experiments with video cards and mplayer and DVDs, which led me to conclude that you don't need more than 4MB RAM, and that an ATI AGP card with 4MB and no heat sink, and to a lesser extent a PCI Voodoo with 16MB RAM and heat sink, works much better than one with 64MB RAM and a fan).
I was able to disable IDE controller and gameport with jumpers on this card.
Ubuntu linux did not find our ISA ethernet or sound cards.
It did find the PCI card that played silently in my linux, and adjusted the volume so it works now (Trident).
None of these cards needed sound banks loaded in DOS or Windows (unless Windows loads its own automatically) so I don't think that is my problem, I think it is initialization.
The non-pnp Vibra16 CT3930 sound card, which should not need pnp initialization, plays AWE in DOS but not in linux. It has 1MB GM (general midi) sound onboard so should not need sound loaded. It also plays silently with playmidi in linux. I made character device sequencer.
insmod sb io=0x220 irq=5 dma=1 dma16=5 insmod awe_wave
One person also put mpu_io=0x620 on the sb line.
I suspect my problem is that I compiled playmidi wrong. Someone with a plain SB16 card said that FM synthesis is broken. I remarked out a bunch of lines and parts of lines referring to things I did not want, so I would not have to install GTK and other libraries related to producing a fancy graphical output rather than just sound, and probably also broke the AWE part. There is a precompiled playmidi that worked for other people but not for me which I can also try to get working.
At the same site as the awesfx utilities for loading sound banks (awesfx-0.5.0d.tar.gz source - 94K)), I found an alternative midi player in the package awemidi-0.4.3c.tgz (366K) which I will attempt to compile (hopefully it can be configured NOT to need the GTK-based interface or someone here can suggest how to modify Makefile properly to avoid it). The player is 'drvmidi'.
The author suggests that if you have a pnp card you can initialize it in DOS and then use loadlin. I have four pnp AWE cards. I downloaded some more AWE32 drivers, which are available at a Finnish site - 130-AWE1.ZIP through 4.ZIP, and also awe_REV4.zip (all from 1995) and some more faq and info files, and will try to get these cards playing AWE in DOS. I also found sbldos.zip - DOS sblive drivers, for my two PCI (non-pnp) cards with a similar EMU80?? awe chip.
There is also an sb64basic.exe (the site was not working when I tried) and, likewise inaccessible yesterday, 700031A.exe through E.exe for AWE32 (hopefully for DOS not just Windows), A being drivers and C utilities.
You cannot initialize these cards in Win98 and then reboot to DOS and keep them initialized - I tried that too.