[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

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.

Play files from CLI

For playing MIDI (.mid) files under Command Line Interface, you can use a aplaymidi command from slackware, or download and install pmidi from http://slackbuilds.org . The both programms is very similar in use and syntax. To play MIDI via aplaymidi:

do

aplaymidi -l

you get something like this:

 aplaymidi -l
 Port    Client name                      Port name
 14:0    Midi Through                     Midi Through Port-0
 16:0    SB Audigy 2 Value [Unknown]      Audigy MPU-401 (UART)
 16:32   SB Audigy 2 Value [Unknown]      Audigy MPU-401 #2
 17:0    Emu10k1 WaveTable                Emu10k1 Port 0
 17:1    Emu10k1 WaveTable                Emu10k1 Port 1
 17:2    Emu10k1 WaveTable                Emu10k1 Port 2
 17:3    Emu10k1 WaveTable                Emu10k1 Port 3

now you must define hw wavetable port for programm and midi file to play:

 aplaymidi -p 17:0 BBEE.MID

To play another types of files ( .wav .flac .mp3 and so on) you can use “play” command. in default it use default sound card for output.

play loona.mp3
 
loona.mp3:
 
 File Size: 3.44M     Bit Rate: 112k
  Encoding: MPEG audio    
  Channels: 2 @ 16-bit   
Samplerate: 44100Hz      
Replaygain: off         Artist: Loona
  Duration: 00:04:05.48  Title: Hijo de la La Luna

You also can use mixer for change volume:

alsamixer

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)

Firstly, make a file called sound.conf under /etc/modprobe.d/ :

##alias char-major-116 snd
options snd cards_limit=2 slots=snd-emu10k1,snd-hda-intel
# LHB6.mOmgEN0gox0:SBLive! 5.1 Digital Model SB0220
alias snd-card-0 snd-emu10k1
alias sound-slot-0 snd-emu10k1
# W60f.x8s5HMdIibD:82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
alias snd-card-1 snd-hda-intel
alias sound-slot-1 snd-hda-intel
 
##options snd-emu10k1 enable=1 index=0 max_buffer_size=756
options snd-emu10k1 enable=1 index=0 max_buffer_size=1750
 
options snd-hda-intel enable=1 index=1

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:

go to /usr/src/~linux - that is your linux source.

arch/x86/include/asm/dma.h

change in string:

/* 4GB broken PCI/AGP hardware bus master zone */
     #define MAX_DMA32_PFN ((4UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)
 
   
change 4UL to 2UL:
  /* 4GB broken PCI/AGP hardware bus master zone */
     #define MAX_DMA32_PFN ((2UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)
 

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;  

And then there is one else thing: default memory size for soundfonts is 128 Mb. If you want to increase it, you must create a sound.conf file in /etc/modprobe.d/

write in file /etc/modprobe.d/sound.conf :

options snd-emu10k1  max_buffer_size=1750     
 

where max_buffer_size reffers to amount of RAM dedicated to soundfonts, in megabytes. in that case its about 1.7 Gb.

after that you can use up to 2 Gb RAM for soundfonts loading ( when define that in max_buffer_size, and do restart).

Useful Links:

Sources

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

Rewrited with used materials from “Links” and LinuxQuestions.org Slackware forum, especially user Drakeo help — John Ciemgals 2014/03/19 01:15

Edited by — mfillpot