1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| # La boîte à musique
import random
import mido
from mido import MidiFile, MidiTrack, Message
# cette fonction joue une mélodie
def playnotes(notes, instrument_number):
# Création d'un fichier MIDI
mid = MidiFile()
# Création d'une piste MIDI
track = MidiTrack()
mid.tracks.append(track)
velocity = 64 # Vitesse (doit être un entier)
for note in notes:
# l'instrument
track.append(Message('program_change', program=instrument_number))
# la note
track.append(Message('note_on', note=note, velocity=velocity, time=100))
track.append(Message('note_off', note=note, velocity=velocity, time=100))
# Sauvegarde du fichier MIDI
mid.save('melodie.mid')
print("Le fichier a bien été créé !")
# programme principal
print("La boite à musique\n")
print("Indiquez juste un nombre de notes, et l'ordinateur va générer une petite mélodie aléatoire dans un fichier MIDI.\n")
# un n° de note MIDI et un nombre entre 0 et 128
# chaque note sera donc un nombre aléatoire entre 0 et 128 mis dans une liste
notes_to_play = []
# programme principal
while True:
n = input("Combien de notes dans votre mélodie (0 pour quitter) ? ")
try:
n = int(n)
if n == 0:
print("Au revoir !")
break
for i in range(n):
x = random.randint(0, 128)
notes_to_play.append(x)
# n° de l'instrument avec les codes MIDI
instrument = 10
playnotes(notes_to_play, instrument)
except ValueError:
print("Vous devez choisir un entier positif.") |
Partager