На этот вопрос уже есть ответ здесь:
За эти годы было много написано о том, как получить звуковой сигнал в выпусках Ubuntu. Пример: исправление звукового сигнала
Мои потребности немного отличаются в том, что я не хочу, чтобы звуковые сигналы звуковой карты работали. Вместо этого мне нужны звуковые сигналы динамика ПК, такие как исходный встроенный динамик, потому что я считаю, что они будут производить меньшую нагрузку на процессор. Я подтвердил, что на моем компьютере есть динамик ПК, отключив внешние динамики и выключив Ubuntu. В какой-то момент в процессе выключения и перезапуска раздается звуковой сигнал, даже если на внешние динамики не подается питание.
Я пробовал следующее:
В /etc/modprobe.d/blacklist.conf
превратите эти строки в комментарии:
#blacklist snd_pcsp
#blacklist pcspkr
В .bashrc
/usr/bin/xset b on
/usr/bin/xset b 100
Включить в терминал gnome: Edit> Profile Prefs> General> Terminal Bell
Убедитесь, что нет выбора "mute" в: System> Prefs> Sound> различных вкладках (снимите отметки со всех).
Выберите «Включить звуки окон и кнопок» в: Система> Настройки> Звук> Звуковые эффекты
В gconf-editor
рабочий стол> gnome> звук установите три флажка звука.
В gconf-editor
приложениях> metacity> general установите флажок звуковой звонок
.
У меня по-прежнему нет звуковых сигналов динамика ПК, когда я отправляю код 7 на консоль через свою программу Java или использую
echo -e '\a'
или эквивалентно
echo -e "\a"
в командной строке bash. (Параметр -e означает включение интерпретации управляющей последовательности.) Что еще я должен попробовать?
Обновление Поскольку моя цель - минимизировать нагрузку на ЦП, вот сравнение прошедшего времени. Каждый тест рассчитан на 100 000 итераций. Каждый вариант был выполнен трижды, поэтому для каждого представлено три результата.
printwriter.format("%c", 7);
// 1.3 seconds, 1.5 seconds, 1.5 seconds
Toolkit.getDefaultToolkit().beep();
// 0.8 seconds, 0.3 seconds, 0.5 seconds
try { Runtime.getRuntime().exec("beep"); } catch (IOException e) { }
// 10.3 seconds, 16.3 seconds, 11.4 seconds
Эти запуски выполнялись внутри Eclipse, поэтому умножьте их на некоторое значение меньше 1 для автономного выполнения. К сожалению, звуковой сигнал Toolkit на моем компьютере беззвучен, как и код 7. Утилита beep работает, но требует наибольших затрат.
14.04.3 LTS теперь кажется достаточным отредактировать /etc/modprobe.d/blacklist.conf
и включить pcspkr
, закомментировав строку черного списка.
#blacklist pcspkr
#
превращает строку в комментарий.
Убедитесь, что терминал (gnome-терминал) разрешает консольный звонок на вкладке настроек.
Это было проверено с помощью backspace на пустой терминальной линии. Это также было проверено с помощью утилиты beep
(при условии, что вы установили ее). Вместо этого вы можете выполнить программный звуковой сигнал через объект java.awt.Toolkit:
java.awt.Toolkit.getDefaultToolkit().beep()
.
Объект Toolkit более эффективен, чем утилита beep
.
Кстати, некоторым людям не нравится динамик ПК. Ссылка
Используйте звуковую программу (http://johnath.com/beep/), я скомпилировал v1.3, потому что 1.2.2 в репозиториях Lucid не работают.
Убедитесь, что ваш терминал и тема не съели событие.
Внешние инструменты работают, говорите вы. Вы можете погрузиться в их код. Это может помочь.
В моей системе Oneiric мне пришлось сделать следующее, чтобы XBell / XkbBell снова заработал:
pcspkr
(как вы уже это сделали через /etc/modprobe.d/blacklist.conf
) pulseaudio-module-x11
(который, кажется, поглощает все события XBell) options snd-hda-intel beep_mode=2
в /etc/modprobe.d/enable-beep.conf
(вам нужен только тот случай, если у вас есть система со звуковым чипом Intel, такая как моя Latitude E6420 ). После этого включите звук динамика в alsamixer. Некоторые терминалы (например, консоль, см. Ошибку Ошибка 177861 ) игнорируют символ звонка. Хороший способ проверить системный сигнал - это команда xkbbell
.
После того, как я все это сделал, вызов java Toolkit.getDefaultToolkit().beep()
прекрасно работает.