Aller au contenu


Photo
- - - - -

projet Prog teensy 4 en modulateur de voix


  • Veuillez vous connecter pour répondre
5 réponses à ce sujet

#1 loic363

loic363

    Nouveau membre

  • Membres
  • 3 messages
  • Gender:Male
  • Location:64

Posté 01 mai 2023 - 10:05

Bonjour a tous, d'abord je m'excuse si je n'ai pas posté au bon endroit j'ai un peu du mal il ya beaucoup de categorie sur ce magnifique forum haha


voila j'ai un projet que j'ai developper avec chatGPT, je dois dans le cadre d'un nouveau cosplay faire un modulateur de voix en temps reel.
j'en suis arrivé a la conclusion que l'ideal etait une carte teensy 4.0 + son module audio ( et aussi micro, haut parleur et ampli).

l'objectif pour moi etant d'avoir ces filtres suivant d'appliquer: Pitch, DoublePitch, HighPass, Distortion et Resonator

 

Donc du coup apres une conversation avec notre amis chatGPT (oui je connais que lui en IA et je maitrise pas assez le codage)

il en est ressorties 2 codes, cependant c'etait trop beau pour etre vrai hahaha, ca ne fonctionne pas enfin du moins lorsque je fais televerser sur la teensy j'ai plein de message d'erreur lié au codage.

es ce que une bonne âme charitable pourrait me donner un petit coup de main svp

voici les codes que j'ai:

 

#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>

// Définition des objets audio
AudioInputI2S            mic;
AudioAnalyzePeak         peak;
AudioEffectPitchShift    pitchshift;
AudioEffectMultiply      doublepitch;
AudioFilterBiquad        highpass;
AudioEffectDistortion    distortion;
AudioFilterStateVariable resonator;
AudioOutputI2S           speaker;

// Définition des connexions audio
AudioConnection          patchCord1(mic, 0, peak, 0);
AudioConnection          patchCord2(mic, 0, pitchshift, 0);
AudioConnection          patchCord3(pitchshift, 0, doublepitch, 0);
AudioConnection          patchCord4(doublepitch, 0, highpass, 0);
AudioConnection          patchCord5(highpass, 0, distortion, 0);
AudioConnection          patchCord6(distortion, 0, resonator, 0);
AudioConnection          patchCord7(resonator, 0, speaker, 0);
AudioConnection          patchCord8(resonator, 1, speaker, 1);

// Définition des broches pour l'interrupteur
const int buttonPin = 14;
bool buttonState = false;

void setup() {
  // Initialisation de la communication série pour le débogage
  Serial.begin(9600);
  
  // Initialisation de la carte audio
  AudioMemory(20);
  
  // Configuration des filtres audio
  pitchshift.amount(0.5);
  doublepitch.gain(0.5);
  highpass.setHighpass(0, 1000);
  distortion.amount(0.5);
  resonator.setBandwidth(0, 3);
  resonator.setFrequency(0, 1000);
  
  // Configuration de la broche pour l'interrupteur
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // Lecture de l'état de l'interrupteur
  buttonState = digitalRead(buttonPin);
  
  if (buttonState == LOW) {
    // Lecture de l'entrée audio du microphone
    AudioStream::update_all();
    
    // Envoi du flux audio déformé vers le haut-parleur
    if (speaker.update()) {
      Serial.println("Playing audio...");
    }
  }
}



ainsi que 

 

#include <Bounce.h>
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>

AudioInputAnalog mic; // microphone analogique
AudioOutputAnalog speaker; // haut-parleur analogique
AudioEffectPitchShift pitchShift; // filtre Pitch
AudioEffectDoublePitchShift doublePitchShift; // filtre DoublePitch
AudioFilterStateVariable highPass; // filtre HighPass
AudioEffectDistortion distortion; // filtre Distortion
AudioFilterStateVariable resonator; // filtre Resonator
Bounce button = Bounce(0, 10); // bouton poussoir

void setup() {
  AudioMemory(20); // allouer la mémoire audio
  button.attach(0, INPUT_PULLUP); // configurer le bouton poussoir
  highPass.frequency(500.0); // régler la fréquence de coupure du filtre HighPass
  highPass.resonance(1.0); // régler la résonance du filtre HighPass
  distortion.amount(0.5); // régler l'intensité du filtre Distortion
  resonator.frequency(400.0); // régler la fréquence du filtre Resonator
  resonator.resonance(1.5); // régler la résonance du filtre Resonator
}

void loop() {
  button.update(); // mettre à jour l'état du bouton poussoir
  if (button.fallingEdge()) { // si le bouton est enfoncé
    // activer tous les filtres
    pitchShift.begin(1.0, 12.0); // régler l'intensité et la hauteur du filtre Pitch
    doublePitchShift.begin(2.0, 12.0); // régler l'intensité et la hauteur du filtre DoublePitch
    highPass.enable(1); // activer le filtre HighPass
    distortion.enable(1); // activer le filtre Distortion
    resonator.enable(1); // activer le filtre Resonator
  } else if (button.risingEdge()) { // si le bouton est relâché
    // désactiver tous les filtres
    pitchShift.end(); // désactiver le filtre Pitch
    doublePitchShift.end(); // désactiver le filtre DoublePitch
    highPass.disable(1); // désactiver le filtre HighPass
    distortion.disable(1); // désactiver le filtre Distortion
    resonator.disable(1); // désactiver le filtre Resonator
  }
  // lire l'entrée audio du microphone et la traiter avec les filtres activés
  float micLevel = mic.read();
  float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
  // envoyer la sortie audio au haut-parleur
  speaker.write(out




merci beaucoup



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 770 messages
  • Gender:Male

Posté 01 mai 2023 - 01:02

Je ne pense pas que je pourrai t'aider.

Néanmoins, pourrais tu faire un copier/coller de tes erreurs ?



#3 loic363

loic363

    Nouveau membre

  • Membres
  • 3 messages
  • Gender:Male
  • Location:64

Posté 01 mai 2023 - 01:15

oui voici les erreurs pour le premier copier: 

 

Arduino : 1.8.19 (Mac OS X), TD: 1.58, Carte : "Teensy 4.0, Serial, 600 MHz, Faster, US English"

sketch_apr29b:10: error: 'AudioEffectPitchShift' does not name a type; did you mean 'AudioEffectBitcrusher'?
   10 | AudioEffectPitchShift    pitchshift;
      | ^~~~~~~~~~~~~~~~~~~~~
      | AudioEffectBitcrusher
sketch_apr29b:13: error: 'AudioEffectDistortion' does not name a type
   13 | AudioEffectDistortion    distortion;
      | ^~~~~~~~~~~~~~~~~~~~~
sketch_apr29b:19: error: 'pitchshift' was not declared in this scope
   19 | AudioConnection          patchCord2(mic, 0, pitchshift, 0);
      |                                             ^~~~~~~~~~
sketch_apr29b:20: error: 'pitchshift' was not declared in this scope
   20 | AudioConnection          patchCord3(pitchshift, 0, doublepitch, 0);
      |                                     ^~~~~~~~~~
sketch_apr29b:22: error: 'distortion' was not declared in this scope
   22 | AudioConnection          patchCord5(highpass, 0, distortion, 0);
      |                                                  ^~~~~~~~~~
sketch_apr29b:23: error: 'distortion' was not declared in this scope
   23 | AudioConnection          patchCord6(distortion, 0, resonator, 0);
      |                                     ^~~~~~~~~~
sketch_apr29b: In function 'void setup()':
sketch_apr29b:39: error: 'pitchshift' was not declared in this scope
   39 |   pitchshift.amount(0.5);
      |   ^~~~~~~~~~
sketch_apr29b:40: error: 'class AudioEffectMultiply' has no member named 'gain'
   40 |   doublepitch.gain(0.5);
      |               ^~~~
sketch_apr29b:42: error: 'distortion' was not declared in this scope
   42 |   distortion.amount(0.5);
      |   ^~~~~~~~~~
sketch_apr29b:43: error: 'class AudioFilterStateVariable' has no member named 'setBandwidth'
   43 |   resonator.setBandwidth(0, 3);
      |             ^~~~~~~~~~~~
sketch_apr29b:44: error: 'class AudioFilterStateVariable' has no member named 'setFrequency'; did you mean 'frequency'?
   44 |   resonator.setFrequency(0, 1000);
      |             ^~~~~~~~~~~~
      |             frequency
sketch_apr29b: In function 'void loop()':
sketch_apr29b:56: error: 'static void AudioStream::update_all()' is protected within this context
   56 |     AudioStream::update_all();
      |     ~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from /Users/benoit/Documents/Arduino/libraries/Audio/analyze_fft256.h:31,
                 from /Users/benoit/Documents/Arduino/libraries/Audio/Audio.h:61,
                 from /Users/benoit/Documents/Arduino/sketch_apr29b/sketch_apr29b.ino:1:
/private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/hardware/teensy/avr/cores/teensy4/AudioStream.h:169:21: note: declared protected here
  169 |         static void update_all(void) { NVIC_SET_PENDING(IRQ_SOFTWARE); }
      |                     ^~~~~~~~~~
sketch_apr29b:59: error: could not convert 'speaker.AudioOutputI2S::update()' from 'void' to 'bool'
   59 |     if (speaker.update()) {
      |         ~~~~~~~~~~~~~~^~
      |                       |
      |                       void
Plusieurs bibliothèque trouvées pour "Audio.h"
Utilisé : /Users/benoit/Documents/Arduino/libraries/Audio
Non utilisé : /private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio
Plusieurs bibliothèque trouvées pour "SD.h"
Utilisé : /private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/hardware/teensy/avr/libraries/SD
Non utilisé : /private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/libraries/SD
'AudioEffectPitchShift' does not name a type; did you mean 'AudioEffectBitcrusher'?


Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.


et voici les erreurs pour le second:

 

Arduino : 1.8.19 (Mac OS X), TD: 1.58, Carte : "Teensy 4.0, Serial, 600 MHz, Faster, US English"

sketch_apr29b:10: error: 'AudioEffectPitchShift' does not name a type; did you mean 'AudioEffectBitcrusher'?
   10 | AudioEffectPitchShift pitchShift; // filtre Pitch
      | ^~~~~~~~~~~~~~~~~~~~~
      | AudioEffectBitcrusher
sketch_apr29b:11: error: 'AudioEffectDoublePitchShift' does not name a type
   11 | AudioEffectDoublePitchShift doublePitchShift; // filtre DoublePitch
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
sketch_apr29b:13: error: 'AudioEffectDistortion' does not name a type
   13 | AudioEffectDistortion distortion; // filtre Distortion
      | ^~~~~~~~~~~~~~~~~~~~~
sketch_apr29b: In function 'void setup()':
sketch_apr29b:19: error: 'class Bounce' has no member named 'attach'
   19 |   button.attach(0, INPUT_PULLUP); // configurer le bouton poussoir
      |          ^~~~~~
sketch_apr29b:22: error: 'distortion' was not declared in this scope
   22 |   distortion.amount(0.5); // régler l'intensité du filtre Distortion
      |   ^~~~~~~~~~
sketch_apr29b: In function 'void loop()':
sketch_apr29b:31: error: 'pitchShift' was not declared in this scope
   31 |     pitchShift.begin(1.0, 12.0); // régler l'intensité et la hauteur du filtre Pitch
      |     ^~~~~~~~~~
sketch_apr29b:32: error: 'doublePitchShift' was not declared in this scope
   32 |     doublePitchShift.begin(2.0, 12.0); // régler l'intensité et la hauteur du filtre DoublePitch
      |     ^~~~~~~~~~~~~~~~
sketch_apr29b:33: error: 'class AudioFilterStateVariable' has no member named 'enable'
   33 |     highPass.enable(1); // activer le filtre HighPass
      |              ^~~~~~
sketch_apr29b:34: error: 'distortion' was not declared in this scope
   34 |     distortion.enable(1); // activer le filtre Distortion
      |     ^~~~~~~~~~
sketch_apr29b:35: error: 'class AudioFilterStateVariable' has no member named 'enable'
   35 |     resonator.enable(1); // activer le filtre Resonator
      |               ^~~~~~
sketch_apr29b:38: error: 'pitchShift' was not declared in this scope
   38 |     pitchShift.end(); // désactiver le filtre Pitch
      |     ^~~~~~~~~~
sketch_apr29b:39: error: 'doublePitchShift' was not declared in this scope
   39 |     doublePitchShift.end(); // désactiver le filtre DoublePitch
      |     ^~~~~~~~~~~~~~~~
sketch_apr29b:40: error: 'class AudioFilterStateVariable' has no member named 'disable'
   40 |     highPass.disable(1); // désactiver le filtre HighPass
      |              ^~~~~~~
sketch_apr29b:41: error: 'distortion' was not declared in this scope
   41 |     distortion.disable(1); // désactiver le filtre Distortion
      |     ^~~~~~~~~~
sketch_apr29b:42: error: 'class AudioFilterStateVariable' has no member named 'disable'
   42 |     resonator.disable(1); // désactiver le filtre Resonator
      |               ^~~~~~~
sketch_apr29b:45: error: 'class AudioInputAnalog' has no member named 'read'
   45 |   float micLevel = mic.read();
      |                        ^~~~
sketch_apr29b:46: error: 'pitchShift' was not declared in this scope
   46 |   float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
      |                    ^~~~~~~~~~
sketch_apr29b:46: error: 'doublePitchShift' was not declared in this scope
   46 |   float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
      |                                       ^~~~~~~~~~~~~~~~
sketch_apr29b:46: error: 'class AudioFilterStateVariable' has no member named 'process'
   46 |   float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
      |                                                                         ^~~~~~~
sketch_apr29b:46: error: 'distortion' was not declared in this scope
   46 |   float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
      |                                                                                 ^~~~~~~~~~
sketch_apr29b:46: error: 'class AudioFilterStateVariable' has no member named 'process'
   46 |   float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
      |                                                                                                              ^~~~~~~
sketch_apr29b:48: error: 'class AudioOutputAnalog' has no member named 'write'
   48 |   speaker.write(out
      |           ^~~~~
sketch_apr29b:48: error: 'out' was not declared in this scope
   48 |   speaker.write(out
      |                 ^~~
sketch_apr29b:48: error: expected '}' at end of input
   48 |   speaker.write(out
      |                    ^
/Users/benoit/Documents/Arduino/sketch_apr29b/sketch_apr29b.ino:27:13: note: to match this '{'
   27 | void loop() {
      |             ^
sketch_apr29b:46: warning: unused variable 'outLevel' 
   46 |   float outLevel = pitchShift.process(doublePitchShift.process(highPass.process(distortion.process(resonator.process(micLevel)))));
      |         ^~~~~~~~
Plusieurs bibliothèque trouvées pour "Audio.h"
Utilisé : /Users/benoit/Documents/Arduino/libraries/Audio
Non utilisé : /private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio
Plusieurs bibliothèque trouvées pour "SD.h"
Utilisé : /private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/hardware/teensy/avr/libraries/SD
Non utilisé : /private/var/folders/fr/xg_hf7s13v72wb5dhn5nrmc80000gn/T/AppTranslocation/38AD08DB-4058-4983-AB01-152C541F0697/d/Teensyduino.app/Contents/Java/libraries/SD
'AudioEffectPitchShift' does not name a type; did you mean 'AudioEffectBitcrusher'?


Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.



#4 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 770 messages
  • Gender:Male

Posté 01 mai 2023 - 05:30

J'ai dû installer les deux bibliotèques Audio.h et SerialFlash.h, puis j'ai eu le même type d'erreurs que toi.

 

Je ne connais pas le Teensy, mais si j'en crois cette page, https://www.arduino....ibraries/audio/la bibliotèque Audio.h n'est compatible qu'avec Arduino Due.

 

Il existe des bibliothèques Teensy Audio. Peut-être devrais-tu regarder de ce coté là, en lisant leur présentation, avant dans choisir une. 



#5 Ludovic Dille

Ludovic Dille

    Habitué

  • Membres
  • PipPip
  • 186 messages
  • Gender:Male
  • Location:Belgique

Posté 10 mai 2023 - 09:16

Bonjour Loic,

Malheureusement je ne pense pas que le code donné par cet IA soit vraiment utilisable ...
Je pense qu'il serait plus intéressant de justement apprendre petit à petit d'écrire un code qui marche :)

Ludo



#6 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 11 mai 2023 - 01:52

Pour compléter la réponse de ludovic, on veut bien t'aider à apprendre, mais on ne va pas " corriger ce code non utilisable " ...

On peut néanmoins éventuellement t'éclaircir un peu sur les erreurs dans le code au vu des messages d'erreur ... 

=> AudioEffectPitchShift    ça n'existe visiblement pas ... Du coup tout ce qui utilise "  pitchshift "  ça ne va pas marcher ...

Idem pour : 
=> AudioEffectDoublePitchShift   Du coup tout ce qui utilise " doublepitchshift "  ça ne va pas marcher ...

 

 

=> AudioEffectDistortion  et du coup tout ce qui utilise "distortion " ça va pas marcher ... 

Ensuite il y a des appels à des fonctions dans des classes qui existent même pas ... 


Bref il faut partir d'un code beaucoup plus simple, sans erreur et avancer étape par étape ... Du moins moi c'est ce que je te recommande ...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users