Ses çıkış cihazı, hızlı geçiş?

19

Durumunuza bağlı olarak, hoparlörlerimi veya kulaklığımı ses çıkışı için kullanıyorum. Kulaklığımın bir USB kulaklığı olduğu göz önünde bulundurulduğunda, kendi ses cihazı gibi davranıyor.

Şu anda ses çıkış aygıtları arasında, üst sağ tepside bulunan hoparlör simgesini tıklatıp Ses ayarları'nı seçiyorum, Çıktı sekmesine gidiyorum ve istediğim aygıtı seçiyorum.

Şaşırtıcı olan şey, USB kulaklığımda ileri geri gitmenin daha kolay / daha hızlı bir yolu olabilir mi? Belki özel bir tepsi simgesi, anahtar eşleme, vb?

Ubuntu 10.04'ü varsayılan Gnome masaüstüyle çalıştırıyorum.

    
sordu andol 12.09.2010 09:37

10 cevap

11

Varsayılan ses çıkış cihazını komut satırından değiştirmek için pacmd Darbe Ses komut satırı yardımcı programını kullanabilirsiniz.

Her ikisi de benzer şekilde yapabilmeyi istedim, ikisi de ayrı ses kartlarına takılı, kulaklıklarla hoparlörler arasında geçiş yapmak istiyor. İşte yazdığım kabuk senaryosu:

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ( == "*") print "1",; else print "0", }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print }'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

Notlar:

  • Bu, pacmd yardımcı programının listelediği ilk iki ses çıkış aygıtı arasında geçiş yapar. İkiden fazla ses aygıtınız varsa ve farklı bir takasla değiştirmek istiyorsanız, bazı koşullarla 7 hattındaki mantığı değiştirmeniz gerekir.
  • Varsayılan bateri cihazını takas etmek, halihazırda çalışan uygulamalar için hiçbir şey yapmaz - önceki cihaza gönderilmeye devam ederler. Bu betik ayrıca tüm mevcut girişler için havuzun hedefini hareket ettirir. Örneğin, bu komut dosyasını bir cihazda müzik çalma ile çalıştırırsanız, anında diğerine geçecektir. Mevcut uygulamaların önceki cihazda devam etmesini isterseniz, son satırı (ve isterseniz 5. satırı) belirtin.
verilen cevap Andrew 20.12.2010 05:00
7

Eh, pavucontrol yükleyebilir, ilk sekmede ses cihazı seçimine sahip uygulamaları gösterir, size biraz çaba harcar. Ama gerçekten istediğim şey, USB kulaklığı varsayılan cihaz olarak işaretlemektir, daha sonra her sesin içine taktığınızda her ses ona yönlendirilir ve taktığınızda - hoparlörlere geri döner. Zahmetsiz, gerçekten.

    
verilen cevap vava 12.09.2010 11:33
3

Soru oldukça eski ama cevabım GNOME 2 kullanıcıları için hala yararlı olabilir. Burada açıklanan kesin sorun için PulseAudio Mikser Uygulaması kullandım. Giriş ve çıkış cihazlarını doğrudan panel menüsünde değiştirebilirsiniz. Bulduğum en uygun yol.

    
verilen cevap dAnjou 14.12.2011 17:29
3

Tabii ki Appleti kullanarak cihazları değiştirmek de iyi çalışıyor. Ama senaryo yazmanın en güzel yanı, süper hızlı olmasıdır. Örneğin, benim klavye kısayolu alt + s’a koydum. böylece kulaklıklardan hoparlörlere geçmek istediğimde, sadece alt + s tuşlarına basmam gerekiyor.

Neyse. Andrew dedi ki:

  

İkiden fazla ses cihazınız varsa ve bir   farklı bir, bazı 7 ile mantık değiştirmek gerekir   koşul.

Ben de öyle yaptım. Birinin sorun yaşadığı durumlarda onu paylaşıyorum:

#!/usr/bin/env bash

#sinks=($(pacmd list-sinks | grep index | \
#    awk '{ if ( == "*") print "1",; else print "0", }'))
sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ( == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print }'))

#find active sink
active=0
for i in ${sinks[*]}
do
    if [ $i -eq 0 ]
        then active=$((active+1))
        else break
    fi
done

#switch to next sink
swap=$(((active+1)%${#sinks[@]}))

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

Farklı bir şekilde yaptığım şey, a) aktif havuzu bir döngü içinde bulmaktır. Ve b) indeksi 1 ile artırarak bir sonraki lavaboya geçin. Sonra sonucu, lavabo sayısını değiştiriyorum. Bu, örn. 3 lavabo olduğunda, (2 + 1)% 3 = 0. Böylece, sink indeksinden 2, sink indeksine 0 geçecektik.

Bu şekilde, anahtar mevcut lavabolardan yukarı doğru hareket etmeyi sağlar.

    
verilen cevap traumtaenzer 18.01.2012 08:29
2

Komut dosyaları için teşekkürler! Kullanmak istediği durumda giriş (mikrofon) için de bir parça ekledim:

while read line ; do
  case $line in 
    *\*\ index*) x=1 ;;
    index*) x=0 ;;
    name*) 
      source=$(echo $line | sed -e "s/.*<//;s/>.*//")
      if [[ $x = "0" ]] ; then
        pacmd set-default-source $source &> /dev/null
      fi ;;
  esac
done < <(pacmd list-sources | grep -e alsa_input -e index)
    
verilen cevap Subbeh 19.12.2011 23:16
2

Ses cihazlarınız listenizde gezinmek için aşağıdaki komut dosyasını kullanın:

#!/bin/bash

declare -i sinks=('pacmd list-sinks | sed -n -e 's/\**[[:space:]]index:[[:space:]]\([[:digit:]]\)//p'')
declare -i sinks_count=${#sinks[*]}
declare -i active_sink_index='pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)//p''
declare -i next_sink_index=${sinks[0]}

#find the next sink (not always the next index number)
declare -i ord=0
while [ $ord -lt $sinks_count ];
do
echo ${sinks[$ord]}
if [ ${sinks[$ord]} -gt $active_sink_index ] ; then
    next_sink_index=${sinks[$ord]}
    break
fi
let ord++
done

#change the default sink
pacmd "set-default-sink ${next_sink_index}"

#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)//p');
do
pacmd "move-sink-input $app $next_sink_index"
done

#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"//p' | while read line;
do
if [ $(( $ord % $sinks_count )) -eq $ndx ] ; then
    notify-send -i notification-audio-volume-high --hint=string:x-canonical-private-    synchronous: "Sound output switched to" "$line"
    exit
fi
let ndx++
done;

Tüm krediler Ubuntu forumundan tsvetan’a gider.

    
verilen cevap guttermonk 19.04.2014 17:33
1

Dizüstü bilgisayarımdaki dahili hoparlörler ve bir elma havalimanı arasında geçiş yapmak için bir yol arıyordum. stereo sistemime takılı olan baz istasyonu . Geçiş yapmak için kısayol tuşları atamaya karar verdim. Ses tercihleri ​​penceresinin anahtarın görsel bir onayını vermek için bir saniye kadar açılmasını ve daha sonra pencereyi kapatmak için wmctrl kullanmasını istedim.

(Ctrl + F8 ve ctrl + F9 tuşlarını kısayol tuşları olarak kullandım çünkü dizüstü bilgisayardaki bu tuşların Fn işlevi, ses düzeyini artırmak ve azaltmaktır, böylece ctrl işlevlerinin ses çıktısını değiştirmesi açıkça görülüyordu.)

Aşağıdaki 2 (hemen hemen aynı) komut dosyasını kullandım:

#! /bin/bash
gnome-volume-control -p output &
sleep .7 
pacmd set-default-sink 1
sleep .8 
wmctrl -c "Sound Preferences"
exit

#! /bin/bash
gnome-volume-control -p output &
sleep .7 
pacmd set-default-sink 0
sleep .8 
wmctrl -c "Sound Preferences"
exit

Elma baz istasyonundaki ilk değişiklikler (ctrl + F9'a atandım) ve ikincisi dahili hoparlörlere geri döner (ctrl + F8). Bu, bunların yüklü olan tek 2 çıkış aygıtı olduğunu varsayar.

    
verilen cevap retrokid 22.01.2011 13:11
1

Andrews komut dosyası üzerine, sadece ne yaptığını duyurmak için notify-osd kullanmasını sağladım. İhtiyaçlarınızdan sonra satırları isimle birlikte düzenleyin.

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ( == "*") print "1",; else print "0", }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print }'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap 

for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

if [ "$swap" = "0" ]; then
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Corsair 2.1 Speakers!" 

else
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Logitech G930 Headset!" 

fi
    
verilen cevap Kveras 13.05.2012 19:55
0

Aynı sorunu yaşadım ve Ubuntu Unity masaüstünde küçük bir gösterge uygulaması yazdım:

İşte

İşte

    
verilen cevap Lukas 21.12.2013 13:43
0

İşte, şu anda odaklanmış pencere için ses dalgalarını çeviren küçük bir komut dosyası: İşte

pacmd ve xdotool gerektirir

    
verilen cevap rif 22.06.2018 23:02

Etiketlerdeki diğer soruları oku