Babtouvener
Posts: 2
Joined: Mon Feb 12, 2018 5:10 pm

Filtre audio LPF sur python

Mon Feb 12, 2018 5:18 pm

Bonjour,

Je me permets de poster ce message car je suis coincé et je ne sais plus où chercher... En effet, dans le cadre d'une installation interactive, je voudrais programmer un filtre audio LPF (coupe les hautes fréquences) sur un son qui tourne en boucle sur python. De plus je voudrais faire varier la fréquence de coupure du filtre en fonction de la distance d'un obstacle mesurée par un capteur de distance, le tout sur un Raspberry Pi 3.

J'ai choisi de faire le script en Python directement car c'est plus simple pour collecter les mesures du capteur (je voulais le faire avec Puredata à la base), du coup si quelqu'un à une meilleure idée je suis preneur

J'ai déjà réussi à programmer la mesure de distance par le capteur et à faire tourner un son en boucle mais je ne sais absolument pas comment m'y prendre pour le filtre audio. En cherchant sur internet je n'arrive à trouver une réponse et une méthode claire sur ma situation.

Voici mon code jusqu'à présent au cas où quelqu'un pourrait m'aider. Merci en tout cas d'avoir pris le temps de lire mon message.

Code: Select all

#Libraries
import RPi.GPIO as GPIO
import time
import pygame
pygame.init()
caca = pygame.mixer.Sound("bells001.wav")
pygame.mixer.music.load("bells001.wav")
#GPIO Mode (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
 
pygame.mixer.music.play(-1)
#set GPIO Pins
GPIO_TRIGGER = 23
GPIO_ECHO = 24
  
#set GPIO direction (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
  
def distance():
    # set Trigger to HIGH
    GPIO.output(GPIO_TRIGGER, True)
  
    # set Trigger after 0.01ms to LOW
    time.sleep(0.00001)
    GPIO.output(GPIO_TRIGGER, False)
  
    StartTime = time.time()
    StopTime = time.time()
  
    # save StartTime
    while GPIO.input(GPIO_ECHO) == 0:
        StartTime = time.time()
  
    # save time of arrival
    while GPIO.input(GPIO_ECHO) == 1:
        StopTime = time.time()
  
    # time difference between start and arrival
    TimeElapsed = StopTime - StartTime
    # multiply with the sonic speed (34300 cm/s)
    # and divide by 2, because there and back
    distance = (TimeElapsed * 34300) / 2
  
    return distance
  
if __name__ == '__main__':
    try:
        while True:
            dist = distance()
            print (dist)
            time.sleep(0.2)
  
        # Reset by pressing CTRL + C
    except KeyboardInterrupt:
        print("Measurement stopped by User")
        GPIO.cleanup()
du coup j'ai essayé ceci :

Code: Select all

	
from pydub import AudioSegment
from pydub.playback import play
 
song = AudioSegment.from_wav("bells001.wav")
new = song.low_pass_filter(10000)
play(new)
Malheureusement au lieu de me sortir un son filtré, j'ai le son très dégradé avec pleins de craquements... Quelqu'un aurait une idée s'il vous plait?

Merci d'avance

Cordialement.

Babtouvener
Posts: 2
Joined: Mon Feb 12, 2018 5:10 pm

Re: Filtre audio LPF sur python

Tue Feb 13, 2018 3:49 pm

Bon du coup (pour ceux que ça intéresse, visiblement pas grand monde) j'ai décidé d'explorer un peu plus la communication Python3 et puredata via OSC mais j'ai vraiment du mal... Les librairies et modules OSC sont configuré Python 2 et n'ont pas été mis à jour pour python3 ce qui fait qu'il y a pleins de problèmes dans les scripts, dont j'ai passé la journée à essayer de les corriger manuellement mais rien à faire, je suis par exemple bloqué sur le module OSC dont à la ligne 240 j'ai

Code: Select all

type(argument) = types.DictType
et dont le DictType (j'ai tout essayé, dict, Dict, dicttype etc) n'est apparemment pas dans le module types.py.... J'ai absolument cherché partout mais je n'ai trouvé aucune réponse...

J'ai tout de même réussi à envoyer de l'OSC de Puredata mais je n'arrive pas à le recevoir...

C'est vraiment la grosse galère, j'ai littéralement passé ma journée à configurer mon envoi de donné via OSC (qui est une immense galère, même quand on fait un tour sur les forums, bizarre pour un appareil idéal pour l'interactivité de ne même pas gérer des modules de BASES tel que OSC......)


Enfin bref désolé de me plaindre, je suis désespéré, j'ai posté mon problème sur pleins de forum et je n'ai toujours AUCUNE réponse à ce jour. J'ai perdu 3 jour de ma vie à être bloqué et je ne sais absolument pas où trouver de l'aide..... Si une âme charitable pouvais m'apporter un semblant de réponse même du soutient ça me ferais plaisir....

Cordialement

Return to “Français”

Who is online

Users browsing this forum: Emilien, nar61 and 11 guests