JES est un programme qui vous permet de modifier des images, des sons et des vidéos par programmation. JES possède de nombreuses fonctions intégrées et des outils de débogage pour vous aider à apprendre le langage Jython.


Lorsque vous importez un fichier à l’aide de JES, vous pouvez examiner visuellement ses ondes sonores dans une fenêtre distincte. Vous pouvez également manipuler les valeurs d’amplitude de ces ondes sonores en des points spécifiques. Cela peut vous aider à modifier le fichier sonore pour obtenir différents effets.

Comment modifier le volume d’un clip sonore

Lorsque vous effectuez le rendu d’une image dans JES, vous pouvez accéder aux pixels individuels qu’elle contient. Vous pouvez réaliser certaines techniques de traitement d’image en modifiant les valeurs de couleur rouge, verte et bleue de chaque pixel.

De la même manière, un fichier son contient de nombreux « échantillons » individuels qui sont de petits morceaux de données sonores. Vous pouvez modifier un son importé en changeant la valeur d’amplitude de chaque échantillon.

Le code utilisé dans ce projet est disponible dans ce repo GitHub sous la licence MIT.

  1. Ouvrez l’application JES sur votre ordinateur.
  2. Créez une nouvelle fonction appelée changeVolume(), qui prend en entrée le volume que vous souhaitez modifier :
     def changeVolume(vol):  
  3. À l’intérieur de la fonction, ouvrez une invite pour demander à l’utilisateur de sélectionner un fichier son valide. Bien que JES ne soit pas compatible avec les fichiers mp3, vous pouvez toujours importer des fichiers WAV. Ajoutez une validation pour vous assurer que le fichier est compatible :
     file = pickAFile() 

    if file != None and file.endswith(".wav"):
      # Code for valid file
    else:
      print("Invalid file selected. Please choose a valid WAV file.")
  4. Si le fichier sélectionné est valide, créez un objet sonore à partir de celui-ci :
     sound = makeSound(file) 
  5. Passer en boucle chaque échantillon du son :
     for i in range(0, getLength(sound)): 
  6. Vérifier si l’utilisateur a réussi haut dans la fonction pour augmenter le volume. Si c’est le cas, obtenez la valeur de l’échantillon à cet index à l’aide de la fonction intégrée getSampleValueAt(). Augmentez le volume en doublant l’amplitude et utilisez setSampleValueAt() pour définir la nouvelle valeur :
     if vol == 'up':
      sampleVal = getSampleValueAt(sound, i)
      setSampleValueAt(sound, i, sampleVal * 2)
  7. Vérifier si l’utilisateur a passé vers le bas dans la fonction pour adoucir le volume. Si c’est le cas, récupérez la valeur de l’échantillon à cet indice et divisez-la par 2 pour réduire l’amplitude :
     if vol == 'down':
      sampleVal = getSampleValueAt(sound, i)
      setSampleValueAt(sound, i, sampleVal / 2)
  8. Utilisez la fonction explore() pour ouvrir la fenêtre d’exploration du son :
     explore(sound) 
  9. Cliquez sur l’icône Charger le programme situé entre la zone de programmation et la ligne de commande. Enregistrez le fichier si vous y êtes invité :
    Logiciel JES avec invite de sauvegarde ouverte

  10. Exécutez la fonction changeVolume() sur la ligne de commande, en passant « up » comme argument à la fonction :
     changeVolume("up") 
  11. En utilisant la fenêtre de l’explorateur de fichiers, naviguez jusqu’à un fichier son valide :
    Logiciel JES avec l'explorateur de fichiers

  12. Cliquez sur l’icône Jouer l’intégralité du son en utilisant la nouvelle fenêtre :
    Fenêtre JES Soundwaves avec onde

  13. Dans la ligne de commande, exécutez à nouveau changeVolume() avec la valeur « down » comme argument, et sélectionnez un fichier :
     changeVolume("down") 
  14. Dans la fenêtre de l’explorateur, vous verrez que les ondes sonores sont plus petites. Cliquez sur l’icône Jouer tout le son en utilisant la nouvelle fenêtre :
    Ondes sonores JES à faible volume

Comment inverser un clip sonore

Vous pouvez inverser un son en créant un nouveau son vide et en copiant chaque échantillon du son original dans le nouveau son dans l’ordre inverse.

  1. Dans une nouvelle fonction, demander à l’utilisateur de sélectionner un fichier WAV et vérifier que le fichier est valide :
     def reverseSound():
      file = pickAFile()

      if file != None and file.endswith(".wav"):
        # Code for valid file
      else:
        print("Invalid file selected. Please choose a valid WAV file.")
  2. Créer un nouvel objet sonore à partir du fichier sélectionné :
     sound = makeSound(file)  
  3. Utilisez la fonction intégrée makeEmptySound() pour créer un nouvel objet sonore vide. Celui-ci comprendra le même nombre d’échantillons que le son original. La valeur d’amplitude de chaque échantillon sera de 0 :
     newReversedSound = makeEmptySound(getLength(sound)) 
  4. Passez en boucle sur chaque échantillon du nouvel objet sonore vide :
     for i in range(0, getLength(newReversedSound)): 
  5. Pour chaque échantillon à ce point, obtenez l’échantillon à l’extrémité opposée du son. Par exemple, si la longueur de l’échantillon est de 100 et que l’index actuel est 0, on obtiendra la valeur de l’échantillon à l’index 99. De même, si l’index actuel est 3, on obtiendra la valeur de l’échantillon à l’index 96 :
     sampleVal = getSampleValueAt(sound, getLength(sound) - 1 - i) 
  6. Copier la valeur de l’échantillon de l’autre extrémité du son à l’index actuel du nouveau son :
     setSampleValueAt(newReversedSound, i, sampleVal) 
  7. Explorez le nouveau son inversé. Vous pouvez également explorer le son original à des fins de comparaison :
     explore(sound)
    explore(newReversedSound)
  8. Cliquez sur l’icône Charger le programme situé entre la zone de programmation et la ligne de commande. Enregistrez le fichier si vous y êtes invité.
  9. Exécutez la fonction à l’aide de la ligne de commande :
     reverseSound() 
  10. Visualisez le son original et le son inversé à l’aide des fenêtres de l’explorateur. Cliquez sur la fenêtre Lire le son entier pour entendre les différences :
    Deux fenêtres avec deux ondes sonores dans JES

Comment joindre deux clips sonores

Pour joindre deux clips sonores, vous pouvez demander à l’utilisateur de sélectionner deux fichiers WAV distincts. Copiez chaque échantillon des deux sons sur le nouvel objet sonore.

  1. Créez une nouvelle fonction appelée joinSounds() :
     def joinSounds(): 
  2. Utilisez la fonction pickAFile() pour demander à l’utilisateur de sélectionner le premier fichier. S’il n’est pas valide, affichez un message d’erreur :
     file1 = pickAFile()

    if file1 == None or not file1.endswith(".wav"):
      print("Invalid file selected. Please choose a valid WAV file.")
  3. Utilisez à nouveau la fonction pickAFile() pour demander à l’utilisateur de sélectionner un deuxième fichier son valide :
     file2 = pickAFile() 

    if file2 == None or not file2.endswith(".wav"):
      print("Invalid file selected. Please choose a valid WAV file.")
  4. Créez deux objets sonores à partir des deux fichiers sonores sélectionnés :
     sound1 = makeSound(file1) 
    sound2 = makeSound(file2)
  5. Additionnez les longueurs des deux sons pour calculer la longueur du nouveau son joint. Créez un nouvel objet sonore vide en utilisant la longueur :
     newSoundLength = getLength(sound1) + getLength(sound2)
    joinedSound = makeEmptySound(newSoundLength)
  6. Parcourez en boucle chaque échantillon du premier son. Copiez la valeur de l’échantillon à chaque index dans le nouveau son :
     for i in range(0, getLength(sound1)):
      sampleVal = getSampleValueAt(sound1, i)
      setSampleValueAt(joinedSound, i, sampleVal)
  7. Bouclez sur chaque échantillon du deuxième son. Copier la valeur de l’échantillon à chaque index sur le nouveau son, après le premier son :
     for i in range(0, getLength(sound2)):
      sampleVal = getSampleValueAt(sound2, i)
      endOfFirstSound = getLength(sound1) - 1
      setSampleValueAt(joinedSound, endOfFirstSound + i, sampleVal)
  8. Explorez le son à l’aide de la fonction explore() :
     explore(joinedSound) 
  9. Cliquez sur l’icône Charger le programme situé entre la zone de programmation et la ligne de commande. Enregistrez le fichier si vous y êtes invité.
  10. Exécutez la fonction à l’aide de la ligne de commande :
     joinSounds() 
  11. Visualisez le son joint en utilisant la nouvelle fenêtre, et cliquez sur le bouton Lire l’intégralité du son pour écouter le son :
    Onde sonore plus longue avec des sons joints

Importer et éditer des fichiers sonores avec JES

Vous savez maintenant comment importer des fichiers sonores et les éditer à l’aide de JES. JES propose de nombreuses autres fonctions intégrées qui vous permettront d’effectuer des opérations d’édition sonore encore plus poussées.

Vous pouvez en savoir plus sur les autres fonctions disponibles en utilisant la fenêtre d’aide de JES.