/|\

Welcome to the Slackware Documentation Project

This is an old revision of the document!


Set Up Sound Blaster Live! 5.1 & Audigy Rx in Slackware

This HOWTO is based on setup experience with following hardware:

  • Creative Labs Sound Blaster Live! 5.1 ( SB0060)
  • Creative Inspire T3100 2.1 Speakers
  • Intel DG965SS motherboard
  • Intel Core 2 Duo 2.2 GHz E4500 CPU
  • 3 Gb RAM, 500 Gb HDD, Slackware 14.0 32bit Full install, generic kernel.
  • 4 Gb RAM, 1 Tb HDD, Slackware64 14.1 - 64 bit Full install, default huge kernel.
  • Creative Labs Sound Blaster Audigy Rx ( SB1550 )PCIe on ASUS R8H61/i3 - 3220/ 16 Gb RAM / Slackware64 14.1

Installation and Basic Configuration

  • Shutdown the computer
  • Insert the Sound Blaster card into a free PCI slot ( Audigy - in PCIe slot) on your mothherboard.
Try not to block the existing cards' ventilation.

I usually try to put the sound card in the “lowest” slot, most distant from the CPU, and close to the bottom of the case.

  • When the Sound Blaster card has been installed and secured with a bracket screw, you may turn the computer on and log into Slackware.
  • After login, you will have working sound from your new sound card.
    • In order to obtain full control, do the following (in KDE): click on “kmixer > mixer > settings > configure channels…”, and drag & drop all channels you need from the “Available channels” window to the “Visible channels”.

WaveTable MIDI Configuration

Now it's time to set up the WaveTable feature:

An example:

#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local startup commands in here.  Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
 
echo "SB synth module load!"
/sbin/modprobe snd_emu10k1_synth
 
echo "sleep for LivE! appear"
sleep 5
 
echo "Load 8 Mb midi patch set for SB Live! 5.1 soundcard!"
 
#/usr/local/bin/asfxload /usr/local/share/sounds/sf2/8mbgmsfx.sf2
/usr/local/bin/asfxload /usr/local/share/sounds/sf2/WeedsGM3.sf2
 
echo "Pause ***** Sleep 10 ********"
sleep 10
  • You can comment the “sleep” command (using a # character at the beginning of the line) - it pauses the computer for N seconds. I added that “sleep” to get time to check whether the soundfont is being loaded without errors during startup.
  • The command “modprobe snd_emu10k1_synth” is needed here, because without it, I have experienced the error “No Emux synth hwdep device is found” when trying to load a soundfont at this stage of the boot.
    • When i try to load a soundfont after I login to KDE, it succeeds without requiring that “snd_emu10k1_synth” commandline in rc.local, but as I want to load a soundfont automatically at startup, I load that module as shown in the example code)
  • After these preparations and a restart, everything should be working and you can use your MIDI WaveTable device.

Playing MIDI

For playing MIDI (.mid) files you can use the Audacious program - in KDE that can be found under Start > Multimedia > Audacious (Music Player).

  • Start Audacious, and choose File > Preferences
  • Choose Plugins tab, then Input tab, and choose AMIDI-Plug (MIDI Player)
  • In the AMIDI-Plug Settings window, choose Preferences, then ALSA backend
  • You will see ALSA output Ports. Choose (by ticking the checkbox) 17:0 Emu10k1 WaveTable Emu10k1 Port 0
  • Press Ok and close all configuration dialogs.
  • Now you can play your MIDI files in Audacious.

If you encounter any problems, or found an error in this HOWTO, please contact m e: john AT sten.lv.

TroubleShooting

Diagnostic and information gathering

For first -try gathering some useful information about your situation:

 lspci

Gives you info about hardware devices sits on PCI and PCIe bus of your computer

 cat /proc/asound/cards

gives you information about cards found your sound system and its numerating. 0 card is be default card.

there is also some another useful commands:

 aplay -l

and

 aplay -L

and even

 lsmod

Make a right soundcard as first (default)

Problems with SoundFonts

SB Live! And Audigy Rx use similar DSP - emu10k based, and looks like have similar problems. As i read, problem root is in that fact, a DSP use 31 bit in memory address instead of 32 bits - and it causes problem on linux x64 systems with more than 2 (3?) Gb RAM. I encounter that with 4 Gb RAM on Slackware64 14.1 - the symptoms is that, you cannot load soundfont larger than 16 Mb - asfxload on trying that writes: sfxload: no memory left while asfxload -M gives something like this: DRAM memory left = 115576 kB it means - about 100+ megabytes free ram. but you really cannot load even 30 Mb soundbank.

Ok, what is workaround? there is two: decrease memory size used by system at boot stage to 2 Gb - use at lilo kernel parameter

memmap=2048M\\$6144M

other is more usable - change kernel source files and recompile kernel:

arch/x86/include/asm/dma.h

change in string:

<code bash>

/* 4GB broken PCI/AGP hardware bus master zone */

   #define MAX_DMA32_PFN ((4UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)
   
    </code>
   
change 4UL to 2UL:

<code bash>

/* 4GB broken PCI/AGP hardware bus master zone */
   #define MAX_DMA32_PFN ((2UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)
   
  </code> 
  
   after that need to recompile kernel. after that you get usable 1 Gb RAM for SB Live /Audigy Rx soundfonts.
   if you want more - you need edit also 
   
   sound/pci/emu10k1/emu10k1.c
   
      err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);          
    if (err < 0)                                                                
        return err;                                                             
    if (max_buffer_size[dev] < 32)                                              
        max_buffer_size[dev] = 32;                                              
    // else if (max_buffer_size[dev] > 1024)                                         
    //      max_buffer_size[dev] = 1024;                                            
    if ((err = snd_emu10k1_create(card, pci, extin[dev], extout[dev],           
                      (long)max_buffer_size[dev] * 1024 * 1024,                 
                      enable_ir[dev], subsystem[dev],                           
                      &emu)) < 0)                                               
        goto error;                                                 
 
 

you must comment that strings, as in upper block:

 else if (max_buffer_size[dev] > 1024)                                         
        max_buffer_size[dev] = 1024;  
 

after that you can use up to 2 Gb RAm for soundfonts loading.

Useful Links:

Sources

Originally written by — John Ciemgals 2013/02/07 04:50

Edited by — mfillpot