Projet musical
Neverland
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un projet musical à faire en python pour mon école. Je vais donc essayer d'être le plus clair possible. Je suis censé créer une interface où l'utilisateur peut exécuter des comptines. Pour cela, j'ai une liste de partitions ( ex : #1 Joyeux anniversaire : SOLc p Zc SOLn LAn SOLn DOn Zc SIb SOLc p Zc SOLn LAn SOLn REn Zc)
Après je souhaite faire lire cette chaîne de caractère pour la transformer en musique avec le module simpleaudio. Tout est bien programmé de façon à avoir une ligne : sound(a,b) où a est la fréquence du son, donc si c'est SOL, c'est par exemple 240. Et b est la durée du son, par exemple c = 122 ms mais s'il y a un p après sa double la valeur de b.
je pense avoir réussi à faire une chaine de caractère avec mon fichier:
Ensuite voici mon programme qui me permet de jouer une note musicale:
J'aimerais donc pouvoir lire mon fichier birthday de façon automatisé et en remplaçant automatiquement a et b par sa valeur.
Si quelqu'un a une idée je suis preneur.
J'ai un projet musical à faire en python pour mon école. Je vais donc essayer d'être le plus clair possible. Je suis censé créer une interface où l'utilisateur peut exécuter des comptines. Pour cela, j'ai une liste de partitions ( ex : #1 Joyeux anniversaire : SOLc p Zc SOLn LAn SOLn DOn Zc SIb SOLc p Zc SOLn LAn SOLn REn Zc)
Après je souhaite faire lire cette chaîne de caractère pour la transformer en musique avec le module simpleaudio. Tout est bien programmé de façon à avoir une ligne : sound(a,b) où a est la fréquence du son, donc si c'est SOL, c'est par exemple 240. Et b est la durée du son, par exemple c = 122 ms mais s'il y a un p après sa double la valeur de b.
je pense avoir réussi à faire une chaine de caractère avec mon fichier:
with open("birthday.txt", "r") as filin: ligne = filin.readline() while ligne != "": print(ligne) ligne = filin.readline()
Ensuite voici mon programme qui me permet de jouer une note musicale:
def sound(freq, duration): sample_rate = 44100 t = np.linspace(0, duration, int(duration*sample_rate), False) tone = np.sin(freq*t*(6)*np.pi) tone *= 8388607 / np.max(np.abs(tone)) tone = tone.astype(np.int32) i=0 byte_array= [] for b in tone.tobytes(): if i % 4 != 3: byte_array.append(b) i += 1 audio = bytearray(byte_array) play_obj = sa.play_buffer(audio, 1, 3, sample_rate) play_obj.wait_done() sound(400, 0.25)
J'aimerais donc pouvoir lire mon fichier birthday de façon automatisé et en remplaçant automatiquement a et b par sa valeur.
Si quelqu'un a une idée je suis preneur.
A voir également:
- Projet musical
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Logiciel arrangeur musical gratuit - Télécharger - Création musicale
- Musique projet x - Forum Musique / Radio / Clip
- Streaming musical gratuit - Accueil - Audio
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
le but de l'exercice n'est-il pas que tu apprennes à analyser une ligne de texte?
comment vas-tu progresser sans essayer par toi-même?
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
le but de l'exercice n'est-il pas que tu apprennes à analyser une ligne de texte?
comment vas-tu progresser sans essayer par toi-même?
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Bonjour,
En partant du principe qu'une ligne ( ta variable ligne de la ligne de code
) contient le text suivant :
Je commencerai par m'intéresser à la fonction split afin de découper cette chaine en "mots"
https://www.w3schools.com/python/ref_string_split.asp
Il faut le faire en deux fois, une première fois pour séparer au niveau des deux points ":"
Puis une seconde en séparant par des espaces.
De cette manière, tu vas récupérer un array contenant chaque note (ou caractère "p" )
Il ne te restera qu'à boucler sur cet array pour traiter chaque valeur de ton array ( et en regardant si la valeur suivante vaut "p" ou non).
Donc, en gros,
Tu split
Tu boucles sur ton array
Tu utilises des IF/ELSE
Tu fais appel à ta fonction pour jouer les sons.
En partant du principe qu'une ligne ( ta variable ligne de la ligne de code
ligne = filin.readline()
) contient le text suivant :
#1 Joyeux anniversaire : SOLc p Zc SOLn LAn SOLn DOn Zc SIb SOLc p Zc SOLn LAn SOLn REn Zc
Je commencerai par m'intéresser à la fonction split afin de découper cette chaine en "mots"
https://www.w3schools.com/python/ref_string_split.asp
Il faut le faire en deux fois, une première fois pour séparer au niveau des deux points ":"
Puis une seconde en séparant par des espaces.
De cette manière, tu vas récupérer un array contenant chaque note (ou caractère "p" )
Il ne te restera qu'à boucler sur cet array pour traiter chaque valeur de ton array ( et en regardant si la valeur suivante vaut "p" ou non).
Donc, en gros,
Tu split
Tu boucles sur ton array
Tu utilises des IF/ELSE
Tu fais appel à ta fonction pour jouer les sons.
peux-tu décrire ce qui te bloque? que doit réaliser la partie manquante du programme?
as-tu déjà fait des exercices d'analyse de texte?
quelles techniques et quelles fonctions connais-tu?
pourquoi "en même temps"? c'est plutôt l'un après l'autre, non?