Jump to content

SB Live/Audigy Midi with ALSA mini-how-to (draft)


zero0w
 Share

Recommended Posts

  • Replies 34
  • Created
  • Last Reply

Top Posters In This Topic

TO-DO #1:

 

Ok I've tried editing modules.conf by adding either one of these lines:

 

post-install snd-emu10k1-synth /bin/sfxload /etc/midi/8MBGMSFX.SF2

post-install snd-emu10k1 /bin/sfxload /etc/midi/8MBGMSFX.SF2

 

No luck :( . I still cannot autoload soundfont at boot.

 

Over a discussion with LinuxExplorer, I have tried to take a look at the system service/device modules with "cat /proc/modules" at console, and here I'll list all the snd-* part:

 

1. snd-seq-midi 3680 0 (autoclean)

2. snd-emu10k1-synth 4220 1 (autoclean)

3. snd-emux-synth 25532 1 (autoclean) [snd-emu10k1-synth]

4. snd-seq-midi-emul 4880 0 (autoclean) [snd-emux-synth]

5. snd-seq-virmidi 2888 0 (autoclean) [snd-emux-synth]

6. snd-seq-oss 26176 1

7. snd-seq-midi-event 3208 0 [snd-seq-midi snd-seq-virmidi snd-seq-oss]

8. snd-seq 33264 2 [snd-seq-midi snd-emux-synth snd-seq-midi-emul snd-seq-virmidi snd-seq-oss snd-seq-midi-event]

9. snd-pcm-oss 36932 0

10. snd-mixer-oss 9016 0 [snd-pcm-oss]

11. snd-emu10k1 56592 1 [snd-emu10k1-synth]

12. snd-pcm 55808 0 [snd-pcm-oss snd-emu10k1]

13. snd-timer 9964 0 [snd-seq snd-pcm]

14. snd-util-mem 1280 0 [snd-emux-synth snd-emu10k1]

15. snd-rawmidi 12864 0 [snd-seq-midi snd-seq-virmidi snd-emu10k1]

16. snd-seq-device 3836 0 [snd-seq-midi snd-emu10k1-synth snd-emux-synth snd-seq-oss snd-seq snd-emu10k1 snd-rawmidi]

17. snd-ac97-codec 25508 0 [snd-emu10k1]

18. snd-hwdep 3840 0 [snd-emu10k1]

19. snd 24804 0 [snd-seq-midi snd-emux-synth snd-seq-virmidi snd-seq-oss snd-seq-midi-event snd-seq snd-pcm-oss snd-mixer-oss snd-emu10k1 snd-pcm snd-timer snd-util-mem snd-rawmidi snd-seq-device snd-ac97-codec snd-hwdep]

20. soundcore 3780 0 [snd]

 

No.2 item refers to the "snd-emu10k1-synth" module, but it seems that "post-install" with this "snd-emu10k1-synth" module in modules.conf didn't work; so I might guess, in ALSA 0.9 series the "snd-emu10k1-synth" needs to be replaced with another MIDI-related module name. For now I still need to enter the commandline in console after login to make MIDI play.

 

Or, the alternative is to execute a bash script whenever one logins to his/her account; or to modify /etc/profile, could this work?

Link to comment
Share on other sites

  • 3 months later...
Guest vaustein

This mini how-to worked great for me. I'm now using pmidi, playmidi, tkmidi, drvmidi, etc. to play MIDI files without a problem. Prior to this, I could only get MIDI sound via Timidity. Now my system has general MIDI playback support. My soundcard is an SB Audigy MP3.

 

I do not understand *why* this worked, though. I've been using the ALSA emu10k driver for as long as I've been using Mandrake 9 and never had MIDI playback. How did installing awesfx, drvmidi, and loading a soundfont bank fix the problem? I've been searching for a solution to the no-midi-playback problem for months, and I'm surprised this is what fixed it.

 

I'm really curious, so please do not spare any technical details.

 

vaustein

Link to comment
Share on other sites

The Timidity approach is a completely software-based synthesizer, so is Fluid Synth. While the awesfx package made use of SB Live/Audigy/AWE soundcards' hardware MIDI synthesizer capability. That's the main difference.

 

With Timidity and Fluid Synth, you can play MIDI via any soundcard that works on Linux, using CPU power to emulate software-based MIDI synthesizer. In other words, the hardware MIDI functions on SB Live/Audigy/AWE simply being left unused.

 

With awesfx (sfxload), it is using the hardware MIDI support provided by ALSA (more strictly, in OSS compatible mode, but let's not get into that). So it should be faster without wasting CPU power on MIDI emulation.

 

All these, however, might be obsolete in the future.

 

Since ALSA 1.0 plans to have Wavetable MIDI function built in as a common layer in the user space, using either software or hardware-based MIDI synthesis. So MIDI interface will be standardized across all Linux audio software and hardware in the future. The remaining difference is whether the MIDI function is software or hardware based, and the performance penalty (and latency) in software-synthesized MIDI.

Link to comment
Share on other sites

Guest vaustein

Thank you for your thoughtful and detailed reply. It's seems awkward that MIDI support on Linux is so weak right now. To get hardware wavetable support with an SB Audigy I had to enable the ALSA emu10k driver, then install the AWE driver on top of that. Alsa 1.0 can't come too quickly.

 

vaustein

Link to comment
Share on other sites

Well, ALSA has come a long way and it took over 2 years to complete the development from 0.5 to 0.9 series as it arrived 0.9.1 stable status only recently. From what I know, ALSA changed the API a lot in the past so many developers thought it's difficult to catch up to it. Hopefully the development from 0.9.x to 1.0 will be easier with a more stablizing API.

Link to comment
Share on other sites

Guest vaustein

Is there some way to stream raw MIDI data to my hardware MIDI device? I'm thinking of something like "cat midifile.mid > /dev/midi", which doesn't actually work. The reason is, I'm running dosemu and all MIDI output is streamed to a MIDI file. I'd like to stream its contents in turn to my MIDI device. But I'm not sure what the exact device file is (/dev/midi?).

 

Any ideas?

 

Thank you,

vaustein

Link to comment
Share on other sites

You may need Kalsatools to setup the output port for your external MIDI device (if you got one). I think you can go over the ALSA user mailing list for help on this.

 

As for /dev/midi, I am not sure. Perhaps /dev/sequencer will work?

 

EDIT: I have checked, both /dev/midi and /dev/sequencer do not work.... anyhow I haven't resorted to use 'cat' to play any midi file yet.

 

I don't do hand programming/hacking MIDI much :P .

But I will later since I need to work on a MIDI plugin.

Link to comment
Share on other sites

Well, I've made the leap to ALSA as well, for the most part. I haven't totally decided if I'm going to go back to OSS or not, but I'd like to try to stick to ALSA because it is the future, really... The next major kernel jump will have it, and that is a scary thought, since I could never get ALSA to sound as good as OSS.

 

I'm working on it, and I've got the method of installing and setting up ALSA on Debian down pat. If you need to know for some reason, let me know.

 

I would consider making a tutorial for this, but I have yet to try it on Mandrake 9.1, as my wife's sound card worked out of the box, so there is no need.

Link to comment
Share on other sites

  • 1 month later...

OK I have an original SB-Live value (non 5.1). I loved ALSA until MDK 9.1. Now the ALSA driver treats my card as an "audigy" card, and it doesn't work at all. Normal sound DOES work through oss (emu10k1) I have a Yamaha MU-10 tone generator, and the joystick midi port doesn't work under OSS. I also have a midisport 1x1 usb-midi port. I went through the whole deal with installing it and setting up for hotplug and it works. The problem is that the drivers linux loads for it are ALSA not OSS. DOH! So I know the usb-midi works now, but I'm still stuck with the alsa problem. I skimmed throuh the walkthrough, and I plan on trying the settings there, but I'm afraid it may not solve this problem. Please offer a suggestion to help me out and/or point me to the settings that will work for my card. Thanks in advance.

Link to comment
Share on other sites

Well all i can say is nevermind and kmix sucks. I found out that the snd-emu10k1 driver was working the whole time. the kmix applet would be muted after i installed alsa. However, what I didn't realize is that you had to move the sliders around. DUH! I should use aumix from now on, but kmix is more convenient. Main thing I don't like in the latest kmix is that it has 43 sliders on it. JEEZ! There's only 10 that I can even use with my card. Oh well, I'll live with it as long as i have my midi.

Link to comment
Share on other sites

As root, edit the file: /etc/profile and add the following before the last line:

 

/bin/sfxload -V100 /*your_path*/8mbgmgssfx.sf2

 

make sure you add a carriage return (don't remember if it's crucial or not but it doesn't hurt.

 

When you're done the last two lines of /etc/profile should look like this:

 

 

/bin/sfxload -V100 /*your_path*/8mbgmgssfx.sf2

 

unset i

 

 

Works great. Have fun.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...