depart_tp4.py
depart_tp4.py
— 6.0 KB
Contenu du fichier
import operator import vlc import time import numpy as np from scipy.io import wavfile G = 0 D = 1 # ========================================================================= # j o u e r _ m u s i q u e # ========================================================================= # # Cette fonction démarre un lecteur et joue la chanson spécifiée # pendant un temps donné. # # Entrée : (paramètre) nom du fichier contenant la chanson # (paramètre) durée desirée pour l'écoute de la chanson # # Sortie : (haut-parleur) la chanson # # Auteur : Gabriel Girard (9 février 2018) # ------------------------------------------------------------------------- def jouer_musique(nom_fichier, duree): print("Debut de la musique...........") instance = vlc.Instance() # Creation du lecteur multimédia lecteur = instance.media_player_new() # Chargement de la chanson chanson = instance.media_new(nom_fichier) # Ajoute la chansons dans le lecteur lecteur.set_media(chanson) # Jouer la chanson pour un temps déterminé lecteur.play() time.sleep(duree) lecteur.stop() print("Fin de la musique...........") # ========================================================================= # l i r e _ C h a n s o n # ========================================================================= # # Fonction permettant de lire le contenu du fichier wav (en stéréo) # # Entrée : (paramètre) nom du fichier contenant la chanson # # Sortie : (retour) la fréquence de la chanson # (retour) le son stéréo (matrice (nx2) # # Auteur : Gabriel Girard (9 février 2018) # ------------------------------------------------------------------------- def lire_chanson(nom_fichier): frequence, donnee = wavfile.read(nom_fichier) return frequence, donnee # ========================================================================= # e c r i r e _ c h a n s o n # ========================================================================= # Fonction permettant d'ecrire une chanson dans un fichier wav # # Entree : (paramètre) la fréquence de la musique # (paramètre) le son stéréo (matrice (nx2) # (paramètre) nom_fichier - nom du fichier contenant la musique # Sortie : (fichier) Fichier musical (non_fichier) contenant la chanson # # Auteur : Gabriel Girard (9 février 2018) # ----------------------------------------------------------------------- def ecrire_chanson(frequence, donnee, nom_fichier): # transformation du son en 16 bits et écriture donnee_e = np.asarray(donnee, dtype=np.int16) wavfile.write(nom_fichier, frequence, donnee) # ========================================================================= # ========================================================================= # ========================================================================= # ========================================================================= # ========================================================================= def affichage(liste_chansons): rep = input("Voulez-vous trier la liste de chansons? ") if rep=="oui" : critere = input("critere : ") liste_chansons.sort(key=operator.itemgetter(critere)) print("") print (" No | Titre | Interprete | Fichier | modification ") print ("----------------------------------------------------------------------------------------") i = 0 for ch in liste_chansons : print('{0: <6}'.format(i), '{0: <17}'.format(ch["Titre"]),'{0: <22}'.format(ch["Interprete"]),'{0: <25}'.format(ch["Fichier"]),'{0: <14}'.format(ch["Etat"])) i += 1 # ========================================================================= def obtenir_chanson(liste_chansons, veux_demander): if veux_demander: rep = input("Voulez-vous voir la liste des chansons?") if rep=="oui": affichage(liste_chansons) indice = int(input("Entrez le numero de la chanson choisie : ")) return indice # ========================================================================= def jouer(liste_chansons): indice = obtenir_chanson(liste_chansons, True) jouer_musique(liste_chansons[indice]["Fichier"], 20) # ========================================================================= def mixer(liste_chansons): indice1 = obtenir_chanson(liste_chansons, True) frequence1, donnee1 = lire_chanson(liste_chansons[indice1]["Fichier"]) indice2 = obtenir_chanson(liste_chansons, False) frequence2, donnee2 = lire_chanson(liste_chansons[indice2]["Fichier"]) nouv_titre = liste_chansons[indice1]["Titre"] nouv_fichier = liste_chansons[indice1]["Fichier"] + "-V" + str(liste_chansons[indice1]["Version"]) liste_chansons[indice1]["Version"] += 1 interprete = liste_chansons[indice1]["Interprete"] chanson = {"Titre":nouv_titre,"Interprete":interprete,"Fichier":nouv_fichier,"Etat":"Mixe","Version":0} liste_chansons.append(chanson) taille = len(donnee1) if len(donnee1) > len(donnee2): taille = len(donnee2) nbTraite = 0 nouv_donnee = np.zeros(shape=(taille,2), dtype=np.int16) while nbTraite < taille: nouv_donnee[nbTraite][G] = donnee1[nbTraite][G]/2 - donnee2[nbTraite][G]/2 nouv_donnee[nbTraite][D] = donnee1[nbTraite][D]/2 + donnee2[nbTraite][D]/2 nbTraite += 1 ecrire_chanson(frequence1, nouv_donnee, nouv_fichier) return liste_chansons # ========================================================================= def accelere(liste_chansons, facteur): indice = obtenir_chanson(liste_chansons, True) taux, donnee = lire_chanson(liste_chansons[indice]["Fichier"]) nouv_titre = liste_chansons[indice]["Titre"] nouv_fichier = liste_chansons[indice]["Fichier"] + "-V" + str(liste_chansons[indice]["Version"]) interprete = liste_chansons[indice]["Interprete"] chanson = {"Titre" : nouv_titre, "Interprete" : interprete, "Fichier" : nouv_fichier,"Etat" : "Mixe", "Version" : 0} liste_chansons.append(chanson) nouv_taux = int(taux * facteur) ecrire_chanson(nouv_taux, donnee, nouv_fichier) return liste_chansons