Newsgroup: it.comp.lang.delphi
Titolo: Beep

Perche' la funzione BEEP non fa' niente senza scheda audio? Nulla,
niente beep, tutto tace...
Chris

 niente beep, tutto tace...
Sia il Beep implementato dalla VCL che quello Win32 non riguardano la scheda
audio ma il PC Speaker, poi è possibile che se ci sia una scheda audio
questa rimpiazzi lo speaker dello chassis. Hai provato entrambi?
--
- Carlo -
c.b...@libero.it



non è che il beep segua le impostaioni di windows?
pannnello di controllo - suono predefinito?
solo supposizioni... ;-)
non vedo un PC senza scheda audio dal paleolitico! ;-)
Ciao,
Alan Solo


wrote:
Ho provato sia su un win2k sia su un win98 (entrambi senza scheda
audio), ma niente beep! :P
Chris

I suoni sul speaker li fai con queste procedure:
Procedure Suoni(freq: Word); Pascal;
Begin
  asm
    PUSH  EBX
    MOV   BX,FREQ
    MOV   AX,34DDH
    MOV   DX,0012H
    CMP   DX,BX
    JNC   @@2
    DIV   BX
    MOV   BX,AX
    IN   AL,61H
    TEST  AL,3
    JNZ   @@1
    OR   AL,3
    OUT   61H,AL
    MOV   AL,0B6H
    OUT   43H,AL
@@1:MOV   AL,BL
    OUT   42H,AL
    MOV   AL,BH
    OUT   42H,AL
@@2:POP   EBX
  end;
end;
Procedure NoSuoni; Pascal;
Begin
  asm
    IN    AL,61H
    AND   AL,0FCH
    OUT   61H,AL
  end;
end;
altrimenti con messagebeep(0) i suoni passano alla scheda.

I suoni sul speaker li fai con queste procedure:
Funziona! Pero' non su Win 2k :)
Chris

> Funziona! Pero' non su Win 2k :)
Con W2K non hai accesso diretto all'hardware, a meno che non ci sia
installato nel sistema un device driver che il kernel ti fa usare per
accedere, appunto, al dispositivo.
Ciao, Sandro

 installato nel sistema un device driver che ...
Che generalmente non c'è e te lo devi scrivere a manina! :)
Ciao ragazzi, domattina parto ... buone vacanze a tutti! :-)


> Ciao ragazzi, domattina parto ... buone vacanze a tutti! :-)
buone vacanze e se in spiaggia becchi un VB-ista mi raccomando affogalo ;))
Ciao, Sandro

 buone vacanze e se in spiaggia becchi un VB-ista mi raccomando affogalo
;))
Speravo, almeno in spiaggia, di trovare beccare qualche bella ragazza! :-)
Cmq grazie, sono in proprio in partenza ...


On Thu, 02 Aug 2001 09:00:34 GMT, 
chr...@libero.it
(Christian Meneghini) wrote:

Prova con :
MessageBeep( $FFFFFFFF ) ;
--
CyberWalkie - walkietalkie(at)
libero.it



hai provato a vedere nel pannello di controllo - Suoni se č abilitato?
la procedura Beep di Delphi richiama l'API MessageBeep:
-------------
BOOL MessageBeep( UINT uType 	// sound type   );	
Parameters uType:
Specifies the sound type, as identified by an entry in the [sounds]
section of the registry. This parameter can be one of the following
values: 
Value	Sound
0xFFFFFFFF	Standard beep using the computer speaker
MB_ICONASTERISK	SystemAsterisk
MB_ICONEXCLAMATION	SystemExclamation
MB_ICONHAND	SystemHand
MB_ICONQUESTION	SystemQuestion
MB_OK	SystemDefault
 
If it cannot play the specified alert sound, MessageBeep attempts to
play the system default sound. If it cannot play the system default
sound, the function produces a standard beep sound through the
computer speaker. 
*The user can disable the warning beep by using the Control Panel
Sound application.*
---------------
Quindi o farei come suggerisce CyberWalkie che passando 0xFFFFFFFF usa
lo speaker *sempre*, oppure userei il beep normale che usa la scheda
sonora con il suono personalizzato (se c'č) altrimenti usa lo speaker
... o almeno cosě dovrebbe fare... 8)
Ciao,
Alan Solo

:

come no! Windows 2000 non solo permette l'accesso diretto all'hardware 
(semmai sono i driver a non permetterlo :), ma lo permette in un modo 
così lineare, così coerente... quel \Device\Beep sta lì per bellezza? 
(noto però che, stranamente, \Device\Beep non è mappato nelle 
periferiche DOS... ma ottenere un handle con le funzioni di NTDLL non 
dovrebbe essere difficile. Dubbio: che razza di IOCTL supporterà la 
periferica Beep?)

 periferica Beep?)
sotto W2K usando l'assembly o comunque pilotando direttamente la porta di
I/O non hai accesso all'hardware e il kernel, lo ribadisco, non te lo
consente -apposta-. E' uno dei vantaggi di W2K rispetto a W9x. Il kernel
blinda l'hardware, dalla memoria alle periferiche, rispetto agli accessi
diretti da parte degli applicativi. Usando le API di Win, dal momento che lo
speaker e' una periferica di sistema (vale a dire che e' un componente della
scheda madre) invece lo puoi gestire, anche se non ho mai approfondito la
cosa, dato che non mi e' mai servito farlo.
Ciao, Sandro

e' mai servito farlo.
Guarda, è molto più semplice di quello che immagini. Liberati del 
concetto di "accesso all'hardware", e comincia a pensare piuttosto 
"accesso alle periferiche". E' semplice come aprire un file, anzi, è 
proprio la stessa cosa
Per iniziare, vedi le funzioni:
DefineDosDevice
QueryDosDevice
CreateFile
DeviceIoControl