Générer un son continu, modulé en fréquence
Salut,
Je pensais que cela serait simple, mais ... pas évident au bout d'une journée de recherche.
Je cherche à transmettre des données à un drône, via du son.
En gros, sur un PC, je récupère des données de distances, converties ensuite en vitesse.
J'aimerai utiliser un haut parleur, pour coder la différence entre cette vitesse instantanée et un un seuil (objectif).
Je suis arriver via sound à génerer un son (dans une boucle while), en fonction des données qui viennent. Mais voilà, c'est tout haché et cela prends du délai.
La question est simple et je me doute que la réponse peut être compliquée.
Comment moduler en fréquence un son porteur (en temps réel), en fonction des données acquises?
Le but étant de réceptionner ce son sur le drône, pour un auto ajustement de la vitesse par rapport à la consigne.
Des idées
Cordialement
Générer un son continu, modulé en fréquence
Bonjour,
Essai de sons de fréquences variables :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| amp=10;
fs=44100;
dt=1;
freq=100;
t=0:1/fs:dt;
sor=0;
while sor==0
s=amp*sin(2*pi*freq*t);
sound(s,fs,16)
pause(1)
freq=freq+100;
end |
Générer un son continu, modulé en fréquence
Bonjour,
Un exemple sur vol en ligne droite en éloignement :
Code:
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
| fmin=100;% Pour Vitesse = -10
fmax=1000;% Pour Vitesse = 20
%Coefficients de fréquence = a*Vitesse + b
a=(fmax-fmin)/30;
b=(fmax+2*fmin)/3;
amp=10;
fs=44100;
dt=1/12;
freq=100;
ts=0:1/fs:1;
Distance=0.1;
Distancenm1=0;
Vitesse =0;
sor=0;
t=0;
while sor==0
t=t+dt;
Distance=Distance+0.1*t;% Simulation de la distance en éloignement
Vitesse=(Distance-Distancenm1)/dt; % Calcul de la vitesse
Distancenm1=Distance;% Vieillissement de la distance
%%%% Sans doute ici un filtre passe-bas
if Vitesse > 20
Vitesse = 20;
end
if Vitesse < -10
Vitesse = -10;
end
freq=a*Vitesse+b;
s=amp*sin(2*pi*freq*ts);
sound(s,fs,16)
pause(1)
end |