Я хочу изменить частоту звука по умолчанию SND_BELL
(которая используется, когда \a
или BEL или ^ G печатаются на экране) на более высокие значения (текущее значение по умолчанию составляет около 750 Гц).
Конечно, этот поворот требует полного программного решения.
Проблема в том, что я не понимаю, как int value
в pcspkr_event()
преобразуется из заданной частоты в подходящее значение при использовании с SND_TONE
. Поэтому я не понимаю, как value=1000
воспроизводит сигнал с частотой 750 Гц.
switch (code) {
case SND_BELL: if (value) value = 1000; // changing this line would change the default beep frequency, but why 1000 does 750Hz tone????
case SND_TONE: break; // with SND_TONE the value variable is already computed, so do nothing
default: return -1;
}
Поскольку та же функция реализует SND_TONE
я подумал, что было бы неплохо получить то, что вызывает ее, поэтому я смог бы найти функцию, которая преобразует частоту. Однако обратная трассировка не сообщает имени функции, которая вызывает pcspkr_event, и оказалось, что преобразование все еще не выполнено в функции, которая ее вызывает (« ìnput_handle_event()
).
Я также не смог найти документацию о том, как использовать динамик, когда нет операционной системы.
Так какова частота отношения между частотой и value
переменной value`?