Beep

Перейти к навигацииПерейти к поиску

Beep (/biːp/, англ.  — гудок, сигнал) — простой однотонный звук, выводимый через встроенный динамик персонального компьютера.

Также «beep» называются различные функции и программы, связанные с этим звуком.

Функция Windows API

Beep — функция Windows API, предназначенная для воспроизведения простых однотонных звуков через встроенный динамик с заданной частотой и продолжительностью. Существует в операционных системах семейства Microsoft Windows и ReactOS. Входит в состав ядра системы (Kernel32.dll в 32-х разрядных версиях Windows и ReactOS).[1][2]

В более общем смысле beep (бип) — любой короткий звуковой сигнал, издаваемый любым электронным устройством, часто единственная наглядная возможность получить какую-либо информацию от устройства.

Применение

Функция Beep выполняется синхронно, то есть возвращает управление лишь после завершения воспроизведения звука. Она имеет два параметра:

  • dwFrec — частота звука в герцах, допустимый диапазон — от 37 до 32 767 Гц;
  • dwDuration — продолжительность звука в миллисекундах;

и возвращает значение типа BOOL (ненулевое при успешном выполнении).

Минимальное допустимое значение частоты звука 37 Гц предотвращает возможность случайного или преднамеренного воспроизведения инфразвука, который может представлять опасность для здоровья человека.

В Windows XP SP3+ для воспроизведения используется устройство, использующее при прослушивании музыки. Если функция Beep воспроизводит звук через PC-speaker, стандартные средства регулировки громкости не окажут на неё влияния. Вместо этого для отключения звука можно использовать команды:

net stop beep
sc config beep start= disabled

Реализация Beep в Windows NT и ReactOS использует файл-устройство «\Device\Beep\». Поэтому прерывание работы потока во время её выполнения может привести к тому, что дескриптор устройства останется незакрытым.[3]

История

Впервые появилась ещё в 16-разрядных версиях Windows. В ОС Windows 95/98/Me функция Beep была реализована ограниченно: значения обоих параметров игнорируются. При наличии звуковой карты воспроизводится стандартный системный звук, а при её отсутствии — звук с некоторыми стандартными параметрами через встроенный динамик.

В ReactOS функция Beep появилась 10 марта 1999 года.[4] Контроль значений параметров, наряду с рядом других исправлений, добавлен 27 октября 2005 года.[5]

Пример использования

Пример синкопы

Пример использования функции Beepо файле

Ниже приведён исходный текст программы на языке Си, которая воспроизводит мелодию — пример синкопы.

#include <windows.h>

int WINAPI
WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
  Beep(294, 1000/8);
  Beep(440, 1000/4);
  Beep(262*2, 1000/4);
  Beep(330*2, 1000/4);
  Beep(415, 1000/8);
  Beep(440, 1000);

  return 0;
}

См. также

Примечания

  1. Beep Архивная копия от 8 июня 2007 на Wayback Machine — Microsoft Developer Network.
  2. dll/win32/kernel32/misc/error.c (недоступная ссылка) — реализация функции Beep в ReactOS.
  3. Аналог функций Sound() и NoSound() под WindowsNT/2k/XP. Архивная копия от 14 мая 2007 на Wayback Machine — Мастера DELPHI.
  4. Diff of /trunk/reactos/dll/win32/kernel32/misc/error.c, revision 285 (недоступная ссылка) — ReactOS.
  5. Diff of /trunk/reactos/dll/win32/kernel32/misc/error.c, revision 18798 (недоступная ссылка) — ReactOS.