// Méthode principale void CreateAndPlayMusic(int songNumber, bool onlyRecord) { // s'il y a un fichier en cours de lecture on l'arrête if (isPlaying) { mplayer.Stop(); mplayer.Close(); isPlaying = false; } // Générateur aléatoire Individu individu = population.Individus[songNumber]; // 1) Créer le fichier MIDI // a. Créer un fichier et une piste audio ainsi que les informations de tempo MIDISong song = new MIDISong(); song.AddTrack("Piste1"); song.SetTimeSignature(0, 4, 4); song.SetTempo(0, individu.Tempo); // b. Choisir un instrument entre 1 et 128 // Liste complète ici : http://fr.wikipedia.org/wiki/General_MIDI song.SetChannelInstrument(0, 0, individu.Instrument); // c. Ajouter des notes foreach(Note note in individu.Genes) song.AddNote(0, 0, note.Valeur, note.Duration); // d. Enregistrer le fichier .mid (lisible dans un lecteur externe par exemple) // on prépare le flux de sortie MemoryStream ms = new MemoryStream(); song.Save(ms); ms.Seek(0, SeekOrigin.Begin); byte[] src = ms.GetBuffer(); byte[] dst = new byte[src.Length]; for (int i = 0; i < src.Length; i++) dst[i] = src[i]; ms.Close(); // et on écrit le fichier try { strFileName = "Fichier" + nbFile + ".mid"; FileStream objWriter = File.Create(strFileName); objWriter.Write(dst, 0, dst.Length); objWriter.Close(); objWriter.Dispose(); objWriter = null; } catch (Exception E) { MessageBox.Show("Veuillez fermer la mélodie qui est en cours de lecture", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error); } if (!onlyRecord) { // 2) Jouer un fichier MIDI mplayer.Open(new Uri(strFileName, UriKind.Relative)); nbFile++; isPlaying = true; mplayer.Play(); } }
// Méthode principale void CreateAndPlayMusic(int songNumber, bool onlyRecord) { // s'il y a un fichier en cours de lecture on l'arrête if (isPlaying) { mplayer.Stop(); mplayer.Close(); isPlaying = false; } // Générateur aléatoire Individu individu = population.Individus[songNumber]; // 1) Créer le fichier MIDI // a. Créer un fichier et une piste audio ainsi que les informations de tempo MIDISong song = new MIDISong(); song.AddTrack("Piste1"); song.SetTimeSignature(0, 4, 4); song.SetTempo(0, individu.Tempo); // b. Choisir un instrument entre 1 et 128 // Liste complète ici : http://fr.wikipedia.org/wiki/General_MIDI song.SetChannelInstrument(0, 0, individu.Instrument); // c. Ajouter des notes foreach (Note note in individu.Genes) { song.AddNote(0, 0, note.Valeur, note.Duration); } // d. Enregistrer le fichier .mid (lisible dans un lecteur externe par exemple) // on prépare le flux de sortie MemoryStream ms = new MemoryStream(); song.Save(ms); ms.Seek(0, SeekOrigin.Begin); byte[] src = ms.GetBuffer(); byte[] dst = new byte[src.Length]; for (int i = 0; i < src.Length; i++) { dst[i] = src[i]; } ms.Close(); // et on écrit le fichier try { strFileName = "Fichier" + nbFile + ".mid"; FileStream objWriter = File.Create(strFileName); objWriter.Write(dst, 0, dst.Length); objWriter.Close(); objWriter.Dispose(); objWriter = null; } catch (Exception E) { MessageBox.Show("Veuillez fermer la mélodie qui est en cours de lecture", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error); } if (!onlyRecord) { // 2) Jouer un fichier MIDI mplayer.Open(new Uri(strFileName, UriKind.Relative)); nbFile++; isPlaying = true; mplayer.Play(); } }