Пример #1
0
 private void LoadCompositions()
 {
     _compositions = new ObservableCollection <Composition>();
     _compositions.Add(new Composition
     {
         Name        = "Sample1",
         MaxSongs    = MaxSongs,
         Pause       = Pause,
         Instruments = new ObservableCollection <Instrument>(Instruments),
         Notes       = new ObservableCollection <string>(Notes.Where(x => x.StartsWith("C"))),
         Octaves     = new ObservableCollection <int>(Octaves.Where(x => x.Equals(3))),
         Tempos      = new ObservableCollection <float>(Tempos.Where(x => x.Equals(1.0F))) //,
                                                                                           //Intensities = new ObservableCollection<string>(Intensities.Where(x => x.Contains("-"))),
                                                                                           //Modes = new ObservableCollection<string>(Modes.Where(x => x.Contains("-")))
     });
     _compositions.Add(new Composition
     {
         Name        = "Sample2",
         MaxSongs    = MaxSongs,
         Pause       = Pause,
         Instruments = new ObservableCollection <Instrument>(Instruments),
         Notes       = new ObservableCollection <string>(Notes.Where(x => x.StartsWith("G"))),
         Octaves     = new ObservableCollection <int>(Octaves.Where(x => x.Equals(5))),
         Tempos      = new ObservableCollection <float>(Tempos.Where(x => x.Equals(1.0F))) //,
                                                                                           //Intensities = new ObservableCollection<string>(Intensities.Where(x => x.Contains("-"))),
                                                                                           //Modes = new ObservableCollection<string>(Modes.Where(x => x.Contains("-")))
     });
 }
Пример #2
0
        public void Play()
        {
            var songs = from i in Instruments
                        from s in i.Songs
                        where Notes.Any() ? Notes.Contains(s.Note) : true &&
                        Octaves.Any() ? Octaves.Contains(s.Octave) : true &&
                        Tempos.Any() ? Tempos.Contains(s.Tempo) : true &&
                        Intensities.Any() ? Intensities.Contains(s.Intensity) : true &&
                        Modes.Any() ? Modes.Contains(s.Mode) : true
                        group s by s.Instrument into grouping
                        select grouping;

            var songsDict = new Dictionary <string, List <Song> >();

            foreach (IGrouping <string, Song> grouping in songs)
            {
                var lstSongs = new List <Song>();
                foreach (var s in grouping.Take(MaxSongs))
                {
                    lstSongs.Add(s);
                }
                songsDict.Add(grouping.Key, lstSongs);
            }

            foreach (var instrument in songsDict.Keys)
            {
                var song = songsDict[instrument].ElementAt(0);
                song.Play();
                songsDict[instrument].RemoveAt(0);
            }
        }
Пример #3
0
        /// <summary>
        /// Adiciona a resposta da rodada dada.
        /// </summary>
        /// <param name="rodada">Número da rodada atual, 0 indexado.</param>
        /// <param name="resposta">A resposta dada pelo sujeito. Este método
        /// não checa se esse valor é válido.</param>
        public void OuvirResposta(int rodada, int resposta)
        {
            // Registrando cronômetro
            Cronometro.Stop();
            Tempos.Add(Cronometro.ElapsedMilliseconds);

            // Registrando resposta
            Respostas.Add(resposta);
            if (OpcoesCorretas[rodada] == resposta)
            {
                NoRespostasCorretas++;
            }
        }
Пример #4
0
 void Start()
 {
     posicao = Tempos.PASSADO;
 }
Пример #5
0
        private Midi.MidiTrack GetMidiHeader()
        {
            var midiHeader = new Midi.MidiTrack();

            //text(s) - name of song, artist etc., created by Gitaro
            //copyright - by Gitaro
            //midi port 0
            //time signature
            //key signature
            //set tempo
            ///////marker text (will be seen in file) - also Gitaro copyright blabla
            //end_of_track
            midiHeader.Messages.Add(new Midi.MidiMessage("track_name", new string[] { "untitled" }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("text", new string[] { Title }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("text", new string[] { Subtitle }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("text", new string[] { Artist }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("text", new string[] { Album }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("text", new string[] { Words }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("text", new string[] { Music }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("copyright", new string[] { "Copyright 2017 by Gitaro" }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("marker", new string[] { Title + " / " + Artist + " - Copyright 2017 by Gitaro" }, 0));
            midiHeader.Messages.Add(new Midi.MidiMessage("midi_port", new string[] { "0" }, 0));

            //Get tempos from List tempos, get key_signature and time_signature from barMaster
            var tempoIndex       = 0;
            var masterBarIndex   = 0;
            var currentIndex     = 0;
            var oldTimeSignature = "";
            var oldKeySignature  = "";

            if (Tempos.Count == 0)
            {
                Tempos.Add(new Tempo());
            }
            while (tempoIndex < Tempos.Count || masterBarIndex < BarMaster.Count)
            {
                //Compare next entry of both possible sources
                if (tempoIndex == Tempos.Count || Tempos[tempoIndex].Position >= BarMaster[masterBarIndex].Index) //next measure comes first
                {
                    if (!BarMaster[masterBarIndex].KeyBoth.Equals(oldKeySignature))
                    {
                        //Add Key-Sig to midiHeader
                        midiHeader.Messages.Add(new Midi.MidiMessage("key_signature", new string[] { "" + BarMaster[masterBarIndex].Key, "" + BarMaster[masterBarIndex].KeyType }, BarMaster[masterBarIndex].Index - currentIndex));
                        currentIndex = BarMaster[masterBarIndex].Index;

                        oldKeySignature = BarMaster[masterBarIndex].KeyBoth;
                    }
                    if (!BarMaster[masterBarIndex].Time.Equals(oldTimeSignature))
                    {
                        //Add Time-Sig to midiHeader
                        midiHeader.Messages.Add(new Midi.MidiMessage("time_signature", new string[] { "" + BarMaster[masterBarIndex].Num, "" + BarMaster[masterBarIndex].Den, "24", "8" }, BarMaster[masterBarIndex].Index - currentIndex));
                        currentIndex = BarMaster[masterBarIndex].Index;

                        oldTimeSignature = BarMaster[masterBarIndex].Time;
                    }
                    masterBarIndex++;
                }
                else //next tempo signature comes first
                {
                    //Add Tempo-Sig to midiHeader
                    int tempo = (int)(Math.Round((60 * 1000000) / Tempos[tempoIndex].Value));
                    midiHeader.Messages.Add(new Midi.MidiMessage("set_tempo", new string[] { "" + tempo }, Tempos[tempoIndex].Position - currentIndex));
                    currentIndex = Tempos[tempoIndex].Position;
                    tempoIndex++;
                }
            }



            midiHeader.Messages.Add(new Midi.MidiMessage("end_of_track", new string[] { }, 0));


            return(midiHeader);
        }
Пример #6
0
    /// <summary>
    ///     Método responsável por somar uma lista de tempos e devolver o resultado da soma
    /// de todos eles em forma de texto (hh:mm:ss)
    /// </summary>
    /// <param name="Tempos">Array de tempos, respeitando o seguinte formato: hh:mm:ss</param>
    /// <returns>Tempo total, resultante da soma de todos os parâmetros informados.</returns>
    public static String SumTimes(params String[] Tempos)
    {
        try
        {
            if (Tempos.Count() == 0)
            {
                return("00:00:00");
            }
            else if (Tempos.Count() == 1)
            {
                return(Tempos[0]);
            }
            else
            {
                String tmpTempoTotal = "00:00:00";

                for (int x = 0; x < Tempos.Count(); x++)
                {
                    String tmp = Tempos[x];

                    if (!String.IsNullOrEmpty(tmp))
                    {
                        int h1 = 0, m1 = 0, s1 = 0, h2 = 0, m2 = 0, s2 = 0;

                        //Aqui contém o tempo final (tmpTempoTotal)
                        h1 = Convert.ToInt16(tmpTempoTotal.Split(new char[] { ':' })[0]);
                        m1 = Convert.ToInt16(tmpTempoTotal.Split(new char[] { ':' })[1]);
                        s1 = Convert.ToInt16(tmpTempoTotal.Split(new char[] { ':' })[2]);

                        //Contém o tempo na lista de 'Tempos' (parâmetro)
                        h2 = Convert.ToInt16(tmp.Split(new char[] { ':' })[0]);
                        m2 = Convert.ToInt16(tmp.Split(new char[] { ':' })[1]);
                        s2 = Convert.ToInt16(tmp.Split(new char[] { ':' })[2]);

                        //Variáveis temporárias
                        int tmpHoras = 0, tmpMinutos = 0, tmpSegundos = 0;

                        //Soma os segundos
                        tmpSegundos = s1 + s2;

                        //Soma os minutos
                        if (tmpSegundos > 60)
                        {
                            tmpMinutos  = (m1 + m2) + 1;
                            tmpSegundos = (tmpSegundos - 60);
                        }
                        else
                        {
                            tmpMinutos = (m1 + m2);
                        }

                        //Soma as horas
                        if (tmpMinutos > 60)
                        {
                            tmpHoras   = (h1 + h2) + 1;
                            tmpMinutos = (tmpMinutos - 60);
                        }
                        else
                        {
                            tmpHoras = (h1 + h2);
                        }

                        tmpTempoTotal  = tmpHoras.ToString().Length == 1 ? "0" + tmpHoras.ToString() + ":" : tmpHoras.ToString() + ":";
                        tmpTempoTotal += tmpMinutos.ToString().Length == 1 ? "0" + tmpMinutos.ToString() + ":" : tmpMinutos.ToString() + ":";
                        tmpTempoTotal += tmpSegundos.ToString().Length == 1 ? "0" + tmpSegundos.ToString() : tmpSegundos.ToString();
                    }
                }

                return(tmpTempoTotal);
            }
        }
        catch { return("00:00:00"); }
    }
        public IEnumerable <GuitarMessage> GetByDifficulty(GuitarDifficulty diff)
        {
            var ret = new List <GuitarMessage>();

            foreach (var messageType in GetAllMessageTypes())
            {
                switch (messageType)
                {
                case GuitarMessageType.GuitarHandPosition:
                    ret.AddRange(HandPositions.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarChordName:
                    ret.AddRange(ChordNames.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarTextEvent:
                    ret.AddRange(TextEvents.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarTrainer:
                    ret.AddRange(Trainers.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarChordStrum:
                    ret.AddRange(ChordStrums.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarChord:
                    ret.AddRange(Chords.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarNote:
                    ret.AddRange(Notes.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarPowerup:
                    ret.AddRange(Powerups.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarSolo:
                    ret.AddRange(Solos.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarTempo:
                    ret.AddRange(Tempos.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarTimeSignature:
                    ret.AddRange(TimeSignatures.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarArpeggio:
                    ret.AddRange(Arpeggios.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarBigRockEnding:
                    ret.AddRange(BigRockEndings.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarBigRockEndingSubMessage:

                    break;

                case GuitarMessageType.GuitarSingleStringTremelo:
                    ret.AddRange(SingleStringTremelos.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarMultiStringTremelo:
                    ret.AddRange(MultiStringTremelos.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarSlide:
                    ret.AddRange(Slides.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                case GuitarMessageType.GuitarHammeron:
                    ret.AddRange(Hammerons.Where(x => diff.HasFlag(x.Difficulty)));
                    break;

                default:
                    ("unknown message: " + messageType).OutputDebug();
                    break;
                }
            }

            return(ret);
        }