---------------------------------------------------------------------- I have been working on and off for sometime trying to get OPL3 FM Synth (NOT the WaveTable Synth) to work under ALSA with a AOpen (I'm fairly sure) Ymf744B Card. I have even gone as far as writing some simple code to communicate directly with the /dev/dmfm (/dev/sound/dmfm) device and thus at least verify that the OPL3 was "reachable".
My basic setup is the default asound startup script, modified to modprobe oss modules and snd-opl3-synth. The kernel driver is the latest CVS as of The End of August, and the sbiload is the latest cvs version. When I am trying to get the OPL3 FM Synth to work, I use a simple script to run sbiload with the std and drum patches as follows: /usr/bin/sbiload -p65:0 -v $1 --opl3 \ /usr/share/alsa/banks/opl3/drums.o3 \ /usr/share/alsa/banks/opl3/std.o3 Once the Patches are loaded, then I try to run pmidi and playmidi to see if ALSA and OSS midi is now working. pmidi -p 65:0 W2Humans.mid and playmidi [-r] W2Humans.mid Both seem to "hang" for 3 minutes(the length of the clip) and playmidi -r seems to indicate that indeed the player thinks the midi file is playing. No sound. :( It seemed like the midi channel might be muted. So I have double checked to make sure all the mixer controls were turned on and up, just in case. I recall some previous post mentioning a synth, midi, or a FM mixer control; none of which I can manage to find, and the ones I have found (master*,wave,pcm,external,cd,etc) are unmuted and have been tested turned all the way up. If anyone can help/share experiences it would be appreciated. It seems that there is at least one person out there on this list with a similar problem with the same card(first appearing in April), and I was curious how far he had managed to get with the OPL3. I have tried to include text/links of various pieces of information, which might help in a diagnosis. And a "Test" program for accessing the direct FM device, in a last ditch attempt to make sure I could talk to the OPL3 at least. The error output I get is included. Thanks Philip Thiem Loaded Modules ---------------------------------------------------------------------- snd-seq-midi snd-seq-oss snd-seq-midi-event snd-pcm-oss snd-mixer-oss snd-opl3-synth snd-seq-instr snd-seq-midi-emul snd-seq snd-ainstr-fm snd-ymfpci snd-pcm snd-mpu401-uart snd-rawmidi snd-opl3-lib snd-hwdep snd-seq-device snd-timer snd-ac97-codec snd soundcore /etc/modutils.conf(relavent) ---------------------------------------------------------------------- ####################################### #ALSA Core ####################################### # ALSA portion alias char-major-116 snd options snd snd_cards_limit=1 snd_device_mode=660 snd_device_gid=29 # OSS/Free portion alias char-major-14 soundcore ####################################### #ALSA Drivers ####################################### # ALSA portion alias snd-card-0 snd-ymfpci # OSS/Free portion alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss pmidi -l gives ---------------------------------------------------------------------- Port Client name Port name 64:0 External MIDI 0 MIDI 0-0 65:0 OPL3 FM synth OPL3 Port /proc/pci and /proc/ioports output ---------------------------------------------------------------------- Bus 0, device 9, function 0: Multimedia audio controller: Yamaha Corporation YMF-744B [DS-1S Audio Controller] (rev 2). IRQ 5. Master Capable. Latency=32. Min Gnt=5.Max Lat=25. Non-prefetchable 32 bit memory at 0xdb000000 [0xdb007fff]. I/O at 0xdc00 [0xdc3f]. I/O at 0xe000 [0xe003]. dc00-dc3f : Yamaha Corporation YMF-744B [DS-1S Audio Controller] dc00-dc01 : OPL2/3 (left) dc02-dc03 : OPL2/3 (right) dc20-dc21 : MPU401 UART e000-e003 : Yamaha Corporation YMF-744B [DS-1S Audio Controller] e400-e43f : 3Com Corporation 3c905 100BaseTX [Boomerang] e400-e43f : 00:0a.0 /proc/asound/version ---------------------------------------------------------------------- Advanced Linux Sound Architecture Driver Version 0.9.0rc3. Compiled on Sep 4 2002 for kernel 2.4.19-xfs with versioned symbols. /prov/asound/seq/clients ---------------------------------------------------------------------- Client info cur clients : 4 peak clients : 5 max clients : 192 Client 0 : "System" [Kernel] Port 0 : "Timer" (Rwe-) Port 1 : "Announce" (R-e-) Connecting To: 63:0 Client 63 : "OSS sequencer" [Kernel] Port 0 : "Receiver" (-we-) Connected From: 0:1 Client 64 : "External MIDI 0" [Kernel] Port 0 : "MIDI 0-0" (RWeX) Client 65 : "OPL3 FM synth" [Kernel] Port 0 : "OPL3 Port" (-We-) Port 1 : "OPL3 OSS Port" (-we-) /proc/asound/oss/sndstat ---------------------------------------------------------------------- Sound Driver:3.8.1a-980706 (ALSA v0.9.0rc3 emulation code) Kernel: Linux werg 2.4.19-xfs #10 Wed Sep 4 16:03:58 CDT 2002 i686 Config options: 0 Installed drivers: Type 10: ALSA emulation Card config: Yamaha DS-XG PCI (YMF744) at 0xc8907000, irq 5 Audio devices: 0: YMFPCI (DUPLEX) Synth devices: 0: OPL3 FM Midi devices: 0: MPU-401 (UART) Timers: 7: system timer Mixers: 0: mixer00 /proc/asound/card0/oss_mixer ---------------------------------------------------------------------- VOLUME "Master" 0 BASS "" 0 TREBLE "" 0 SYNTH "" 0 PCM "PCM" 0 SPEAKER "PC Speaker" 0 LINE "Line" 0 MIC "Mic" 0 CD "CD" 0 IMIX "" 0 ALTPCM "" 0 RECLEV "" 0 IGAIN "Capture" 0 OGAIN "" 0 LINE1 "Aux" 0 LINE2 "" 0 LINE3 "" 0 DIGITAL1 "Digital" 0 DIGITAL2 "Digital" 1 DIGITAL3 "" 0 PHONEIN "Phone" 0 PHONEOUT "" 0 VIDEO "Video" 0 RADIO "" 0 MONITOR "" 0 alsamixersettings ---------------------------------------------------------------------- http://www.icequake.net/~witwerg/asound.state DMFM Code(I'm not sure how "correct" this code is) ---------------------------------------------------------------------- const char soundfile[] = "/dev/dmfm"; int main() { int fmdev; fmdev = (soundfile, O_WRONLY); if (fmdev < 0) { perror("Opening Device"); exit(1); } if (ioctl(fmdev, 0x20) == -1) { perror("Resetting Device"); } if (ioctl(fmdev, 0x25, 0x01) == -1) { perror("To OPL3 mode Device"); } close(fmdev); perror("Done"); } perror then gives me the following errors Resetting Device: Invalid argument To OPL3 mode Device: Invalid argument GPG Pub Key Archived at wwwkeys.us.pgp.net Isn't it obvious lumberjacks love traffic lights?
msg04675/pgp00000.pgp
Description: PGP signature