DTMF

Programmation d'applications complexes
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

DTMF

Message par Backup »

comme vous le savez peut etre nos telephones sont a frequences vocale
oui mais ça veut dire quoi ?

pour shematiser :
ben que lorsqu'on tape nos numeros sur le clavier , ça fait de la musique , chaque touche ayant sa propre frequence !
en fait il s'agit de 2 fréquences croisées (diffusé en parallèle )

bon d'accords , mais ce que vous ne savez peut etre pas,
c'est que si vous faites entendre a votre téléphone les fréquences des touches
ben il va composer le numéro ( alors que vous ne touchez pas votre clavier !! :D )

je vous ais fait un petit programme qui contient les Wav de chaque touches au format DTMF

pour l'exemple j'utilise le numero "3131" qui permet de savoir qui a cherché a nous appeler ! (numero gratuit)
bien sur si vous avez un portable essayer d'utiliser un de vos numeros

utilisation : une fois votre numero parametré

vous mettez votre telephone en ligne ( pour entendre le Biiip d'attente )
approchez le des hauts parleur de votre ordinateur (montez le son )
vous lancez mon prg , qui va faire sa petite musique , et hop votre correspondant ne tardera pas a répondre :)
c'est magique :)

pratique si vous vous programmez un carnet d'adresse avec vos numeros de telephone
vous pourrez demander a votre ordinateur de composer le numero a votre place :)

ou alors utiliser les fichiers de son, pour permettre a une page Html de vous permettre d'appeler vos correspondant
a partir de n'importe quel telephone , si votre telephone est en panne ,
celui d'un client peut faire l'affaire, si vous etes chez lui pour appeler votre boite :)


l'archive ici :
http://michel.dobro.free.fr/Forum_pb/DTMF/DTMF.zip
(Archive refaite avec des sons en 44100 16 bits pour etre compatible avec Linux/OSX )


amusez vous bien :)

voici juste le code (qui est deja dans l'archive avec les sons )

Code : Tout sélectionner


;Codé par Dobro

; pour le # le numero c'est 14
; pour * le numero c'est 15
Declare  play_DTMF(numero_a_composer$)
Declare  DTMF(num.s)


InitSound()
CatchSound(15, ?etoile)
CatchSound(14, ?diese)
CatchSound(13, ?D)
CatchSound(12, ?C)
CatchSound(11, ?B)
CatchSound(10, ?A)
CatchSound(9, ?_9)
CatchSound(8, ?_8)
CatchSound(7, ?_7)
CatchSound(6, ?_6)
CatchSound(5, ?_5)
CatchSound(4, ?_4)
CatchSound(3, ?_3)
CatchSound(2, ?_2)
CatchSound(1, ?_1)
CatchSound(0, ?_0)
; *****************************************************
numero_a_composer$="3131"
play_DTMF(numero_a_composer$)

; *************** Zone Procedure *************************
procedure play_DTMF(numero_a_composer$)
	; By Dobro
	calldebugger
	for i=1 to len(numero_a_composer$)
		num.s=mid(numero_a_composer$,i,1)
		DTMF(num.s)
	next i
Endprocedure

;
procedure DTMF(num.s)
	; By Dobro
	select num
		Case "0"
		PlaySound(0,#PB_Sound_Loop):delay(200):StopSound(0)
		Case "1"
		PlaySound(1,#PB_Sound_Loop):delay(200):StopSound(1)
		Case "2"
		PlaySound(2,#PB_Sound_Loop):delay(200):StopSound(2)
		Case "3"
		PlaySound(3,#PB_Sound_Loop):delay(200):StopSound(3)
		Case "4"
		PlaySound(4,#PB_Sound_Loop):delay(200):StopSound(4)
		Case "5"
		PlaySound(5,#PB_Sound_Loop):delay(200):StopSound(5)
		Case "6"
		PlaySound(6,#PB_Sound_Loop):delay(200):StopSound(6)
		Case "7"
		PlaySound(7,#PB_Sound_Loop):delay(200):StopSound(7)
		Case "8"
		PlaySound(8,#PB_Sound_Loop):delay(200):StopSound(8)
		Case "9"
		PlaySound(9,#PB_Sound_Loop):delay(200):StopSound(9)
		Case "A"
		PlaySound(10,#PB_Sound_Loop):delay(200):StopSound(10) ;A
		Case "B"
		PlaySound(11,#PB_Sound_Loop):delay(200):StopSound(11) ;B
		Case "C"
		PlaySound(12,#PB_Sound_Loop):delay(200):StopSound(12) ;C
		Case "D"
		PlaySound(13,#PB_Sound_Loop):delay(200):StopSound(13) ;D
		Case "#"
		PlaySound(14,#PB_Sound_Loop):delay(200):StopSound(14) ;#
		Case "*"
		PlaySound(15,#PB_Sound_Loop):delay(200):StopSound(15) ;*
	Endselect
Endprocedure

DataSection
	; By Dobro
	etoile: IncludeBinary "etoile.wav"
	diese: IncludeBinary "diese.wav"
	D: IncludeBinary "D.wav"
	C: IncludeBinary "C.wav"
	B: IncludeBinary "B.wav"
	A: IncludeBinary "A.wav"
	_9: IncludeBinary "9.wav"
	_8: IncludeBinary "8.wav"
	_7: IncludeBinary "7.wav"
	_6: IncludeBinary "6.wav"
	_5: IncludeBinary "5.wav"
	_4: IncludeBinary "4.wav"
	_3: IncludeBinary "3.wav"
	_2: IncludeBinary "2.wav"
	_1: IncludeBinary "1.wav"
	_0: IncludeBinary "0.wav"
EndDataSection

; EPB
infos sur le DTMF : http://fr.wikipedia.org/wiki/DTMF


autre Code adapté du miens (enfin, il a repris l'idée de base mais le code n'as plus rien a voir ;) )par Wilbert du Forum anglais
sa version n'utilise pas de fichiers son Externe , mais genere les frequences directement dans le code :)

du coup marche pour OSX,et Linux ;)

Code : Tout sélectionner

InitSound()

Procedure GenerateDTMF(Number.s)
	Static Freq1.q = $066105C5053804B9, Freq2.q = $03AD0354030202B9
	Protected *SampleData.Ascii, Samples, *WavData, c1.d, c2.d, i, s, l = Len(Number)
	If l
		Samples = l * 8820
		*WavData = AllocateMemory(Samples + 44)
		If *WavData
			PokeL(*WavData, $46464952)
			PokeL(*WavData + 4, Samples + 36)
			PokeQ(*WavData + 8, $20746D6645564157)
			PokeQ(*WavData + 16, $0001000100000010)
			PokeQ(*WavData + 24, $0000AC440000AC44)
			PokeQ(*WavData + 32, $6174616400080001)
			PokeL(*WavData + 40, Samples)
			FillMemory(*WavData + 44, Samples, 128)
			While i < l
				s = FindString("123A456B789C*0#D", Mid(Number, i + 1, 1)) - 1
				If s >= 0
					*SampleData = *WavData + i * 8820 + 44
					c1 = PeekU(@Freq1 + (s & $3) << 1) * 2 * #PI / 44100
					c2 = PeekU(@Freq2 + (s & $C) >> 1) * 2 * #PI / 44100
					For s = 0 To 4409
						*SampleData\a = 128 + 63 * Sin(s * c1) + 63 * Sin(s * c2)
						*SampleData + 1
					Next
				EndIf
				i + 1
			Wend
		EndIf
	EndIf
	ProcedureReturn *WavData
EndProcedure

Procedure PlayDTMF(Number.s, WaitUntilFinished = #False)
	Static Sound
	Protected *WavData = GenerateDTMF(Number)
	If *WavData
		If Sound : FreeSound(Sound) : EndIf
		Sound = CatchSound(#PB_Any, *WavData)
		FreeMemory(*WavData)
		If Sound
			PlaySound(Sound)
			If WaitUntilFinished
				While SoundStatus(Sound) = #PB_Sound_Playing : Delay(1) : Wend
			EndIf
		EndIf
	EndIf
EndProcedure

PlayDTMF("3131", #True) ; EPB
Dernière modification par Backup le mar. 16/avr./2013 11:20, modifié 6 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: DTMF

Message par Ar-S »

Idée sympa, ça me rappelle de vieilles séquences d’espionnage dans les films.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: DTMF

Message par kelebrindae »

Bonne idée en effet; Tu es très prolifique en ce moment!
Je crois que c'est avec ce genre de technique que Jobs et Wozniak pirataient le système téléphonique US pour arrondir leurs fins de mois à la Fac...

Avec les anciens téléphones français (ceux en bakélite, avec le cadran rotatif), on pouvait aussi envoyer des "clics" avec les sortes de gâchettes situées sur le support du combiné; Trois clics rapprochés équivalaient à composer le "3" sur le cadran rotatif, par exemple.
Au lycée où j'étais, il y avait dans la salle informatique des téléphones sans cadran (pour les modems, je crois?). Toutefois, avec la technique ci-dessus et un peu d'adresse, on pouvait téléphoner gratis à qui on voulait... 8)
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: DTMF

Message par Backup »

ce que vous décriveez c'est la BlueBox
http://fr.wikipedia.org/wiki/Blue_box

mais mon idée etait plutot la conception de carnet d'adresse telephonique
qui permet a une personne agée (ou pas) de composer grace a son ordinateur un numéro sans avoir a taper sur un clavier

si vous faite un petit raccourcis , avec le code de reconnaissance Vocale de Nico
on peut facilement faire un prg qui compose un numéro de telephone juste en utilisant une phrase parlé :)

la seule contrainte c'est d'appuyer sur le bouton de telephone pour la prise de ligne ... :)

a une époque il existait une espece de Calculette (Texas instrument ??)
qui avait un petit haut parleur sur sa face arriere , j'avais un fournisseur ( de matériel de fleuriste )
qui en possédait une , et lorsqu'il avait besoin de joindre x,ou y dans sa boite pour info complémentaire, il se servait de ce système
avec le téléphone de la boutique ...

a l’époque les téléphones portables étaient tres chers ,et pas aussi courant que maintenant , de plus les Téléphones standards
ne possédaient pas de mémoire, de carnet d'adresse, comme ceux qu'on peut trouver maintenant :)

je pense que cette procedure peut encore etre utile , de plus , elle est Fun et je suis sur que vous allez épater votre entourage avec ça :lol:

dans Pïrate Mag , ils avaient expliqué une technique pour telephoner Gratuitement , du coup possible avec mon Prg installé sur un NetBook :)

vous allez dans un Ascenseur moderne ,(je n'encourage personne a le faire hein :mrgreen: ) qui contient un haut-parleur pour signaler au Technicien que vous etes coincé
vous coincez volontairement l'ascenseur
juste avant que l'ascenseur ne fasse le numero de depannage pour prévenir la societé d'entretiens
vous balancez devant le aut parleur grace a mon prg la sequence telephonique d'une de vos connaissance
en principe le telephone integré a l'ascenseur va réagir comme le telephone de la maison

et va appeler votre correspondant , voila vous parlez de votre nouvelle cabine telephonique , Gratos !! :lol:

"allo ? je t’appel de l'ascenseur de la tour montparnasse ... ça roule ma poule ? "
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: DTMF

Message par Backup »

je viens d'ajouter l'adaptation de Wilbert de mon code
sa version n'utilise pas de fichiers Wav externe , mais genere les frequences directement par le code
il semble qu'elle soit compatible OSX et Linux :)

si vous preferez ma version avec fichiers sons ,
mes ancien fichiers Sons etaient en 8bits et il semble que ça coinçait avec OSX

donc , j'ai refait mon archive avec des sons en 44100 16 bits , ça devrai aller ....
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: DTMF

Message par doudouvs »

nickel le code ca me rappel des souvenirs quand je jouée avec FT (avec le 0 pour les connaisseurs) pour me connecter sur des serveurs US histoire de faire du Web gratuitement.
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DTMF

Message par Kwai chang caine »

Bonne idée, merci pour le partage 8)
kelebrindae a écrit :on pouvait aussi envoyer des "clics" avec les sortes de gâchettes situées sur le support du combiné;
C'est vrai je m'en rappelle de la combine, j'avais aussi essayé, car parfois, y'avait le cadran mais aussi un cadenas qui pouvait se poser dessus :?
En fait c'etait les contacts qui permettaient de raccrocher en deposant le combiné sur le haut.
Ca coupait le téléphone de la ligne, et comme le cadran rotatif se servait aussi d'ouverture/fermeture du circuit pour envoyer les impulsions au central, avec une molette "rectangulaire" qui en tournant poussait un contact (Qu'est ce que j'ai pu en démonter de ces systemes), trois coupures correspondait au chiffres 3, c'etait possible de le berner :mrgreen:
Meme apres les en plastique de toutes les couleurs avaient toujours le meme fonctionnement, c'est quand on est passé en frequence vocale, que ca ne marchait plus, puisque le tranfert des numéro se faisait electroniquement, plus mécaniquement :|
Que de souvenirs...... 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: DTMF

Message par Ar-S »

Comme le proverbe des années disco disait : "Le phreak c'est chic"
:mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DTMF

Message par Kwai chang caine »

ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: DTMF

Message par venom »

Fonctionne pas sur ma poire :( :lol:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

Re: DTMF

Message par ChaudEf »

Salut les gars
Tres chouette ce code, je me demande si ce serait possible de pousser ca un peu plus loin.
J'utilise un certain service qui est dispo que par telephone, dans lequel il faut appeller puis taper une serie de chiffre (mon identifiant, puis les resultats que je dois leur transmettre). ca fait en tout environ vingt touches a presser, et des fois j'en loupe une et il faut tout reccommencer.
Je me suis penche sur la creation d'un petit programme qui automatiserait ca (apres une longue pause de programmation Purebasic).
Le probleme est que le portable ne capte pas les touches, et je me suis demande si il y avait peut etre un moyen d'envoyer le son par un USB qui se connecterai a l'oreillette du telephone.
J'ai un cable de Ipod Shuffle, USB qui sort en Audio, mais je n'ai pas trouve comment faire pour emmettre le son par l'USB.

Aurez vous une idee? Merci
Windows 10 x64 -- Purebasic 5.70 LTS x86
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: DTMF

Message par jmg49 »

:D comme captain crunch et son sifflet de boites de céréales qui permettait de téléphoner gratos

https://fr.wikipedia.org/wiki/John_Draper
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

Re: DTMF

Message par ChaudEf »

Captain Crunch a été condamné à deux mois de prison en 1976 à la prison fédérale de Lompoc, en Californie. Ce fut le verdict du procès quand il a été arrêté quatre ans plus tôt en train de faire du phreaking à Sydney, en Australie. Cinq États des États-Unis ayant décidé de poursuivre le piratage téléphonique.
Et serieusement, il y a un petit tuyeau?
Windows 10 x64 -- Purebasic 5.70 LTS x86
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: DTMF

Message par Ar-S »

Le probleme est que le portable ne capte pas les touches, et je me suis demande si il y avait peut etre un moyen d'envoyer le son par un USB qui se connecterai a l'oreillette du telephone
Si ce sont des sont que l'oreillette doit entendre, pourquoi ne pas te générer un fichier son comprenant tes 20 notes et le balancer via haut parleur ?
Zorro t'a fait le programme.. Tu n'as plus qu'à déterminer ta liste et à enregistrer ça en wav/ogg.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

Re: DTMF

Message par ChaudEf »

oui bien sur
mais pensais l'envoyer par la sortie USB
Windows 10 x64 -- Purebasic 5.70 LTS x86
Répondre