public void buildMidiToObjectTrack(List <int[]> timeSignature, List <int> ticksperBeat, List <Tuple <ChannelMessage, MidiEvent> > notes)
        {
            TrackObject track = new TrackObject();

            track.timeSignature     = timeSignature;
            track.ticksPerBeat      = ticksperBeat;
            track.currTimeSignature = 0;

            bool addedFirstTimeSignature  = false;
            bool addedSecondTimeSignature = timeSignature.Count > 1 ? false : true;

            foreach (Tuple <ChannelMessage, MidiEvent> c in notes)
            {
                if (c.Item2.AbsoluteTicks >= 16128 && !addedSecondTimeSignature)
                {
                    track.addSymbol(new TimeSignatureSymbol()
                    {
                        timeSignature = new int[] { timeSignature[1][0], timeSignature[1][1] }
                    });
                    addedSecondTimeSignature = true;
                    track.currTimeSignature  = 1;
                }
                else if (!addedFirstTimeSignature)
                {
                    track.addSymbol(new TimeSignatureSymbol()
                    {
                        timeSignature = new int[] { timeSignature[0][0], timeSignature[0][1] }
                    });
                    addedFirstTimeSignature = true;
                }
                track.addMidiNote(c.Item1, c.Item2);
            }

            tracks.Add(track);
        }
        public void buildLyToObjectTrack(List <int[]> timeSignature, List <ISymbol> notes)
        {
            TrackObject track = new TrackObject();

            track.timeSignature = timeSignature;

            foreach (ISymbol s in notes)
            {
                track.addLyNote(s);
            }
            tracks.Add(track);
        }