Menggunakan bash, bagaimana saya bisa membuat bip speaker pc?
Sesuatu seperti echo 'beepsound' > /dev/pcspkr
itu akan menyenangkan.
command-line
Stefan
sumber
sumber
Jawaban:
Saya biasanya menggunakan utilitas kecil yang
beep
diinstal pada banyak sistem. Perintah ini akan mencoba berbagai pendekatan untuk membuat suara sistem.Ada 3 cara membuat suara dari halaman
beep
manual:Metode tradisional untuk menghasilkan beep dalam skrip shell adalah dengan menulis
ASCII BEL
(\007
) karakter ke output standar, dengan menggunakan perintah shell sepertiIni hanya berfungsi jika output standar shell panggilan saat ini diarahkan ke perangkat terminal; jika tidak, bunyi bip tidak akan menghasilkan suara dan bahkan dapat menyebabkan kerusakan yang tidak diinginkan pada file apa pun yang diarahkan ke output.
Ada cara lain untuk menimbulkan bunyi bip. Metode yang sedikit lebih andal adalah membuka
/dev/tty
dan mengirim karakter BEL Anda ke sana. Ini kuat terhadap pengalihan I / O, tetapi masih gagal dalam kasus di mana skrip shell yang ingin menghasilkan bunyi bip tidak memiliki terminal pengendali, misalnya karena dijalankan dari manajer window X.Pendekatan ketiga adalah menyambungkan ke tampilan X Anda dan mengirimkannya sebuah perintah bel. Ini tidak tergantung pada perangkat terminal Unix, tetapi (tentu saja) memerlukan tampilan X.
beep
hanya akan mencoba 3 metode ini.sumber
beep
perintah ini adalah: johnath.com/beep Di Ubuntu / Debian, Anda dapat menginstalnya denganapt-get install beep
.pcspkr
modul, muatsnd-pcsp
, dan Anda sekarang memiliki kartu suara alsa yang menggunakan trik jadul untuk benar-benar memberi makan suara digital ke speaker internal Anda. Ini memberikan hasil buruk dengan speaker internal piezoelektrik, tetapi pada speaker internal klasik, kualitasnya cukup baik untuk apa itu. Dengan cara ini, Anda bisa menjadi jauh lebih kreatif untuk suara bip Anda;)pcspkr
dansnd-pcsp
merupakan modul, bukan paket. gunakanmodprobe
/modprobe -r
/lsmod
untuk memanipulasi mereka. Untuk informasi Anda, mereka ada dalamlinux-image-something
paket, yang diharapkan sudah diinstal (atau Anda tidak memiliki kernel linux).modprobe snd-pcsp
beep sekarang berfungsi!Cukup gema
\a
atau\07
bekerja untuk saya.Ini mungkin akan membutuhkan
pcspkr
modul kernel untuk dimuat. Saya hanya menguji ini di RHEL, jadi YMMV.MEMPERBARUI
Seperti yang ditunjukkan Warren dalam komentar, ini mungkin tidak berfungsi ketika login jarak jauh melalui SSH. Solusi cepat adalah mengarahkan ulang output ke perangkat TTY mana saja (idealnya yang tidak digunakan). Misalnya:
sumber
sudo modprobe pcspkr
cukup untuk mengaktifkan bip di bawah VT, baik melaluiprintf "\a"
ataubeep
utilitas.Ubuntu 16.04.1 LTS
CATATAN: Solusi ini mengeluarkan bunyi bip dari speaker , bukan motherboard .
ALSA dilengkapi dengan tes speaker, generator nada tes speaker command-line, yang dapat digunakan untuk menghasilkan bunyi bip:
Lihat utas forum lengkung linux ini .
Namun, durasi bip akan berubah-ubah, tetapi dapat dikontrol sebagai berikut:
Kita dapat mengambil satu langkah lebih jauh dan mengeluarkan bunyi bip dengan fungsi ini:
yang disebut dengan argumen frekuensi dan durasi:
Dengan pemikiran ini, dimungkinkan untuk membuat musik sederhana dengan
speaker-test
. Lihat skrip shell ini .sumber
timeout ${2} speaker-test --frequency ${1} --test sine
speaker-test -t sine -f 1000 -l 1 & sleep .2 && kill -9 $!
melakukan hal yang sama. Bagaimanapun, metode @ user569825 lebih baik.karena terminfo mendefinisikan
bel
sebagaisumber
Untuk menggunakan kartu suara jika
sox
diinstal dan speaker PC jika tidak:sox
tersedia untuk sebagian besar distro.sumber
then
blok dalamwatch
untuk memberi tahu saya setelah kondisi tertentu dipenuhi. Bahkan memungkinkan saya tetap memakai headphone saya. Ini sangat berguna bagi saya.sudo -u USER play...
play
gunakan pulseaudio, sebagai pengguna. Saya kira itu tergantung pada konfigurasi sistem.Beberapa distro memiliki utilitas baris perintah untuk mencapai hal ini. Mungkin Anda bisa memberi tahu kami apa distro yang Anda gunakan, atau cari (mis.
emerge -s beep
Di gentoo).Melampaui utilitas "tersedia", Anda juga bisa membuat skrip Perl yang mengeluarkan bunyi bip, yang perlu Anda lakukan adalah memasukkan:
Jika Anda akhirnya mendapatkan 'bip', cobalah yang berikut ini:
sumber
echo -e "\007"
bekerja di bash, bukanprint "\007
di perl?printf '\007'
daripadaecho
." Bip hanya berfungsi jika PC Anda memiliki" speaker ". Banyak laptop / perangkat kecil modern tidak memilikinya." - tredegar .
Coba putar suara sebagai gantinya:
Bekerja untuk saya, ketika semuanya gagal.
Referensi
sumber
Mencoba
Kelemahannya adalah ini hanya akan berfungsi ketika perangkat output adalah terminal, jadi mungkin tidak berfungsi di dalam cron job, misalnya. (Tetapi jika Anda root, Anda mungkin dapat mengarahkan ulang
/dev/console
untuk berbunyi bip segera.)sumber
Di Linux, alat-alat seperti
beep
dapat menggunakan ioctl pada perangkat konsol untuk memancarkan suara yang diberikan. Untuk lebih spesifik,beep
akan menggunakanKIOCSOUND
ioctl, tetapi ada jugaKDMKTONE
ioctl yang dapat digunakan untuk menghasilkan suara.Seperti yang saya pahami, yang pertama memulai suara yang berlangsung sampai dibatalkan secara eksplisit, sedangkan yang kedua akan membuat bunyi bip dari durasi yang ditentukan sebelumnya. Lihat halaman manual
console_ioctl
(4) untuk detailnya.Jadi jika Anda tidak puas dengan apa yang
beep
dilakukan, Anda dapat menulis beberapa baris kode untuk mengakses ioctls ini secara langsung. Dengan asumsi Anda memiliki akses penuh ke/dev/console
, yang mungkin memerlukan hak akses root.sumber
Di terminal, tekan Ctrl+ GlaluEnter
sumber