Newsgroup: it.comp.os.linux.iniziare
Titolo: far fare beep alla console

salve.
nel vecchio 4dos c'era beep;
in linux cosa ho? vorrei far fare diversi beep a diverse lunghezze e
tonalità; sicuramente si può, ma non trovo come;
mi aiutate?
grazie!
Sent via Deja.com
http://www.deja.com/

in linux cosa ho?
puoi provare un semplice
print("\x07") //spero
o un suo equivalente, per il beep standard (ossia spedire il carattere 
bell, numero 7 nella tabella ASCII, alla console - in genere funziona)
per cambiare frequenza e lunghezza non so proprio. In DOS e derivati si 
faceva con gli interrupt, in Windows NT c'è un'apposita funzione nell'API 
del sottosistema Win32, se avessi qui l'API del sottosistema Posix forse 
saprei dirti.
Noto solo adesso, con molta vergogna, che questo è 
it.comp.os.linux.iniziare e non it.comp.os.linux.development... hmm... 
diciamo che fai un beep.c contenente:
#include <stdio.h>
void main(void)
{
    	print("\x07");
}
poi lo compili con gcc e speri che funzioni...

saprei dirti.
Eccolo li`! Questa (piu` o meno) e` la strada. Passare attraverso le curses
(curs_beep(3)), se si vuole un semplice beep; o comunque usare funzioni un
po' piu` elevate e (soprattutto) piu` "morbide" di un '007'.
E poi bisognerebbe anche capire come e qualmente si vogliono produrre
questi suoni: programma in C, bash...
Ciao.

questi suoni: programma in C, bash...
programma in C, così all'impronta direi una roba come:
(così faccio anche un po' di esercizio ;)
#include <curses.h> // sostituire con il nome giusto ^^;;;
void main(int argc, char **argv)
{
    	int freq = 440; // un La a 440 Hz, se la memoria non mi difetta
    	int len  = 100; // 100 millisecondi (spero)
    	switch(argc)
    	{
    	    	case 0  : break;
    	    	// 'sto casting non mi sconfiffera, mi sa che qui crasha
    	    	case 1  : freq = (int)argv[0];
    	    	default : len = (int)argv[1];
    	}
    	curs_beep(freq, len); // sostituire con la funzione giusta ^^;;;
}
PS:(pubblicità progresso: il carattere bell si scrive con CTRL+G... non 
dite a giovanni che ve l'ho detto io...)

mi aiutate?
vai su freshmeat e cerca il programma che - udite, udite - si chiama:
beep
Ciao
-- 
   ^  RjVal ICQ# 55420196-Please, remove `cicabum' to reply-"R:" killed
  ^_°   `When you say "I wrote a program that crashed Windows", people 
_°_^_^_ just stare at you blankly and say "Hey, I got those with the
   |    system, *for free*".' Linus Torvalds  

grazie!
un beep lo puoi fare così
echo -e \\a
da usare all'interno di script va benissimo
poi per tonalità e altro non saprei...si può fare qualcosa
forse con xset  -man xset-
oppure ci sarà sicuramente qualche programmino
-- 
CIAO
           *** abrate ***  
 

bwaaaaaaaaaah, mammaaaaaaa, giovanni vuole ammazzarmiiiiii...
Mi scuso per la veemenza forse eccessiva. E` che ho lottato strenuamente
per anni contro programmi che non c'era verso di zittire. Ad uno, in
particolare, sembrava simpatico, in un certo report, emettere un beep ogni
volta che stampava un record (moooolto utile, come puoi immaginare).
Quando c'erano da stampare un migliaio di record, arrivava sempre qualcuno
a chiedermi di smettere di giocare a Pinball che li`, insomma, si lavorava
e in ogni caso disturbavo gli altri.
A parte le mie idiosincrasie personali, comunque, e` possibile motivare la
cosa anche in termini un po' piu` razionali. Fai conto che sia sordo, che
cosa me ne faccio di un beep? Usando invece una libreria che si serva di
termcap o terminfo, l'utente puo` configurare la propria console in modo
che produca una qualche segnalazione visiva in sostituzione di quella
sonora (visual bell).
In generale (quando non siano imposti particolari vincoli sulle prestazioni
o altro, s'intende) e` preferibile interagire con hardware e periferiche
attraverso le funzioni a piu` alto livello disponibili. A parte che di
solito e` anche piu` facile, se ne guadagna in flessibilita` e
portabilita`.
Ciao.

 tonalità; sicuramente si può, ma non trovo come;
script$ cat carillon.sh 
#!/bin/sh 
# frequencies:
DO=330
DON=349
RE=370
REN=392
MI=415
FA=440
FAN=466
SOL=494
SOLN=523
LA=554
LAN=587
SI=622
XDO=660
XDON=698
XRE=740
XREN=784
NUM=$1
LENGHT=100
case $NUM in
	"1")	MELODY="$DO $RE $SI $LA $MI $SOL $FA $RE $DO";;
	"2")	MELODY="750 1000 2000 3000 4000 5000 4000 3000" ;;
	"3")	MELODY="$DO $RE $SI $LA $MI $SOL $FA $RE $DO"
			LENGHT=50 ;;
	*)	MELODY="$DO $RE $SI $LA $MI $SOL $FA $RE $DO";;
esac
INTERVAL=`expr $LENGHT \* 3`
pause() { # null-loop INDEX times
	INDEX=$1
	until [ $INDEX -le 0 ] ; do INDEX=$((INDEX-1)) 
		done 
}
carrilon() {
	for NOTE in $MELODY ; do
			echo -ne "\33[10;$NOTE]\33[11;$LENGHT]"
			echo -ne "\a"
			#		pause 1000
			pause $INTERVAL
	done
}
carillon
# end carillon.sh
prova :-)
(non e' farina del mio sacco, ma non mi ricordo piu' dove l'ho preso)
-- 
Pa.Ped, Como
http://www.fastflow.it/~paolop
ICQ: 4755831
VOTE AGAINST SPAM! 
http://www.politik-digital.de/spam/it/
Contro i brevetti software: 
http://petition.eurolinux.org/index_html

echo -e \\a
echo ^G
in DOS funziona

>(non e' farina del mio sacco, ma non mi ricordo piu' dove l'ho preso)
Direi che se ben ricordo e` incluso del buon iplogd del Serni... 
-- 
Renato "Lay-up" Salzano - 
http://members.xoom.it/hitman_work/
 
e-posta: sonicblast (at) 
inwind.it
 / Xena:TWP fan
Band musicale consigliata della settimana: Queen Adreena
-- Webdesigner & sysadmin di 
http://www.italservicesnc.it
 --

periferiche attraverso le funzioni a piu` alto livello disponibili.
che dio mi fulmini se mai scriverň una sola riga in assembly ^___^

tipo di segnalazione?
Si`, in Linux e` anche possibile (in Windows/DOS e` un pelino piu`
complicato). La soluzione piu` flessibile e` comunque appoggiarsi a
funzioni piu` astratte.
Ciao.