Ultrasonic theremin [résolu]

Bonjour,

J’essaye de fabriquer un theremin à ultra son.
Dans un premier temps j’ai suivi ce tutoriel : https://projects.raspberrypi.org/en/projects/ultrasonic-theremin/7

le capteur fonctionne, le logiciel sonic-pi reçoit bien les valeurs renvoyées par le capteur via python, mais je n’ai aucun son, je ne comprends pas pourquoi ?
J’ai testé la sortie son du raspberry, elle fonctionne.

Chez moi, la page que tu indiques est vide…

C’est des ultrason et tu veux dire que tu n’entends rien?? ?

étrange, le lien fonctionne chez moi…

Citation
C’est des ultrason et tu veux dire que tu n’entends rien?? ?

Je ne sais pas si c’est de l’humour :wink: mais je vais quand même détailler un peu plus le fonctionnement :

  • Un script python détecte la distance entre le capteur à ultra-sons et la main de l’utilisateur, puis il envoie via python-osc les valeurs au logiciel sonic-pi qui joue les sons (+ on est loin, + c’est aigu, + on se rapproche + c’est grave, par ex.), et c’est ce son que je n’entends pas…
    voici le code python

Citation

from gpiozero import DistanceSensor
from time import sleep
from pythonosc import osc_message_builder
from pythonosc import udp_client

sensor = DistanceSensor(echo=17, trigger=4, max_distance=1)
sender = udp_client.SimpleUDPClient(‹ 127.0.0.1 ›, 4559)
while True:
print("distance : ", sensor.distance, « m »)
pitch = round(sensor.distance * 100 + 27)
print(pitch)
sender.send_message(’/play_this’, pitch)
sleep(0.2)

et le code sonic-pi

Citation
live_loop :listen do
use_real_time
note = sync « osc/play_this »
play note[0]
end

Il y a des personnes de niveaux techniques différents qui interviennent ici, par habitude, il est toujours bon de commencer par les choses les plus simples pour être sur que l’on se comprends.

niveau programmation, je ne suis pas suffisamment calé.

Juste pour ce mettre d’accord, le son plus ou moins aigu, c’est l’effet Doppler, cela ne permet pas d’estimer la distance mais la vitesse relative.
https://fr.wikipedia.org/wiki/Effet_Doppler

La distance, c’est le temps qui s’écoule entre l’émission du son et la réception de l’écho

Donc si le programme a été écris sur le principe que tu dis, peut être est-ce là l’erreur?

Bonjour,

Est-ce que sonic-pi fonctionne hors Python ?
Le fichier « /play_this » correspond à une note à jouer ?

A+

Oui sonic-pi fonctionne en dehors de python, et il reçoit les données du script python.
La distance mesurée est converti en numéro de 0 à 127 qui correspond à la notation des notes au format midi.
/play_this renvoie une liste de note en MIDI, et le play[0] joue l’index 0 de la liste, je vois s’afficher les notes dans sonic-pi mais je n’ai pas de sons

Je me permet de reposer (presque) la même question, comment es-tu sur qu’aucun son n’est émis?

quand je parle de sons, je veux parler de sons audibles que devrait produire le logiciel sonic-pi. Je ne parle pas du capteur, qui lui envoie des ultra-sons, et en déduit la distance en analysant la vitesse à laquelle lui revient l’echo.
Le capteur fonctionne et me renvoie des valeurs cohérentes de distance.

Pour ce qui est du sons + ou - aigu, c’est moi qui décide à l’aide du script python d’interpréter la mesure du capteur en hauteur de son.

Maintenant, il est possible que sonic-pi émette bien du son, mais que celui-ci ne soit pas transmis à l’enceinte, sauf que sonic-pi sans python fonctionne et j’entends le son… Donc je pense qu’il s’agit soit d’un problème de lien entre python et sonic-pi, soit d’un problème de codage quelque part… ou dernière possibilité le serveur de sons de raspbian…

Ok, j’avais vraiment pas compris le problème.

Bonjour,

Il faut faire des tests.
Quelle est la carte son utilisée, et sur quelle sortie ? Carte son interne, ou USB ?
Ensuite
1 - Tester la sortie son avec mplayer ou autre logiciel de son standard.
2 - Vérifier si il y a des paramètre dans /boot/config.txt
https://www.raspberrypi.org/forums/viewtopic.php?t=215339
2 bis (ça modifie également config.txt) - Essayer de passer par le menu raspi-config pour voir si tout est OK

3 - Eventuellement corriger/modifier les paramètres de sortie son avec alsamixer

4 - Tester sonic-pi en autonome.

Quand ce sera Ok, le programme Python pourra être démarré pour piloter sonic-pi.

A+

Hello,

Merci pour l’aide

J’utilise la sortie son hdmi avec un adaptateur qui permet de séparer l’audio de la vidéo.
J’utilise la carte son interne.
J’ai testé la sortie son avec vlc --> ok
J’ai testé la sortie son avec sonic-pi --> Non ok pourtant ça fonctionnait avant, mais j’ai installé jack, portaudio, et ça ne marche plus
et evidement sonic-pi via python --> non ok

bon, j’arrive à avoir du son avec sonic-pi en passant par jack, mais il y a pleins de micro-coupures

Oui le son par la sortie jack est réputé pour être bien pourrave !

Toutefois, il était (avec les Raspberry PI2) possible d’améliorer un peu la qualité du signal avec cette commande dans /boot/config.txt

 audio_pwm_mode=2

A tester sur le PI3 !

A+

Je vais tester, mais quand je parlais de jack, je parlais du serveur audio jack, mais je pense que je vais repartir d’une install propre parce qu’à force de tester pleins de trucs, ça a peut-être foutu le bordel dans le système…

problème résolu après réinstallation complète du système.

Bonjour,
Tant mieux.
Merci de passer le titre en [Résolu].
A+