Заставить динамик ПК подавать звуковой сигнал [дубликат]

На этот вопрос уже есть ответ здесь:

За эти годы было много написано о том, как получить звуковой сигнал в выпусках 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 работает, но требует наибольших затрат.

12
задан 25 February 2016 в 22:32

4 ответа

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.

Кстати, некоторым людям не нравится динамик ПК. Ссылка

0
ответ дан 25 February 2016 в 22:32

Используйте звуковую программу (http://johnath.com/beep/), я скомпилировал v1.3, потому что 1.2.2 в репозиториях Lucid не работают.

  • вам нужно запустить его с помощью sudo
  • модуль pcspkr должен быть загружен, как вы все это сделали
0
ответ дан 25 February 2016 в 22:32

Убедитесь, что ваш терминал и тема не съели событие.

Внешние инструменты работают, говорите вы. Вы можете погрузиться в их код. Это может помочь.

0
ответ дан 25 February 2016 в 22:32

В моей системе Oneiric мне пришлось сделать следующее, чтобы XBell / XkbBell снова заработал:

  1. Загрузите модуль pcspkr (как вы уже это сделали через /etc/modprobe.d/blacklist.conf)
  2. Удалите пакет pulseaudio-module-x11 (который, кажется, поглощает все события XBell)
  3. Поместите options snd-hda-intel beep_mode=2 в /etc/modprobe.d/enable-beep.conf (вам нужен только тот случай, если у вас есть система со звуковым чипом Intel, такая как моя Latitude E6420 ). После этого включите звук динамика в alsamixer.

Некоторые терминалы (например, консоль, см. Ошибку Ошибка 177861 ) игнорируют символ звонка. Хороший способ проверить системный сигнал - это команда xkbbell.

После того, как я все это сделал, вызов java Toolkit.getDefaultToolkit().beep() прекрасно работает.

0
ответ дан 25 February 2016 в 22:32

Другие вопросы по тегам:

Похожие вопросы: