You are not logged in.

#1 2010-02-06 14:07:22

BastiaanN
Member
From: Netherlands
Registered: 2009-11-11
Posts: 6

Upmixing stereo to 5.1 while allowing multiple programs to use sound

Hello All!

Recently switched to ArchLinux on both my laptop and desktop. It is really a great distro to use daily and I've haven't booted windows since! (although i use a virtual machine to use programs like Photoshop CS3 etc.)

Anyway, i'm having a issue with the sound. I have a 5.1 set connected to my soundcard (Creative Labs X-Fi Titanium series [EMU20k2] (rev 04)) and when a stereo source is being played i have no output to the subwoofer. This does not sound very sweet so i would like to up-mix everything that is not 5.1 to 5.1 so that all my speakers are being used including (and most importantly) my subwoofer.

I've found some nice configurations for this on the internet (also on the arch wiki i believe), when i use a custom configuration and start Firefox with flash and want to listen a song in totem after that, i have to close firefox first. If i do it the other way around, flash starts playing music but the sound is not getting up-mixed (e.g. it only plays on the two front speakers). This happens with multiple programs, also with vmware and totem (then vmware says it cannot connect to the audiocard).

Here is my current config:

pcm.upmixing {
    type route
## forwards to the mixer pcm defined below
    slave.pcm dmix51
    slave.channels 6

## "Native Channels" stereo, swap left/right
    ttable.0.1 1
    ttable.1.0 1
## original normal left/right commented out
#    ttable.0.0 1
#    ttable.1.1 1

## route "native surround" so it still works but weaken signal (+ RL/RF swap) 
## because my rear speakers are more like random than really behind me
    ttable.2.3 0.7
    ttable.3.2 0.7
    ttable.4.4 0.1
    ttable.5.5 0.7

## stereo => quad speaker "upmix" for "rear" speakers + swap L/R
    ttable.0.3 1
    ttable.1.2 1

## stereo L+R => join to Center & Subwoofer 50%/50%
    ttable.0.4 0.1
    ttable.1.4 0.1
    ttable.0.5 1
    ttable.1.5 1
## to test: "$ speaker-test -c6 -twav" and: "$ speaker-test -c2 -twav"
}

pcm.dmix51 {
    type dmix
    ipc_key 1024
# let multiple users share
    ipc_key_add_uid false 

    slave {

        pcm surround51    
        rate 48000
    
           channels 6

           period_time 0
                 period_size 1024
           buffer_time 0
           buffer_size 4096
    }
}

pcm.!default {
   type plug
   slave.pcm "upmixing"
}

pcm.dsp0 { 
   type plug
   slave.pcm "upmixing"
}

ctrl.dsp0 {
    type hw
     card 0
}

pcm.duplex {

   type asym
   playback.pcm "upmixing"

}

ctrl.duplex {
  type hw
  card 0
}

ctrl.!default {
    type hw
    card 0
}

What am i doing wrong? smile Any help is appreciated!

Offline

#2 2010-02-09 20:05:06

BastiaanN
Member
From: Netherlands
Registered: 2009-11-11
Posts: 6

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

No-one?

Offline

#3 2010-02-09 23:46:33

lymphatik
Member
From: Somewhere else
Registered: 2009-03-07
Posts: 119

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

try this one

pcm.snd_card {
     type hw
     card 0 # change to your cards number or name
}

#Filtering of bass useless for my setup
# http://alsa.opensrc.org/SurroundSound
# http://alsa.opensrc.org/index.php/Low-pass_filter_for_subwoofer_channel_(HOWTO)
# Arch Linux:  pacman -S ladspa blop swh-plugins libsamplerate tap-plugins-cvs cmt
# speaker-test -D upmix_20to51 -c 2 -t wav
# listplugins
# analyseplugin cmt
# http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html
# 6 channel dmix:

#pcm.upmix_20to51 {
#    type plug
#    slave.pcm lowpass_21to21
#    slave.channels 3
#    ttable {
#        0.0     1       # left channel
#        1.1     1       # right channel
#        0.2     0.5     # mix left and right ...
#        1.2     0.5     # ... channel for subwoofer
#    }
#}
#
#pcm.lowpass_21to21 {
#    type ladspa
#    slave.pcm dmix6
#    path "/usr/lib/ladspa"
#    channels 3
#    plugins {
#        0 {
#            id 1098 # Identity (Audio) (1098/identity_audio)
#            policy duplicate
#            input.bindings.0 "Input";
#            output.bindings.0 "Output";
#        }
#        1 {
#            id 1672 # 4 Pole Low-Pass Filter with Resonance (FCRCIA) (1672/lp4pole_fcrcia_oa)
#            policy none
#            input.bindings.2 "Input";
#            output.bindings.2 "Output";
#            input {
#                controls [ 300 2 ]
#            }
#        }
#    }
#}

pcm.dmix6 {
     type dmix
        ipc_key 1024
        ipc_key_add_uid false # let multiple users share otherwise doesnt work for mpd
        ipc_perm 0666 # for all users IPC permissions (octal, default 0600)
        slave {
                pcm snd_card # see below
                rate 48000
                channels 6
                period_time 0
                period_size 1024 # try 2048 against skipping
                buffer_time 0
                buffer_size 5120 # in case of problems reduce this
                                 # in case of skipping, try increasing
        }
    #disabled as it doesnt mix two channels together for LFE and Center
    #bindings {
        #0 0 # from 0 => to 0
        #1 1 # from 1 => to 1
    #0 2
    #1 3
    #2 4
    #3 5
       #}

     }

# upmixing: 
pcm.ch51dup {
        type route
        slave.pcm dmix6
        slave.channels 6
        ttable.0.0 1
        ttable.1.1 1
        ttable.0.2 1
        ttable.1.3 1
        ttable.0.4 0.5
        ttable.1.4 0.5
    #/wo low pass filter
        ttable.0.5 1
        ttable.1.5 1
    #for low pass filter
        #ttable.2.5 1
   }

#pcm.duplex {
#     type asym
#     playback.pcm "ch51dup" # upmix first
#     playback.pcm "dmix6"  # just pass to 6 channel dmix
#     capture.pcm "dsnoop:0" # doesn't work for me
#     capture.pcm "snd_card"
#}

# change default device:
pcm.!default {
     type plug
     #if only need bindings
     #slave.pcm "dmix6"
     slave.pcm "ch51dup"
}

# for aoss
#pcm.dsp "duplex"

#pcm.dsp1 "duplex"

Offline

#4 2010-02-13 14:03:42

BastiaanN
Member
From: Netherlands
Registered: 2009-11-11
Posts: 6

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

Thanks for your reply. I tried yours but that one doesn't seem to work either sad

Offline

#5 2010-02-13 15:28:15

Atragor
Member
Registered: 2009-02-28
Posts: 59

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

Just checked my config with three applications playing sound at the same time, seems that everything works fine. Hope it will work for you too:

pcm.!default {                               
  type asym                                  
  playback.pcm "upmix_20to21"                
  hint {                                     
    show on                                  
    description "Main device"                
  }                                          
}                                            

pcm.upmix_20to21 {
  type plug       
  slave.pcm lowpass_21to21
  slave.channels 3        
  ttable {                
    0.0 1                 
    1.1 1                 
    0.2 0.5               
    1.2 0.5               
  }                       
}                         
                          
pcm.lowpass_21to21 {      
  type ladspa             
  slave.pcm upmix_21to51  
  path "/usr/lib/ladspa"  
  channels 3              
  plugins {               
    0 {                   
      label "hpf"         
      policy none         
      input.bindings.0 "Input";
      output.bindings.0 "Output";
      input {                    
          controls [ 200 ]       
      }                          
    }                            
    1 {                          
      label "hpf"                
      policy none                
      input.bindings.1 "Input";  
      output.bindings.1 "Output";
      input {                    
          controls [ 200 ]       
      }                          
    }                            
    2 {                          
      id 1672 # 4 Pole Low-Pass Filter with Resonance (FCRCIA) (1672/lp4pole_fcrcia_oa)
      policy none                                                                      
      input.bindings.2 "Input";                                                        
      output.bindings.2 "Output";                                                      
      input {                                                                          
          controls [ 100 2 ]                                                           
      }                                                                                
    }                                                                                  
  }                                                                                    
}                                                                                      

pcm.upmix_21to51 {
  type plug       
  slave.pcm "softvol"
  slave.channels 6   
  ttable {           
    0.0 1 # front left
    1.1 1 # front right
    0.2 1 # rear left  
    1.3 1 # rear right 
    0.4 0.5 # center   
    1.4 0.5 # center   
    2.5 1 # subwoofer  
  }                    
}                      

pcm.softvol {
    type        softvol
    slave.pcm   "dmixer"
    control {           
        name    "Master"
        card    0       
    }                   
}

pcm.dmixer {
  type dmix
  ipc_key 4821
  ipc_key_add_uid false
  ipc_perm 0660
  slave {
    pcm "hw:0"
    rate 48000
    channels 6
    period_time 0
    period_size 1024
    buffer_time 0
    buffer_size 65535
  }
  bindings {
      0 0
      1 1
      2 2
      3 3
      4 4
      5 5
  }
}

Blop and CMT plugins should be installed if you need low-pass and high-pass filtering.

Last edited by Atragor (2010-02-13 15:33:29)

Offline

#6 2010-02-15 15:39:49

BastiaanN
Member
From: Netherlands
Registered: 2009-11-11
Posts: 6

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

I installed Blop,CMT and ladspa but with your config i do not get any sound at all. The error that i get is (translated from dutch) "Error reading/writing from sounddevice".

I've tried to use pulseaudio which solved this problem for me. However when i change the volume i get a weird whistle tone in the background of all my audio, what am i doing wrong there?

Offline

#7 2010-02-15 19:35:53

brebs
Member
Registered: 2007-04-03
Posts: 3,742

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

Give my version a whirl wink

It ultimately outputs to pcm "surround51", which is different to the others' examples above.

Edit: also check that nothing is using OSS (/dev/dsp*):

fuser -v /dev/snd/* /dev/dsp*

Last edited by brebs (2010-02-15 19:45:36)

Offline

#8 2010-02-16 09:21:12

BastiaanN
Member
From: Netherlands
Registered: 2009-11-11
Posts: 6

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

With your config i get the following error:

[root@bastiaan-pc bastiaan]# speaker-test -D upmix_20to51 -c 2 -t wav 

speaker-test 1.0.22

Playback device is upmix_20to51
Stream parameters are 48000Hz, S16_LE, 2 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 43 to 5461
Period size range from 3 to 2730
Using max buffer size 5460
Periods = 4
speaker-test: pcm_plug.c:388: snd_pcm_plug_change_channels: Assertion 'snd_pcm_format_linear(slv->format)' failed.
Aborted

fuser output:

[root@bastiaan-pc bastiaan]# fuser -v /dev/snd/* /dev/dsp*
Specified filename /dev/dsp* does not exist.
                     GEBRUIKER   PID SOORT PROGRAMMA
/dev/snd/controlC0:  bastiaan   4232 F.... mixer_applet2

listplugins (ladspa):

[root@bastiaan-pc bastiaan]# listplugins 
/usr/lib/ladspa/giant_flange_1437.so:
    Giant flange (1437/giantFlange)
/usr/lib/ladspa/product_1668.so:
    Signal Product (IAIA) (1668/product_iaia_oa)
    Signal Product (IAIC) (1669/product_iaic_oa)
    Signal Product (ICIC) (1670/product_icic_oc)
/usr/lib/ladspa/retro_flange_1208.so:
    Retro Flanger (1208/retroFlange)
/usr/lib/ladspa/sum_1665.so:
    Signal Sum (IAIA) (1665/sum_iaia_oa)
    Signal Sum (IAIC) (1666/sum_iaic_oa)
    Signal Sum (ICIC) (1667/sum_icic_oc)
/usr/lib/ladspa/dyson_compress_1403.so:
    Dyson compressor (1403/dysonCompress)
/usr/lib/ladspa/tape_delay_1211.so:
    Tape Delay Simulation (1211/tapeDelay)
/usr/lib/ladspa/allpass_1895.so:
    Allpass delay line, noninterpolating (1895/allpass_n)
    Allpass delay line, linear interpolation (1896/allpass_l)
    Allpass delay line, cubic spline interpolation (1897/allpass_c)
/usr/lib/ladspa/freq_tracker_1418.so:
    Frequency tracker (1418/freqTracker)
/usr/lib/ladspa/gong_beater_1439.so:
    Gong beater (1439/gongBeater)
/usr/lib/ladspa/gsm_1215.so:
    GSM simulator (1215/gsm)
/usr/lib/ladspa/zm1_1428.so:
    z-1 (1428/zm1)
/usr/lib/ladspa/harmonic_gen_1220.so:
    Harmonic generator (1220/harmonicGen)
/usr/lib/ladspa/sawtooth_1641.so:
    Bandlimited Sawtooth Oscillator (FA) (1641/sawtooth_fa_oa)
    Bandlimited Sawtooth Oscillator (FC) (1642/sawtooth_fc_oa)
/usr/lib/ladspa/inv_1429.so:
    Inverter (1429/inv)
/usr/lib/ladspa/dahdsr_2021.so:
    DAHDSR Envelope with Gate and Trigger (Audio-Rate Inputs) (2021/dahdsr_g+t_audio)
    DAHDSR Envelope with Gate and Trigger (Control Inputs) (2022/dahdsr_g+t_control)
    DAHDSR Envelope with Control Gate and Trigger (Control Inputs) (2038/dahdsr_cg+t_control)
/usr/lib/ladspa/am_pitchshift_1433.so:
    AM pitchshifter (1433/amPitchshift)
/usr/lib/ladspa/mod_delay_1419.so:
    Modulatable delay (1419/modDelay)
/usr/lib/ladspa/xfade_1915.so:
    Crossfade (1915/xfade)
    Crossfade (4 outs) (1917/xfade4)
/usr/lib/ladspa/pulse_1645.so:
    Bandlimited Variable Width Pulse Oscillator (FAPA) (1645/pulse_fapa_oa)
    Bandlimited Variable Width Pulse Oscillator (FAPC) (1646/pulse_fapc_oa)
    Bandlimited Variable Width Pulse Oscillator (FCPA) (1647/pulse_fcpa_oa)
    Bandlimited Variable Width Pulse Oscillator (FCPC) (1648/pulse_fcpc_oa)
/usr/lib/ladspa/fad_delay_1192.so:
    Fractionally Addressed Delay Line (1192/fadDelay)
/usr/lib/ladspa/sc4m_1916.so:
    SC4 mono (1916/sc4m)
/usr/lib/ladspa/fm_osc_1415.so:
    FM Oscillator (1415/fmOsc)
/usr/lib/ladspa/lowpass_iir_1891.so:
    Glame Lowpass Filter (1891/lowpass_iir)
/usr/lib/ladspa/flanger_1191.so:
    Flanger (1191/flanger)
/usr/lib/ladspa/notch_iir_1894.so:
    Mag's Notch Filter (1894/notch_iir)
/usr/lib/ladspa/sin_cos_1881.so:
    Sine + cosine oscillator (1881/sinCos)
/usr/lib/ladspa/adsr_1653.so:
    ADSR Envelope (1653/adsr)
/usr/lib/ladspa/fast_lookahead_limiter_1913.so:
    Fast Lookahead limiter (1913/fastLookaheadLimiter)
/usr/lib/ladspa/matrix_st_ms_1420.so:
    Matrix: Stereo to MS (1420/matrixStMS)
/usr/lib/ladspa/valve_1209.so:
    Valve saturation (1209/valve)
/usr/lib/ladspa/bandpass_iir_1892.so:
    Glame Bandpass Filter (1892/bandpass_iir)
/usr/lib/ladspa/ls_filter_1908.so:
    LS Filter (1908/lsFilter)
/usr/lib/ladspa/hilbert_1440.so:
    Hilbert transformer (1440/hilbert)
/usr/lib/ladspa/valve_rect_1405.so:
    Valve rectifier (1405/valveRect)
/usr/lib/ladspa/sync_pulse_2023.so:
    Clock Pulse Oscillator with Gate (FAPAGA) (2023/syncpulse_fapaga_oa)
    Clock Pulse Oscillator with Gate (FCPCGA) (2024/syncpulse_fcpcga_oa)
/usr/lib/ladspa/quantiser100_2029.so:
    Quantiser (100 Steps) (2029/quantiser100)
/usr/lib/ladspa/sequencer64_1675.so:
    Analogue Style 64 Step Sequencer (1675/sequencer64)
/usr/lib/ladspa/diode_1185.so:
    Diode Processor (1185/diode)
/usr/lib/ladspa/surround_encoder_1401.so:
    Surround matrix encoder (1401/surroundEncoder)
/usr/lib/ladspa/ringmod_1188.so:
    Ringmod with two inputs (1188/ringmod_2i1o)
    Ringmod with LFO (1189/ringmod_1i1o1l)
/usr/lib/ladspa/step_muxer_1212.so:
    Step Demuxer (1212/stepMuxer)
/usr/lib/ladspa/gate_1410.so:
    Gate (1410/gate)
/usr/lib/ladspa/decimator_1202.so:
    Decimator (1202/decimator)
/usr/lib/ladspa/noise.so:
    White Noise Source (1050/noise_white)
/usr/lib/ladspa/lcr_delay_1436.so:
    L/C/R Delay (1436/lcrDelay)
/usr/lib/ladspa/revdelay_1605.so:
    Reverse Delay (5s max) (1605/revdelay)
/usr/lib/ladspa/imp_1199.so:
    Impulse convolver (1199/imp)
/usr/lib/ladspa/phasers_1217.so:
    LFO Phaser (1217/lfoPhaser)
    4 x 4 pole allpass (1218/fourByFourPole)
    Auto phaser (1219/autoPhaser)
/usr/lib/ladspa/svf_1214.so:
    State Variable Filter (1214/svf)
/usr/lib/ladspa/chebstortion_1430.so:
    Chebyshev distortion (1430/chebstortion)
/usr/lib/ladspa/adsr_1680.so:
    ADSR Envelope with Gate and Trigger (1680/adsr_g+t)
/usr/lib/ladspa/highpass_iir_1890.so:
    Glame Highpass Filter (1890/highpass_iir)
/usr/lib/ladspa/foverdrive_1196.so:
    Fast overdrive (1196/foverdrive)
/usr/lib/ladspa/plate_1423.so:
    Plate reverb (1423/plate)
/usr/lib/ladspa/impulse_1885.so:
    Nonbandlimited single-sample impulses (Frequency: Control) (1885/impulse_fc)
/usr/lib/ladspa/delayorama_1402.so:
    Delayorama (1402/delayorama)
/usr/lib/ladspa/cmt.so:
    Ambisonic Decoder (B-Format to Cube) (1092/bf2cube)
    Ambisonic Decoder (B-Format to Quad) (1091/bf2quad)
    Ambisonic Decoder (B-Format to Stereo) (1090/bf2stereo)
    Ambisonic Decoder (FMH-Format to Octagon) (1093/fmh2oct)
    Ambisonic Encoder (B-Format) (1087/encode_bformat)
    Ambisonic Encoder (FMH-Format) (1088/encode_fmh)
    Ambisonic Rotation (B-Format, Horizontal) (1094/bf_rotate_z)
    Ambisonic Rotation (FMH-Format, Horizontal) (1095/fmh_rotate_z)
    Amplifier (Mono) (1067/amp_mono)
    Amplifier (Stereo) (1068/amp_stereo)
    Amplitude Modulator (1070/am)
    Analogue Voice (1221/analogue)
    Canyon Delay (1225/canyon_delay)
    Disintegrator (1846/disintegrator)
    Dynamic Sledgehammer (1848/sledgehammer)
    Echo Delay Line (Maximum Delay 0,01s) (1053/delay_0,01s)
    Echo Delay Line (Maximum Delay 0,1s) (1054/delay_0,1s)
    Echo Delay Line (Maximum Delay 1s) (1055/delay_1s)
    Echo Delay Line (Maximum Delay 5s) (1056/delay_5s)
    Echo Delay Line (Maximum Delay 60s) (1057/delay_60s)
    Envelope Tracker (Maximum Peak) (1080/track_max_peak)
    Envelope Tracker (Maximum RMS) (1081/track_max_rms)
    Envelope Tracker (Peak) (1078/track_peak)
    Envelope Tracker (RMS) (1079/track_rms)
    FMH-Format to B-Format (Discards RSTUV Channels) (1089/fmh2bf)
    Feedback Delay Line (Maximum Delay 0,01s) (1058/fbdelay_0,01s)
    Feedback Delay Line (Maximum Delay 0,1s) (1059/fbdelay_0,1s)
    Feedback Delay Line (Maximum Delay 1s) (1060/fbdelay_1s)
    Feedback Delay Line (Maximum Delay 5s) (1061/fbdelay_5s)
    Feedback Delay Line (Maximum Delay 60s) (1062/fbdelay_60s)
    Freeverb (Version 3) (1123/freeverb3)
    Granular Scatter Processor (1096/grain_scatter)
    Hard Gate (1845/hard_gate)
    High Pass Filter (One Pole) (1052/hpf)
    Identity (Audio) (1098/identity_audio)
    Identity (Control) (1099/identity_control)
    Lo Fi (1227/lofi)
    Logistic Map Control Generator (1849/logistic)
    Low Pass Filter (One Pole) (1051/lpf)
    Mixer (Stereo to Mono) (1071/mixer)
    Noise Source (White) (1069/noise_source_white)
    Null (Audio Input) (1084/null_ai)
    Null (Audio Output) (1086/null_ao)
    Null (Control Input) (1083/null_ci)
    Null (Control Output) (1085/null_co)
    Organ (1222/organ)
    Peak Monitor (1082/peak)
    Phase Modulated Voice (1226/phasemod)
    Pink Noise (Interpolated) (1841/pink_interpolated_audio)
    Pink Noise (full frequency range) (1844/pink_full_frequency)
    Pink Noise (sample and hold) (1843/pink_sh)
    Simple Compressor (Peak Envelope Tracking) (1072/compress_peak)
    Simple Compressor (RMS Envelope Tracking) (1073/compress_rms)
    Simple Expander (Peak Envelope Tracking) (1074/expand_peak)
    Simple Expander (RMS Envelope Tracking) (1075/expand_rms)
    Simple Limiter (Peak Envelope Tracking) (1076/limit_peak)
    Simple Limiter (RMS Envelope Tracking) (1077/limit_rms)
    Sine Oscillator (Freq:audio, Amp:audio) (1063/sine_faaa)
    Sine Oscillator (Freq:audio, Amp:control) (1064/sine_faac)
    Sine Oscillator (Freq:control, Amp:audio) (1065/sine_fcaa)
    Sine Oscillator (Freq:control, Amp:control) (1066/sine_fcac)
    Syn Drum (1223/syndrum)
    VCF 303 (1224/vcf303)
    Wave Shaper (Sine-Based) (1097/wshape_sine)
/usr/lib/ladspa/declip_1195.so:
    Declipper (1195/declip)
/usr/lib/ladspa/split_1406.so:
    Mono to Stereo splitter (1406/split)
/usr/lib/ladspa/random_1661.so:
    Random Wave Generator (FASA) (1661/random_fasa_oa)
    Random Wave Generator (FASC) (1662/random_fasc_oa)
    Random Wave Generator (FCSA) (1663/random_fcsa_oa)
    Random Wave Generator (FCSC) (1664/random_fcsc_oa)
/usr/lib/ladspa/sc2_1426.so:
    SC2 (1426/sc2)
/usr/lib/ladspa/alias_1407.so:
    Aliasing (1407/alias)
/usr/lib/ladspa/bandpass_a_iir_1893.so:
    Glame Bandpass Analog Filter (1893/bandpass_a_iir)
/usr/lib/ladspa/bode_shifter_cv_1432.so:
    Bode frequency shifter (CV) (1432/bodeShifterCV)
/usr/lib/ladspa/gong_1424.so:
    Gong model (1424/gong)
/usr/lib/ladspa/sc1_1425.so:
    SC1 (1425/sc1)
/usr/lib/ladspa/dc_remove_1207.so:
    DC Offset Remover (1207/dcRemove)
/usr/lib/ladspa/sc4_1882.so:
    SC4 (1882/sc4)
/usr/lib/ladspa/karaoke_1409.so:
    Karaoke (1409/karaoke)
/usr/lib/ladspa/sc3_1427.so:
    SC3 (1427/sc3)
/usr/lib/ladspa/pitch_scale_1193.so:
    Pitch Scaler (1193/pitchScale)
/usr/lib/ladspa/wave_terrain_1412.so:
    Wave Terrain Oscillator (1412/waveTerrain)
/usr/lib/ladspa/branch_1673.so:
    Signal Branch (IA) (1673/branch_ia_oaoa)
    Signal Branch (IC) (1674/branch_ic_ococ)
/usr/lib/ladspa/delay_1898.so:
    Simple delay line, noninterpolating (1898/delay_n)
    Simple delay line, linear interpolation (1899/delay_l)
    Simple delay line, cubic spline interpolation (1900/delay_c)
/usr/lib/ladspa/sequencer16_1677.so:
    Analogue Style 16 Step Sequencer (1677/sequencer16)
/usr/lib/ladspa/hard_limiter_1413.so:
    Hard Limiter (1413/hardLimiter)
/usr/lib/ladspa/matrix_spatialiser_1422.so:
    Matrix Spatialiser (1422/matrixSpatialiser)
/usr/lib/ladspa/sifter_1210.so:
    Signal sifter (1210/sifter)
/usr/lib/ladspa/pointer_cast_1910.so:
    Pointer cast distortion (1910/pointerCastDistortion)
/usr/lib/ladspa/sequencer32_1676.so:
    Analogue Style 32 Step Sequencer (1676/sequencer32)
/usr/lib/ladspa/dj_flanger_1438.so:
    DJ flanger (1438/djFlanger)
/usr/lib/ladspa/sinus_wavewrapper_1198.so:
    Sinus wavewrapper (1198/sinusWavewrapper)
/usr/lib/ladspa/butterworth_1902.so:
    Glame Butterworth X-over Filter (1902/bwxover_iir)
    GLAME Butterworth Lowpass (1903/buttlow_iir)
    GLAME Butterworth Highpass (1904/butthigh_iir)
/usr/lib/ladspa/satan_maximiser_1408.so:
    Barry's Satan Maximiser (1408/satanMaximiser)
/usr/lib/ladspa/triple_para_1204.so:
    Triple band parametric with shelves (1204/triplePara)
/usr/lib/ladspa/sine.so:
    Sine Oscillator (Freq:audio, Amp:audio) (1044/sine_faaa)
    Sine Oscillator (Freq:audio, Amp:control) (1045/sine_faac)
    Sine Oscillator (Freq:control, Amp:audio) (1046/sine_fcaa)
    Sine Oscillator (Freq:control, Amp:control) (1047/sine_fcac)
/usr/lib/ladspa/vynil_1905.so:
    VyNil (Vinyl Effect) (1905/vynil)
/usr/lib/ladspa/tracker_2025.so:
    Signal Tracker (Audio Rates) (2025/tracker_gaaadaia_oa)
    Signal Tracker (Control Rates) (2026/tracker_gaacdcia_oa)
/usr/lib/ladspa/decay_1886.so:
    Exponential signal decay (1886/decay)
/usr/lib/ladspa/crossover_dist_1404.so:
    Crossover distortion (1404/crossoverDist)
/usr/lib/ladspa/bode_shifter_1431.so:
    Bode frequency shifter (1431/bodeShifter)
/usr/lib/ladspa/square_1643.so:
    Bandlimited Square Oscillator (FA) (1643/square_fa_oa)
    Bandlimited Square Oscillator (FC) (1644/square_fc_oa)
/usr/lib/ladspa/lp4pole_1671.so:
    4 Pole Low-Pass Filter with Resonance (FARAIA) (1671/lp4pole_faraia_oa)
    4 Pole Low-Pass Filter with Resonance (FCRCIA) (1672/lp4pole_fcrcia_oa)
/usr/lib/ladspa/matrix_ms_st_1421.so:
    Matrix: MS to Stereo (1421/matrixMSSt)
/usr/lib/ladspa/delay.so:
    Simple Delay Line (1043/delay_5s)
/usr/lib/ladspa/mbeq_1197.so:
    Multiband EQ (1197/mbeq)
/usr/lib/ladspa/transient_1206.so:
    Transient mangler (1206/transient)
/usr/lib/ladspa/hermes_filter_1200.so:
    Hermes Filter (1200/hermesFilter)
/usr/lib/ladspa/smooth_decimate_1414.so:
    Smooth Decimator (1414/smoothDecimate)
/usr/lib/ladspa/amp_1654.so:
    Amplifier (GAIA) (1654/amp_gaia_oa)
    Amplifier (GCIA) (1655/amp_gcia_oa)
/usr/lib/ladspa/fmod_1656.so:
    Frequency Modulator (FAMA) (1656/fmod_fama_oa)
    Frequency Modulator (FAMC) (1657/fmod_famc_oa)
    Frequency Modulator (FCMA) (1658/fmod_fcma_oa)
    Frequency Modulator (FCMC) (1659/fmod_fcmc_oc)
/usr/lib/ladspa/quantiser50_2028.so:
    Quantiser (50 Steps) (2028/quantiser50)
/usr/lib/ladspa/quantiser20_2027.so:
    Quantiser (20 Steps) (2027/quantiser20)
/usr/lib/ladspa/latency_1914.so:
    Artificial latency (1914/artificialLatency)
/usr/lib/ladspa/dj_eq_1901.so:
    DJ EQ (mono) (1907/dj_eq_mono)
    DJ EQ (1901/dj_eq)
/usr/lib/ladspa/shaper_1187.so:
    Wave shaper (1187/shaper)
/usr/lib/ladspa/sync_square_1678.so:
    Clock Oscillator with Gate (FAGA) (1678/syncsquare_faga_oa)
    Clock Oscillator with Gate (FCGA) (1679/syncsquare_fcga_oa)
/usr/lib/ladspa/se4_1883.so:
    SE4 (1883/se4)
/usr/lib/ladspa/interpolator_1660.so:
    Control to Audio Interpolator (1660/interpolator)
/usr/lib/ladspa/ratio_2034.so:
    Signal Ratio (NADA) (2034/ratio_nada_oa)
    Signal Ratio (NADC) (2035/ratio_nadc_oa)
    Signal Ratio (NCDA) (2036/ratio_ncda_oa)
    Signal Ratio (NCDC) (2037/ratio_ncdc_oc)
/usr/lib/ladspa/analogue_osc_1416.so:
    Analogue Oscillator (1416/analogueOsc)
/usr/lib/ladspa/amp.so:
    Mono Amplifier (1048/amp_mono)
    Stereo Amplifier (1049/amp_stereo)
/usr/lib/ladspa/comb_splitter_1411.so:
    Comb Splitter (1411/combSplitter)
/usr/lib/ladspa/rate_shifter_1417.so:
    Rate shifter (1417/rateShifter)
/usr/lib/ladspa/comb_1190.so:
    Comb Filter (1190/comb)
/usr/lib/ladspa/const_1909.so:
    Constant Signal Generator (1909/const)
/usr/lib/ladspa/comb_1887.so:
    Comb delay line, noninterpolating (1889/comb_n)
    Comb delay line, linear interpolation (1887/comb_l)
    Comb delay line, cubic spline interpolation (1888/comb_c)
/usr/lib/ladspa/pitch_scale_1194.so:
    Higher Quality Pitch Scaler (1194/pitchScaleHQ)
/usr/lib/ladspa/filter.so:
    Simple Low Pass Filter (1041/lpf)
    Simple High Pass Filter (1042/hpf)
/usr/lib/ladspa/multivoice_chorus_1201.so:
    Multivoice Chorus (1201/multivoiceChorus)
/usr/lib/ladspa/foldover_1213.so:
    Foldover distortion (1213/foldover)
/usr/lib/ladspa/amp_1181.so:
    Simple amplifier (1181/amp)
/usr/lib/ladspa/triangle_1649.so:
    Bandlimited Variable Slope Triangle Oscillator (FASA) (1649/triangle_fasa_oa)
    Bandlimited Variable Slope Triangle Oscillator (FASC) (1650/triangle_fasc_oa)
    Bandlimited Variable Slope Triangle Oscillator (FCSA) (1651/triangle_fcsa_oa)
    Bandlimited Variable Slope Triangle Oscillator (FCSC) (1652/triangle_fcsc_oa)
/usr/lib/ladspa/difference_2030.so:
    Signal Difference (IAMA) (2030/difference_iama_oa)
    Signal Difference (IAMC) (2031/difference_iamc_oa)
    Signal Difference (ICMA) (2032/difference_icma_oa)
    Signal Difference (ICMC) (2033/difference_icmc_oc)
/usr/lib/ladspa/divider_1186.so:
    Audio Divider (Suboctave Generator) (1186/divider)
/usr/lib/ladspa/gverb_1216.so:
    GVerb (1216/gverb)
/usr/lib/ladspa/single_para_1203.so:
    Single band parametric (1203/singlePara)

Offline

#9 2010-02-17 00:37:29

brebs
Member
Registered: 2007-04-03
Posts: 3,742

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

BastiaanN wrote:

Assertion 'snd_pcm_format_linear(slv->format)' failed.

ALSA's error messages are designed solely to frustrate and annoy sad

Try some debugging:

speaker-test -D plug:lowpass_21to21 -c 3 -t wav
speaker-test -D upmix_21to51 -c 3 -t wav

If that first speaker-test doesn't work, try without the "plug:" - yep, ALSA's annoying like that.

Offline

#10 2010-02-18 23:25:18

Lavayo
Member
Registered: 2010-02-16
Posts: 13

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

I have exactly the same problem as BastiaanN. I found this thread while searching for the alsa error message.
speakertest works for me with brebs's .asoundrc, and "speaker-test -D upmix_21to51 -c 3 -t wav".

If I use "speaker-test -D upmix_21to51 -c 6 -t wav":
Front Left and Front Right are played correctly, the rest is mute, except of rear left which is played by the subwoofer.

How can that be fixed?
Edit: Of course the speakers are plugged in correctly. roll

When I use "upmix_21to51" in kaffeine all speakers work, the subwoofer is mute. Which means there is no bass at all. sad

BTW: Is there any way to implement phonon in all this? I mean that all programs use a phonon device which uses alsa, while alsa is configured by the .asoundrc?
That would make things a lot easier for KDE users. No configuration in every single program.

Last edited by Lavayo (2010-02-19 00:02:38)

Offline

#11 2010-02-19 06:04:36

brebs
Member
Registered: 2007-04-03
Posts: 3,742

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

First try the standard test:

speaker-test -D surround51 -c 6 -t wav

And check "alsamixer -c0" for things like "Channel mode" "6ch"

Offline

#12 2010-02-19 10:17:36

Lavayo
Member
Registered: 2010-02-16
Posts: 13

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

Ah, the standard test works perfectly.

I explained what happens when I use your asoundrc. (Front Left and Front Right are played correctly, the rest is mute, except of rear left which is played by the subwoofer.)
In kaffeine using your asoundrc, the subwoofer is mute.

Atm I'm using a simple upmix, like described in your link:

pcm.20to51 {
     type route
     slave.pcm surround51
     slave.channels 6
     ttable.0.0 1
     ttable.1.1 1
     ttable.0.2 1
     ttable.1.3 1
     ttable.0.4 0.5
     ttable.1.4 0.5
     ttable.0.5 0.5
     ttable.1.5 0.5
hint {
    show on
    description "20to51simple"
}
}

pcm.!default {
    type             plug
    slave.pcm       "20to51"
}

In speakertest only Front left, and Front right are played, but in normal soundoutput (kaffeine, amarok...) every speaker is used. This method is a bit easier because it uses phonen, there is no need to reconfigure every program...
But I'm still interested in the "proper way". (Bass only for subwoofer)

Last edited by Lavayo (2010-02-19 10:36:56)

Offline

#13 2010-04-17 17:29:27

McFlow
Member
Registered: 2010-04-17
Posts: 58

Re: Upmixing stereo to 5.1 while allowing multiple programs to use sound

Atragor wrote:

Just checked my config with three applications playing sound at the same time, seems that everything works fine. Hope it will work for you too:

pcm.!default {                               
  type asym                                  
  playback.pcm "upmix_20to21"                
  hint {                                     
    show on                                  
    description "Main device"                
  }                                          
}                                            

pcm.upmix_20to21 {
  type plug       
  slave.pcm lowpass_21to21
  slave.channels 3        
  ttable {                
    0.0 1                 
    1.1 1                 
    0.2 0.5               
    1.2 0.5               
  }                       
}                         
                          
pcm.lowpass_21to21 {      
  type ladspa             
  slave.pcm upmix_21to51  
  path "/usr/lib/ladspa"  
  channels 3              
  plugins {               
    0 {                   
      label "hpf"         
      policy none         
      input.bindings.0 "Input";
      output.bindings.0 "Output";
      input {                    
          controls [ 200 ]       
      }                          
    }                            
    1 {                          
      label "hpf"                
      policy none                
      input.bindings.1 "Input";  
      output.bindings.1 "Output";
      input {                    
          controls [ 200 ]       
      }                          
    }                            
    2 {                          
      id 1672 # 4 Pole Low-Pass Filter with Resonance (FCRCIA) (1672/lp4pole_fcrcia_oa)
      policy none                                                                      
      input.bindings.2 "Input";                                                        
      output.bindings.2 "Output";                                                      
      input {                                                                          
          controls [ 100 2 ]                                                           
      }                                                                                
    }                                                                                  
  }                                                                                    
}                                                                                      

pcm.upmix_21to51 {
  type plug       
  slave.pcm "softvol"
  slave.channels 6   
  ttable {           
    0.0 1 # front left
    1.1 1 # front right
    0.2 1 # rear left  
    1.3 1 # rear right 
    0.4 0.5 # center   
    1.4 0.5 # center   
    2.5 1 # subwoofer  
  }                    
}                      

pcm.softvol {
    type        softvol
    slave.pcm   "dmixer"
    control {           
        name    "Master"
        card    0       
    }                   
}

pcm.dmixer {
  type dmix
  ipc_key 4821
  ipc_key_add_uid false
  ipc_perm 0660
  slave {
    pcm "hw:0"
    rate 48000
    channels 6
    period_time 0
    period_size 1024
    buffer_time 0
    buffer_size 65535
  }
  bindings {
      0 0
      1 1
      2 2
      3 3
      4 4
      5 5
  }
}

Blop and CMT plugins should be installed if you need low-pass and high-pass filtering.

Sorry to dig that thread but I can't get any of the posted configurations to work. I run Archlinux the first day now. Before I used 3 years Ubuntu but I had the same trouble there with alsa and 5.1 upmix, so I used pulseaudio... But I don't really want to.
When I use your configuration in my .asoundrc I get this errors when I restart alsa

[florian@errorkiste ~]$ sudo /etc/rc.d/alsa restart
Passwort: 
:: Saving ALSA Levels                                                    [BUSY] ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
/usr/sbin/alsactl: get_controls:552: snd_ctl_open error: Invalid argument
                                                                         [DONE] 
:: Restoring ALSA Levels                                                 [BUSY] ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
/usr/sbin/alsactl: set_controls:1409: snd_ctl_open error: Invalid argument
ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
/usr/sbin/alsactl: set_controls:1409: snd_ctl_open error: Invalid argument
ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
/usr/sbin/alsactl: set_controls:1409: snd_ctl_open error: Invalid argument
ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
ALSA lib conf.c:1645:(snd_config_load1) _toplevel_:63:17:Unexpected char
ALSA lib conf.c:3425:(snd_config_hook_load) /home/florian/.asoundrc may be old or corrupted: consider to remove or fix it
ALSA lib conf.c:3286:(snd_config_hooks_call) function snd_config_hook_load returned error: Invalid argument
ALSA lib conf.c:3671:(snd_config_update_r) hooks failed, removing configuration
/usr/sbin/alsactl: set_controls:1409: snd_ctl_open error: Invalid argument
                                                                         [FAIL] 
[florian@errorkiste ~]$

Any hint what is going wrong? smile

Edit:
Don't mind, it's working now with a different config.

Last edited by McFlow (2010-04-18 16:25:22)

Offline

Board footer

Powered by FluxBB