Gambas France BETA


Pas de compte ? Incription

beep

Ce sujet est résolu.

1
AuteurMessages
archi12#1 Posté le 19/9/2014 à 11:12:17
bonjour,
pas trouve sur le forum comment programmer un simple "BEEP" avec gambas 3.5.3 sur Mint 17
merci de votre aide
Reivillo#2 Posté le 19/9/2014 à 14:30:44
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonjour archi12.

Moi aussi, je me suis fatigué à chercher, même en suivant Ce lien
Fonctionne pas sur tous les systèmes.
Alors je me suis fait ma ch'tite bidouille sur Gambas.
Tu la trouveras sur la Forge ICI.

Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
archi12#3 Posté le 19/9/2014 à 15:53:46
Merci Reivillo,
c'est vrai qu'on ne peut trouver plus simple !
didier18#4 Posté le 19/9/2014 à 16:25:58
Super...
Merci archi12 (d'avoir posé la question)
Merci Reivillo (réponse rapide et direct à l'essentiel ! Méfie toi on va en prendre l'habitude... ;-)
Reivillo#5 Posté le 19/9/2014 à 17:07:08
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »@ didier18, bonsoir.
Et Merci de vos Retours.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
vuott#6 Posté le 19/9/2014 à 22:03:11
Ne cedere ineluctabili possimusIt's possible to get a bip no using "Shell" nor a wav file, but by using ALSA external functions:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
PRIVATE CONST BUFFER_LEN AS INTEGER = 44100


LIBRARY "libasound:2"

PRIVATE CONST device AS STRING = "default"
PRIVATE CONST SND_PCM_STREAM_PLAYBACK AS INTEGER = 0
PRIVATE CONST SND_PCM_FORMAT_FLOAT AS INTEGER = 14
PRIVATE CONST SND_PCM_ACCESS_RW_INTERLEAVED AS INTEGER = 3


' int snd_pcm_open (snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode)
PRIVATE EXTERN snd_pcm_open(pcm AS POINTER, name AS STRING, stream AS INTEGER, mode AS INTEGER) AS INTEGER

' int snd_pcm_set_params(snd_pcm_t * pcm, snd_pcm_format_t format, snd_pcm_access_t access, unsigned int channels, unsigned int rate, int soft_resample, unsigned Int latency)
PRIVATE EXTERN snd_pcm_set_params(pcm AS POINTER, formatInt AS INTEGER, accesso AS INTEGER, channels AS INTEGER, rate AS INTEGER, soft_resample AS INTEGER, latency AS INTEGER) AS INTEGER

' snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size)
PRIVATE EXTERN snd_pcm_writei(pcm AS POINTER, buffSn AS Single[], sInt AS INTEGER) AS INTEGER

' const char * snd_strerror (int errnum)
PRIVATE EXTERN snd_strerror(errnum AS INTEGER) AS STRING

' snd_pcm_close(snd_pcm_t *pcm)
PRIVATE EXTERN snd_pcm_close(pcm AS POINTER)


PUBLIC SUB Main()

DIM err, j, k, frames, fc AS INTEGER
DIM handle AS POINTER
DIM hz AS SINGLE
DIM buffer AS NEW Single[]


fc = BUFFER_LEN ' rate
hz = 880.0 ' wave frequency


err = snd_pcm_open(VarPtr(handle), device, SND_PCM_STREAM_PLAYBACK, 0)
IF err < 0 THEN Error.Raise("Error opening PCM sub-system: " & snd_strerror(err))

err = snd_pcm_set_params(handle, SND_PCM_FORMAT_FLOAT, SND_PCM_ACCESS_RW_INTERLEAVED, 1, fc, 1, 500000)
IF err < 0 THEN Error.Raise("Error setting PCM sub-system: " & snd_strerror(err))

' Create sinusoidal-wave:
FOR k = 0 TO BUFFER_LEN - 1
buffer.Add(Sin(2 * Pi * hz / fc * k))
NEXT


' Sends sinu-wave data to ALSA PCM device:
FOR j = 0 TO 4
frames = snd_pcm_writei(handle, buffer, BUFFER_LEN / 8 )
IF frames < 0 THEN Error.Raise("Error on 'snd_pcm_writei' function !")
NEXT


' Closing...:
snd_pcm_close(handle)

END
« Vita non suavis esse potest, nec Mors amara. »
1