[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.
Action disabled: register

Welcome to the Slackware Documentation Project

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 than 1 Gb for soundfonts - 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