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("-"))) }); }
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); } }
/// <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++; } }
void Start() { posicao = Tempos.PASSADO; }
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); }
/// <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); }