Example #1
0
        /// <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()));
            }
        }
Example #2
0
        /// <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;
        }