/// <summary> /// Deux parent qui s'aiment donnent un enfant qui aura des propriété de ses deux parents selon le taux de fusion et la parent dominant /// </summary> /// <param name="secondParent"></param> /// <param name="tauxFusion"></param> /// <returns></returns> public Individu GetEnfantNaturel(Individu secondParent, int tauxFusion) { randomizerNote = new Random(); int[] notesDeMusiqueEnfant = new int[NumberNote]; if (this.notation >= secondParent.getNotation()) { notesDeMusiqueEnfant = FusionNotesDeMusique(this.notesMusique, secondParent.GetNotesDeMusique(), tauxFusion); return(new Individu(notesDeMusiqueEnfant, this.typeInstrument)); } else { notesDeMusiqueEnfant = FusionNotesDeMusique(secondParent.GetNotesDeMusique(), this.notesMusique, tauxFusion); return(new Individu(notesDeMusiqueEnfant, secondParent.GetTypeInstrument())); } }
/// <summary> /// Deux parent qui s'aiment donnent un enfant qui aura des propriété de ses deux parents selon le taux de fusion et la parent dominant /// </summary> /// <param name="secondParent"></param> /// <param name="tauxFusion"></param> /// <returns></returns> public Individu GetEnfantNaturel(Individu secondParent, int tauxFusion) { randomizerNote = new Random(); int[] notesDeMusiqueEnfant = new int[NumberNote]; if (this.notation >= secondParent.getNotation()) { notesDeMusiqueEnfant = FusionNotesDeMusique(this.notesMusique, secondParent.GetNotesDeMusique(), tauxFusion); return new Individu(notesDeMusiqueEnfant, this.typeInstrument); } else { notesDeMusiqueEnfant = FusionNotesDeMusique(secondParent.GetNotesDeMusique(), this.notesMusique, tauxFusion); return new Individu(notesDeMusiqueEnfant, secondParent.GetTypeInstrument()); } }
// Ecriture musique dans fichier temporaire private void WriteMusic(Individu individu,int numeroPiste) { // 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, tempo); // Récupération du tableau contenant les notes de musique int[] tabMusique = individu.GetNotesDeMusique(); // Récupération du type d'instrument dans l'individu présent dans la population int instrument = individu.GetTypeInstrument(); song.SetChannelInstrument(0, 0, instrument); // Ajout des notes une à une dans la piste son for (int i = 0; i < numberIndividu; i++) song.AddNote(0, 0, tabMusique[i], lengthNote); // 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(); ms.Close(); FileStream objWriter = File.Create (directory+"/piste"+numeroPiste+".midi"); objWriter.Write(src, 0, src.Length); objWriter.Close(); objWriter.Dispose(); objWriter = null; }