User Tools

Site Tools


alsa_only_audio

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
alsa_only_audio [2025/07/08 00:28] – created ethanalsa_only_audio [2025/07/09 07:48] (current) ethan
Line 3: Line 3:
  
 I will be showing changes to ///etc/asound.conf// as to effect all users (including daemons such as MPD). you can also use //~/.asoundrc// for setup specific to your user. I will be showing changes to ///etc/asound.conf// as to effect all users (including daemons such as MPD). you can also use //~/.asoundrc// for setup specific to your user.
-=====dmix=====+ 
 +=====devices===== 
 +multiple commands can list available audio cards and devices. 
 + 
 +**alsactl** can be used: 
 +<code bash> 
 +$ alsactl info 1 
 +
 +# Sound card 
 +
 +- card: 1                    # card number. 
 +  id: sofhdadsp 
 +  name: sof-hda-dsp 
 +  longname:  
 +  driver_name: sof-hda-dsp 
 +  mixer_name: Realtek ALC233 
 +  components:  
 +  controls_count: 54 
 +  pcm: 
 +    - stream: PLAYBACK 
 +      devices: 
 +        - device: 1          # device number. 
 +          id: HDA Analog (*) # name. 
 +          name:  
 +          subdevices: 
 +            - subdevice: 0 
 +              name: subdevice #0 
 +... 
 +</code> 
 +by default //alsactl info// will show card 0. you most likely have multiple cards. 
 + 
 +**aplay** will also list sound cards and devices. 
 +<code bash> 
 +$ aplay -l 
 +**** List of PLAYBACK Hardware Devices **** 
 +card 0: HDMI [HDA ATI HDMI], device 0: HDMI 0 [HDMI 0] 
 +  Subdevices: 1/1 
 +  Subdevice #0: subdevice #0 
 +... 
 +card 1: sofhdadsp [sof-hda-dsp], device 1: HDA Analog (*) [] 
 +  Subdevices: 1/1 
 +  Subdevice #0: subdevice #0 
 +... 
 +</code> 
 + 
 +card 1 and device 1 will be used for this guide. in most places, this is specified with **"hw:1,1"**. the first number is the card and the second is the device. 
 + 
 +=====mixing=====
 [[https://www.alsa-project.org/wiki/Asoundrc#dmix|dmix]] is a software mixer for audio output. it will allow multiple programs to simultaneously play sound at the same time. [[https://www.alsa-project.org/wiki/Asoundrc#dmix|dmix]] is a software mixer for audio output. it will allow multiple programs to simultaneously play sound at the same time.
  
Line 22: Line 69:
 </file> </file>
  
-=====S/PDIF surround sound=====+=====S/PDIF multichannel=====
 the **a52** alsa plugin can be used to output Dolby Digital 5.1 (or lower) multichannel audio through S/PDIF. the **a52** alsa plugin can be used to output Dolby Digital 5.1 (or lower) multichannel audio through S/PDIF.
  
Line 39: Line 86:
 } }
 </file> </file>
 +
 +
 +=====equalization=====
 +[[https://github.com/bassdr/alsaequal|alsaequal]] is a 10-band software equalizer in the form of an ALSA plugin.
 +
 +each user has their own persistent settings, stored in //~/.alsaequal.bin//. if, for example, you are running MPD as its own mpd user, you must either copy or link the //alsaequal.bin// file to its home directory, or manually configure it seperately.
 +
 +the following configuration builds on the previous section on dmix. an asoundrc using solely alsaequal can be very simple.
 +<file bash /etc/asound.conf>
 +pcm.dmix_stereo {
 +        type dmix
 +        ipc_key 1024
 +        ipc_key_add_uid false
 +        ipc_perm 0666
 +
 +        slave {
 +                pcm "hw:1,1"
 +
 +                period_time 0
 +                period_size 1024
 +                buffer_size 4096
 +                rate 48000
 +        }
 +        bindings {                     # channel configuration (stereo, quad, 5.1, ...).
 +                0 0
 +                1 1
 +        }
 +}
 +pcm.plug_eq_stereo {
 +        type equal
 +        slave.pcm "plug:dmix_stereo"
 +}
 +pcm.eq_stereo {                       # this plug is needed to make the alsaequal output suitable for use by most applications.
 +        type plug
 +        slave.pcm "plug_eq_stereo"
 +}
 +
 +ctl.eq_stereo {                       # this ctl is what allows adjustment in alsamixer (or similar utilities).
 +        type equal
 +}
 +
 +pcm.!default eq_stereo
 +</file>
 +with this configuration, the equalizer can be changed with ctl **eq_stereo**:
 +<code bash>
 +alsamixer -D eq_stereo
 +</code>
 +
 +====multichannel====
 +here is an example of using alsaequal with **a52**.
 +<file bash /etc/asound.conf>
 +...
 +
 +pcm.surround {
 +        type a52
 +        slavepcm "hw:1,1"
 +
 +        channels 6
 +        bitrate 1000
 +        rate 48000
 +        format S16_LE
 +}
 +pcm.plug_eq_surround {
 +        type equal
 +        channels 6                         # changes channel configuration to 5.1.
 +        controls ".alsaequal.surround.bin" # sets the control information file to at ~/.alsaequal.surround.bin. this must be changed if there are to be multiple alsaequals of differing channel configurations.
 +        slave.pcm "plug:surround"
 +}
 +pcm.eq_surround {
 +        type plug
 +        slave.pcm "plug_eq_surround"
 +}
 +
 +ctl.eq_surround {
 +        type equal
 +        channels 6
 +        controls ".alsaequal.surround.bin"
 +}
 +
 +...
 +</file>
 +the surround equalizer can be changed with ctl **eq_surround** using this configuration.
 +
 {{tag>audio alsa linux}} {{tag>audio alsa linux}}
alsa_only_audio.1751934535.txt.gz · Last modified: by ethan

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki