Jouer un son via Terminal

Coucou! Je voudrais jouer un son via une commande par le terminal, pour me signifier la fin, ou l'erreur dans mes compilations.
Je sais qu'il y a beep sous Linux mais je ne connais pas d'équivalent sous MacOSX.

Juste un Buzz me suffirais, je veux pas une mélodie de Mozart non plus!  :P

Réponses

  • GreensourceGreensource Membre
    21:31 modifié #2
    Bon visiblement il y a des outils C qui permettent de faire ça. Je vais m'en faire un petit programme shell.
    Saud que j'ai un #include <curses>
    Mais à  la compile je ne sais pas qu'elle library linké:
    Undefined symbols:
      "_beep", referenced from:
          _main in ccl4bgpi.o
  • AliGatorAliGator Membre, Modérateur
    21:31 modifié #3
    AppleScript en ligne de commande me semble le plus simple et moins prise de tête.
    osascript -e &quot;beep&quot;
    

    ou si plutôt qu'un beep tu veux qu'il prononce une phrase :
    osascript -e &#39;say &quot;Finished!&quot;&#39;
    


    Par contre je ne suis pas sûr qu'on puisse lui demander de jouer un fichier son autre (mp3 ou autre)
  • GreensourceGreensource Membre
    21:31 modifié #4
    Je connaissait pas cette commande, pratique.
    Par contre le "beep" marche pas chez moi.

    Merci
  • AliGatorAliGator Membre, Modérateur
    21:31 modifié #5
    En fait à  ma grande surprise il ne marche pas chez moi non plus... y compris quand j'ouvre l'Editeur de Scripts et que je tape "beep" dans la fenêtre de script et exécute... (donc c'est pas lié à  l'aspect "terminal" de la chose, mais à  AppleScript). Etrange...
  • Philippe49Philippe49 Membre
    21:31 modifié #6
    putchar('\a');
  • AliGatorAliGator Membre, Modérateur
    juillet 2009 modifié #7
    ou dans la même idée mais en ligne de commande et non plus en C :
    echo ^G
    
    à  taper, dans le terminal ou un éditeur en ligne de commande style vi, avec :
    - "echo "
    - suivi de ctrl-V (pour dire "attention le caractère suivant me l'interprète pas écrit le sur la ligne tel quel")
    - puis de ctrl-G.
    (donc ne pas mettre le "^" littéralement sur la ligne de commande hein)

    L'appui sur ctrl-G après un ctrl-V (ce dernier demandant la non-interprétation) va insérer "^G" sur la ligne, et une fois qu'on valide ce "echo ^G" le "^G" est interprété et bien transformé en caractère ascii de code 7 (soit le caractère nommé "BEL", qui fait un beep)

    Testé et approuvé.
  • tabliertablier Membre
    21:31 modifié #8
      :( Le problème avec AppleScript, c'est que d'une version à  l'autre il y de petites modifications de syntaxe! (C'est absolument chiant!!!)
    Pour avoir un beep, il faut écrire:
    osascript -e "beep 1"

    sans chiffre c'est équivalent à  "osascript -e "beep 0"  -> donc "silence"!
      Bien sur, "beep 5" donne 5 beeps.
  • AliGatorAliGator Membre, Modérateur
    21:31 modifié #9
    Exact, en plus le son est un peu tronqué car le process osascript s'arrête un peu tôt... du coup pour ma part mon son de beep n'a pas tout à  fait le temps de se finir.

    [tt]echo ^G[/tt] est donc définitivement le moyen le plus simple de faire un beep via un shell script.

    Au fait j'y pense, vu que c'est pour te signaler qu'une action est terminée, tu peux aussi utiliser "growlnotify", c'est l'outil idéal pour envoyer des notifications ;) (Bon il faut avoir installé Growl, mais qui n'a pas installé ce super outil d'affichage de notifications répandu et utilisé par plein d'applis ? ;) et installé "growlnotify" qui est fourni avec l'image disque de Growl)
  • GreensourceGreensource Membre
    juillet 2009 modifié #10
    Ah ouais c'est pas bête j'avais pas pensé à  Growl. Je vais couplé les deux à  la limite.
    Je vais aussi regarder avec Applescript il doit y avoir un moyen de faire comme beep mais avec le flash de l'écran.

    [edit:] Pas trouvé de flash, mais finalement j'ai fait le script suivant:
    #!/bin/sh<br /><br />if [ $# == 0 ]<br />	# Alerte de base, sans option<br />	then echo &quot;Alert !&quot; | growlnotify<br />	else if [ $# == 1 ]<br />			# Alerte avec juste une chaine en argument<br />			then echo &quot;$1&quot; | growlnotify<br />			# Alerte avec une chaine en argument plus le nom de l&#39;application dont on veut l&#39;icone<br />			else echo &quot;$1&quot; | growlnotify -a &quot;$2&quot;<br />		 fi<br />fi<br /># pouet pouet pouet<br />osascript -e &quot;beep 3&quot;
    
  • schlumschlum Membre
    21:31 modifié #11
    Prise de tête le "echo ^G"  :)

    printf &quot;&#092;a&quot;
    
    tout simplement...
  • tabliertablier Membre
    juillet 2009 modifié #12
    A la place de osascript -e "beep 3", je viens d'essayer cela:
      osascript -e 'say "it is finished" '
      :P Chez moi ça marche et c'est plus rigolo que bip bip bip.

    si nécessaire, régler d'abord le volume: osascript -e 'set volume .... etc
  • GreensourceGreensource Membre
    21:31 modifié #13
    Ouais bas chez moi il a "péter" un cable mon Mac! Le beep à  déclanché une sorte de buzzer hyper fort, on a tous frisé la crise cardiaque dans le bureau!
    Ca vous a déjà  fait un truc comme ça?
    En tout cas je la sent passer la fin de compilation!  :P
  • tabliertablier Membre
    juillet 2009 modifié #14
    Ben non, il ne m'a jamais fait ça!  j'ai continuer sur mon idée de "say ...  "
    En lui faisant prononcer de l'anglais inexistant, on a l'impression que le Mac cause "French":
    osascript -e 'say "say feeny" '
    et un français entant: c'est fini.
      :P Very amazing isn't it !
  • AliGatorAliGator Membre, Modérateur
    21:31 modifié #15
    dans 1247761365:

    Prise de tête le "echo ^G"  :)

    printf &quot;&#092;a&quot;
    
    tout simplement...
    Ben heu... ça dépend, non ?
    Si t'écris un programme en C, évidemment que le printf est plus adapté.
    Si t'écris un programme en shell script, ce qui semble être le cas, un echo ^G est tout aussi simple qu'un printf, et plus adapté.
    Ca dépend du langage. C ==> printf, bash ==> echo
  • AliGatorAliGator Membre, Modérateur
    21:31 modifié #16
    dans 1247774516:

    A la place de osascript -e "beep 3", je viens d'essayer cela:
      osascript -e 'say "it is finished" '
      :P Chez moi ça marche et c'est plus rigolo que bip bip bip.

    si nécessaire, régler d'abord le volume: osascript -e 'set volume .... etc
    Heu c'est un peu ce que j'ai préconisé dans ma première réponse, non ? :P :)
  • schlumschlum Membre
    juillet 2009 modifié #17
    dans 1247849102:

    dans 1247761365:

    Prise de tête le "echo ^G"  :)

    printf &quot;&#092;a&quot;
    
    tout simplement...
    Ben heu... ça dépend, non ?
    Si t'écris un programme en C, évidemment que le printf est plus adapté.
    Si t'écris un programme en shell script, ce qui semble être le cas, un echo ^G est tout aussi simple qu'un printf, et plus adapté.
    Ca dépend du langage. C ==> printf, bash ==> echo


    Ben non, "printf" en shell permet d'afficher les caractères spéciaux bien plus facilement que "echo"  ;) (avec leur séquence hexa UTF-8 même si on veut)

    Exemple :
    printf &quot;&#092;xC3&#092;xA5&#092;a&#092;n&quot;
    



    Surtout que si c'est pour mettre dans un script, je sais pas si ta bidouille de ctrl-V ctrl-G fonctionne...
  • AliGatorAliGator Membre, Modérateur
    21:31 modifié #18
    Ah ben mince, je connaissais pas la commande shell printf, j'étais donc persuadé que c'était du C... okaayyy :)
    (Mais bon dans un script ou dans le terminal, ctrl-V+ctrl-G fonctionne pareil, c'est juste pour insérer le caractère au lieu de l'interpréter (un peu comme quand tu tapes le anti-slash quoi :P)
    Mais c'est vrai que du coup printf marche aussi bien :)
  • tabliertablier Membre
    juillet 2009 modifié #19
    Heu c'est un peu ce que j'ai préconisé dans ma première réponse, non ?

    Ah! désolé j'ai pris le train en marche et j'ai sauté le début!
      Rouge de honte!!
Connectez-vous ou Inscrivez-vous pour répondre.