Debian DART-MX8M Audio record play

From Variscite Wiki
Revision as of 04:06, 17 July 2020 by Harshesh (talk | contribs) (Created page with "<!-- Set release according to "release" parameter in URL and use RELEASE_SUMO_V1.0_DART-MX8M as default --> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!-- --> {{#lst:De...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
DART-MX8M-MINI Audio Record/Play

Get information on the Sound Cards

Installed devices:

# cat /proc/asound/cards
 0 [wm8904audio      ]: wm8904-audio - wm8904-audio
                      wm8904-audio

List device names for playback:

# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
sysdefault:CARD=wm8904audio
    wm8904-audio, 
    Default Audio Device

Audio Playback

Set PCM volume (main volume of audio codec), range :0-63 Pulse audio needs to be stopped to run amixer commands.

#systemctl stop pulseaudio 
# amixer set Headphone 35

Play audio:

# aplay /usr/share/sounds/alsa/Front_Center.wav

Example:

# systemctl stop pulseaudio;amixer set set Headphone 35
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 63
  Front Left: 35 [56%] [-22.00dB] Playback [on]
  Front Right: 35 [56%] [-22.00dB] Playback [on]

# aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Audio Record and Play, Line-in Jack

Pulse audio needs to be stopped to run amixer commands.

# systemctl stop pulseaudio

Set PCM volume (main volume of audio codec), range :0-63

# amixer set Headphone 35

Set capture input source to ADC

# amixer set 'Capture Input' ADC

Set DMIC Mux to DMIC2

# amixer set 'DMIC Mux' DMIC2

Record CD quality audio for 10 seconds into file test.wav

# arecord -f cd -d 10 test.wav

Play the recorded file

# aplay test.wav 

Example:

# systemctl stop pulseaudio; amixer set set Headphone 35
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 63
  Front Left: 35 [56%] [-22.00dB] Playback [on]
  Front Right: 35 [56%] [-22.00dB] Playback [on]
# amixer set 'Capture Input' ADC                                                                                                                                                         
Simple mixer control 'Capture Input',0
  Capabilities: enum
  Items: 'ADC' 'DMIC'
  Item0: 'ADC'
# amixer set 'DMIC Mux' DMIC2
Simple mixer control 'DMIC Mux',0
  Capabilities: enum
  Items: 'DMIC1' 'DMIC2'
  Item0: 'DMIC2'
# arecord -f cd -d 10 test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
# aplay test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Audio Record and Play, DMIC

Set Headphones volume, range :0-63 Pulse audio needs to be stopped to run amixer commands.

# systemctl stop pulseaudio
# amixer set Headphone 35

Set capture input source to DMIC

# amixer set 'Capture Input' DMIC

Set DMIC Mux to DMIC1

# amixer set 'DMIC Mux' DMIC1

Record CD quality audio for 10 seconds into file test.wav

# arecord -f cd -d 10 test.wav

Play the recorded file

# aplay test.wav 

Example:

 # systemctl stop pulseaudio;amixer set set Headphone 35
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 63
  Front Left: 35 [56%] [-22.00dB] Playback [on]
  Front Right: 35 [56%] [-22.00dB] Playback [on]
# amixer set 'Capture Input' DMIC                                                                                                                                                         
Simple mixer control 'Capture Input',0
  Capabilities: enum
  Items: 'ADC' 'DMIC'
  Item0: 'DMIC'
# amixer set 'DMIC Mux' DMIC1
Simple mixer control 'DMIC Mux',0
  Capabilities: enum
  Items: 'DMIC1' 'DMIC2'
  Item0: 'DMIC1'
# arecord -f cd -d 10 test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
# aplay test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Advanced Controls

amixer without a parameter will show all available controls. Pulse audio needs to be stopped to run amixer commands.

# systemctl stop pulseaudio

For example:

# systemctl stop pulseaudio;amixer
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 63
  Front Left: 35 [56%] [-22.00dB] Playback [on]
  Front Right: 35 [56%] [-22.00dB] Playback [on]
Simple mixer control 'Headphone ZC',0
  Capabilities: pswitch
  Playback channels: Front Left - Front Right
  Mono:
  Front Left: Playback [on]
  Front Right: Playback [on]
Simple mixer control 'Line Output',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 63
  Front Left: 57 [90%] [0.00dB] Playback [on]
  Front Right: 57 [90%] [0.00dB] Playback [on]
Simple mixer control 'Line Output ZC',0         
  Capabilities: pswitch                         
  Playback channels: Front Left - Front Right   
  Mono:                                         
  Front Left: Playback [on]                     
  Front Right: Playback [on]                    
Simple mixer control 'Capture',0                
  Capabilities: cvolume cswitch               
  Capture channels: Front Left - Front Right  
  Limits: Capture 0 - 31                      
  Front Left: Capture 24 [77%] [on]           
  Front Right: Capture 24 [77%] [on]          
Simple mixer control 'Capture Input',0        
  Capabilities: enum                          
  Items: 'ADC' 'DMIC'                         
  Item0: 'DMIC'
...                            

Options:

amixer   sset sID P      set contents for one mixer simple control
amixer   sget sID        get contents for one mixer simple control

For example:

#systemctl stop pulseaudio;amixer sget 'Capture'                                                                                         
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 31
  Front Left: Capture 24 [77%] [on]
  Front Right: Capture 24 [77%] [on]
  # amixer sset 'Capture' 25                                                                                      
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 31
  Front Left: Capture 25 [81%] [on]
  Front Right: Capture 25 [81%] [on]

Capture currently now set to 81%.

Save / restore system's audio settings

alsactl store stores all alsamixer settings into a file
alsctl Options:

  store     <card>  save current driver setup for one or each soundcards
                      to configuration file
  restore   <card>  load current driver setup for one or each soundcards
                      from configuration file

Example:

# systemctl stop pulseaudio
# alsactl store -f 123.conf
# amixer 
# alsactl restore -f 123.conf