Impossible de faire biper mon ordinateur

Bonjour,

Depuis relativement longtemps, j'essaye de faire biper mon ordinateur sans succès. J'ai essayé:

printf("\a");
printf("%c", 7);
Beep(440, 1000);
qui ne marche pas puisque je suis sous Linux

Je sais qu'il existe plein de page de forum dédiée à cette question mais ils terminent souvent par une des solutions citées plus haut. Auriez-vous quelque chose d'autres à me proposer?

D'avance, merci

5 réponses

  1. Modérateur
    Tu peux trouver des infos ici et hacker le code (sous GPL)
    htttp://www.johnath.com/beep/

    Fais un
    git clone  git://github.com/johnath/beep.git
    1
    1. merci à vous deux.
      Je vais me pencher sur le code Jonath, ça n'a pas l'air simple :)
      0
    2. Rectification: il utilise dans son code
      printf("\a");

      ce qui ne marche pas chez moi.
      C'est peut-être un problème plus général de droit de faire biper l'ordinateur (les bips sont généralement là pour identifier un problème lorsqu'on allume un ordi [si c'est les même bips..]).
      J'ai essayé sur plusieurs ordinateurs et même en tant que su sur un avec toujours le même résultat.
      0
    3. Contributeur
      non, le code de Johnathan Nightingale utilise evdev et l'événement
      EV_SND
      décrit là https://www.kernel.org/doc/Documentation/input/event-codes.txt

      putchar('\a');
      n'est utilisé que comme "fallback" si ioctl ou le write renvoient des erreurs :

      voir :

      https://github.com/johnath/beep/blob/master/beep.c#L294
      https://github.com/johnath/beep/blob/master/beep.c#L100

      voir aussi le README, qui comporte des avertissements sur les limites de fonctionnement de son programme en raison du fonctionnement de ioctl sous Linux si la commande n'est pas lancée par root ou à partir d'un vrai terminal localement ouvert sur la machine par l'utilisateur (et non ouvert à distance ou un terminal émulé sous X), et les moyens de contourner la difficulté.

      https://github.com/johnath/beep/blob/master/README#L25

      Dal
      0
    4. J'ai aussi essayé
      putchar('\a');

      qui ne marche pas non plus.
      Je n'ai pas très bien compris le reste mais tu penses que si je le compile et éxecute, les bips marcheront??
      0
    5. Contributeur
      C'est bizarre que
      putchar('\a');
      ne donne rien. Exécutes-tu ton programme à partir d'une session X. Chez moi, sous Gnome, le son passe par la carte son et fait un "bong" sur un PC portable avec une carte son supportée.

      S'agissant de beep, tu n'as pas vraiment besoin de le compiler si ta distribution Linux comprend un paquet pour cet utilitaire et si tout ce que tu veux c'est un programme à lancer qui fasse bip.

      C'est le cas par exemple de Debian : https://packages.debian.org/fr/wheezy/beep (c'est le même utilitaire).

      Quand à savoir si cela "marchera", je ne peux pas le deviner.

      Cependant, tu devras lire attentivement le README ou la partie correspondante figurant dans la page de manuel (man beep) une fois que tu auras installé beep,

      Debian installe l'utilitaire dans dans /usr/bin avec les permissions -rwsr-xr-x root audio ce qui permet à l'utilitaire de fonctionner comme il est sensé fonctionner dans un maximum de cas.

      En tout cas, il marche pour moi.

      En prime, tu peux faire de la musique avec :-)

      Dal
      0
  2. Est-ce que ton ordinateur peut bip au moins? Vérifie si il y a un bippeur branché sur la carte mère.
    1
    1. Oui j'ai testé, il bip une fois lors de l'allumage (pour signifier que tout va bien)
      0
  3. Contributeur
    Bonjour,

    Rien de portable...
    Sinon, pourquoi ne pas installer "beep" ?
    Ensuite, tu l'appelles via "system()". Bon, c'est pas très propre, mais bon.
    En plus, tu peux choisir la fréquence :
    system("beep -f 1000"); (par exemple).

    Cdlt,
    0
    1. Contributeur
      Salut,

      Essaye un simple
      tput bel
      ;-)
      -1