Динамик управляется вторым каналом таймера на системной плате,
0 канал это системный таймер, 1 - что-там с памятью, 2 - бипер.
Микросхема таймера 8253, раньше отдельно, сейчас интегрирована, но по портам совместима. Для винды есть драйвер через который можно писать в порты, под линукс просто разрешения надо выставить и из приложения писать. В любом языке есть библиотечные функции которые управляют этим динамиком, обычно называются beep и имеют два параметра - на какой частоте пищать и как долго пищать.
Это только в случае, если канал пищалки подцеплен ко встроенной звуковухе (что бывает редко) и пищит, соответственно, через колонки. У микрух встроек бывает выход специально для системного динамика, но никогда не видел, чтобы изготовители материнок его задействовали.
Посмотрел. Приблизительно понял как работает, но не знаю как разрешить пользователю бипать. Утилита для изтания звука открывает файл консоли tty0 и ею бипает. Я попробовал дать права на чтение/запись всем, но всё равно от пользователя не пищит. Всегда пишет «ioctl: Operation not permitted».
То-то немало крутой аппаратуры кичится своим «1-bit DAC»... На PC проблема в частоте ШИМа, и в том, что система во время проигрывания будет стоять раком.
Чо, я на спектруме так делал. В около 40кБт озу входило около 4 секунд звука через однобитный порт i/o магнитофона. Звук был трэшак, да. Но он был. На z80 ассемблере