Audio
Postat: 16 dec 2011, 01:19
Litet enkelt script (förlåt skärmen blinkar (se annat inlägg)) för att kolla audio...
[EDIT] Ändrade lite så att den använder i första hand engelska och om detta inte fungerar så går den över till svenska. Övriga språk kan lätt läggas till om man finner behov av det. Det är bara att lägga till fler "if [[ -z $cards ]]; then" och "if [[ -z $units ]]; then" inne i nuvarande sådana if-satser. Tänk bara på att nästa sats ska "befinna sig inne i" närmast föregående, eftersom detta gör att scriptet automatiskt "hoppar ur if:en" så fort det får en träff... 
[EDIT igen] Visst skulle man kunna göra det lite "snyggare" med $LANG och en "case", men det blir i slutänden ändå det uttryck som ger en träff som är mest relevant...
Kod: Markera allt
#! /bin/bash
#
echo
#
echo "Devices:"
echo "========"
echo "=> lspci | grep -i vga"
lspci | grep -i vga
echo "=> lspci | grep -i audio"
lspci | grep -i audio
echo
#
echo "Units:"
echo "======"
echo "=> aplay -l"
aplay -l
echo
#
echo "Codec:"
echo "======"
echo "=> cat /proc/asound/card0/codec#* | grep Codec"
cat /proc/asound/card0/codec#* | grep Codec
echo
#
echo "Checking plughw:"
echo "================"
cards=($(aplay -l | grep -i card | sed 's/://g' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
if [[ -z $cards ]]; then
cards=($(aplay -l | grep -i kort | sed 's/://g' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
fi
units=($(aplay -l | grep -i unit | sed 's/://g' | \
awk -F, '{ print $2 }' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
if [[ -z $units ]]; then
units=($(aplay -l | grep -i enhet | sed 's/://g' | \
awk -F, '{ print $2 }' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
fi
nunits=${#units[*]}
declare -a plughw=${units[1]}
for ((ix=0;ix<nunits;ix++)); do
plughw[$ix]=${cards[$ix]}","${units[$ix]}
done
for ((ix=0;ix<nunits;ix++)); do
cmd="aplay -D plughw:${plughw[ix]} /usr/share/sounds/alsa/Front_Center.wav"
#echo "=> "$cmd
echo " Testing plughw:${plughw[ix]}"
out=$($cmd 2>&1)
if [[ $? == 0 ]]; then
echo " OK"
else
echo " Fail"
echo " "$out
fi
done

[EDIT igen] Visst skulle man kunna göra det lite "snyggare" med $LANG och en "case", men det blir i slutänden ändå det uttryck som ger en träff som är mest relevant...
