...making Linux just a little more fun!

<-- 2c Tips | TAG Index | 1 | 2 | 3 | 4 | 5 | 6 | Knowledge Base

The Answer Gang

By Jim Dennis, Jason Creighton, Chris G, Karl-Heinz, and... (meet the Gang) ... the Editors of Linux Gazette... and You!

(?) playmidi plays silently

From sindi keesan

Answered By: sindi keesan, copied to BasicLinux: baslinux@lists.ibiblio.org

But trimmed since we see the whole thread above :) -- Heather
PLAYMIDI PLAYS MIDIS NOW!!!!! (So does drvmidi).
Short summary to date: Playmidi was playing silently on my AWE32 card. I suspected that I had compiled playmidi wrong (FM synthesis was said to be broken, and I compiled by remarking out anything in Makefile referring to X, gtk, or ncurses). Someone at your list said I needed to load a sound bank with sfxload. I thought it was not really needed for the card that worked in DOS without me loading anything into it. I was also told to initialize my pnp cards, so I tried first with the only jumpered AWE3(2 I have (CT3930 Vibra16), which does not need initialization and works in DOS (the others do not yet, won't do AWE initialization in DOS). aweutil /s initializes the card - won't play AWE without that.
I was indeed getting silence because I had not loaded any sound banks (fonts) into my AWE card. See below for the details. Drvmidi is much easier to compile without GTK or ncurses than is playmidi, and does not require libc5 like playmidi did but both work now.

(?) 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.

(!) (This was not needed - perhaps only for external midi devices)

(?) I found an alternative midi player in the package awemidi ... The player is 'drvmidi'.

(!) I compiled awemidi-0.4.3c.tgz (which is only 70K - very simple Makefile.sample could be edited to remark out all references to both ncurses and gtk/X11, unlike playmidi which insisted on them) and got drvmidi which also played silently. I downloaded the source code for awesfx-0.50.d and it would not configure because it wanted alsa, so I got version 0.4.4 and it compiled perfectly (just type make, no configure needed for this version). All the files compiled statically by default except for needing glibc/libcm/ldlinux.
I found in the DOS package (s64basic.exe - just run it to install SB16 with AWE support then delete the windows directories) along with aweutil.com one sound bank synthgm.sbk.
sfxload synthgm.sbk (other sound banks are at the driver site)
Now both drvmidi and the playmidi that I compiled play midis now with awe, that sound just as good as the DOS players. SB16 must have been loading this sound bank without me knowing it.
The precompiled playmidi apparently predated the AWE addition and works by default on an external midi device. Only other options were gravis ultrasound or FM synthesis. THis is why it played silently, and the playmidi I compiled DOES work for AWE but needed the sound bank installed.
Thanks for this suggestion. I have learned a lot along the way. I still need to try the other AWE cards (that won't work yet in DOS but do in Windows) with linux.

I am successfully playing midi files in linux without any need for isapnp. The solution was to get newer versions of ctcu.exe and ctcm.exe (Creative's ISA configuration utility and manager) as found in ctcmbbs.exe, which comes inside s64basic.exe. I had replaced those files with files from ctcu.zip because of a corrupt download of s64basic.exe in which those two files would not work. The good ones are from 1997.
To get this going in DOS, run s64basic.exe and follow instructions to make a ctcm directory. (If you don't actually plan to use the card in DOS, it can be separate, otherwise within SB16). Run ctc -- modify any settings, test them - A220 I5 D1 H5 E620 worked for me and I was able to pick an audio configuration with no midi port at all (300 or 330) and to disable game port and controller) followed by ctcm. Copy ctpnp.cfg to the sb16 directory. Run diagnose and let it edit autoexec.bat and config.sys. I remarked out what it puts into config.sys and anything about ctcm in autoexec.bat and instead aded to autoexec.bat the line c:\ctcm\ctcm (with or without /s). Leave the set sound and set blaster and other settings, and diagnose, mixerset, and aweutil /s, which initializes awe32 (tho it did not used to do so).
After exiting ctcu, run ctcm to load the new settings. If you have a separate ctcm directory, copy ctpnp.cfg to the sb16 directory. Diagnose sets up DOS to run from SB16 directory.
I was then able, on both AWE32 and SB32 cards, to play AWE files with the 'diagnose' utility and with three DOS midi players in AWE mode. (One of them refused to play with io set to 240 but worked at 220). PMB MSP and CDP.
I booted into linux with loadlin and insmodded the usual sb modules, and then awe_wave, which loaded for the first time.
I used sfxload to load synthgm.sbk (it needed the path to find it) and then drvmidi to play it. I used the vol control on the radio which I am using as a speaker (aux input) to adjust volume.
In both DOS and linux, the radio makes regular clicking noises when I am not playing a midi file but otherwise it all works perfectly.
I have posted awesfx and drvmidi packages for glibc2.2.5 (statically compiled otherwise) at http://keesan.freeshell.org. s64basic.exe can be found at several places on the web (search by name) including pipeline in Australia.
This was not yet tested on AWE64 and I have not yet attacked the PCI card SB Live, for which Creative also provides DOS drivers (sbldos.zip).
If you do not set up SB in DOS first, you will have to deal with isapnp. I tried for a couple of hours to edit the isapnp.conf file produced by pnpdump (isapnp /etc/isapnp.conf) but kept getting IRQ or DMA or IO conflicts since I don't know what I am doing.
I think only the AWE part of SB (and maybe FM synthesis) needs to be initialized (in DOS with ctcm or in linux with isapnp) because I was able to play wav and mp3 files in linux after I booted DOS without system files. I was also able to play wav and mp3 files on an Opti 931 (mad16) and an ESS 1868 (sb) in linux without initializing the sound card first.
The ES1868 has an IDE controller which would have to be disabled somehow if you want to use the onboard secondary controller in linux as hdc/hdd instead of hdf/hdg. So do many other older isapnp cards. The non-pnp ISA cards have jumpers to disable things with, much easier.

keesan (at) sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org
Normally I trim people's sigs entirely, sometimes I leave a scrap in. In this case - people ask us now and then about whether there are any decent public-access or pay-by-call providers, maybe this will answer some of them too.
And with that, sindi, welcome to the Answer Gang. Tell the bartender your drink of choice - you've earned it! -- Heather

This page edited and maintained by the Editors of Linux Gazette
HTML script maintained by Heather Stern of Starshine Technical Services, http://www.starshine.org/

Each TAG thread Copyright © its authors, 2005

Published in issue 116 of Linux Gazette July 2005

<-- 2c Tips | TAG Index | 1 | 2 | 3 | 4 | 5 | 6 | Knowledge Base