GetClef() public method

public GetClef ( int starttime ) : Clef
starttime int
return Clef
Esempio n. 1
0
        List <MusicSymbol> AddClefChanges(List <MusicSymbol> symbols,
                                          ClefMeasures clefs,
                                          TimeSignature time)
        {
            List <MusicSymbol> result = new List <MusicSymbol>(symbols.Count);
            Clef prevclef             = clefs.GetClef(0);

            foreach (MusicSymbol symbol in symbols)
            {
                /* A BarSymbol indicates a new measure */
                if (symbol is BarSymbol)
                {
                    Clef clef = clefs.GetClef(symbol.StartTime);
                    if (clef != prevclef)
                    {
                        result.Add(new ClefSymbol(clef, symbol.StartTime - 1, true));
                    }
                    prevclef = clef;
                }
                result.Add(symbol);
            }
            return(result);
        }
Esempio n. 2
0
        List <ChordSymbol> CreateChords(List <MidiNote> midinotes,
                                        KeySignature key,
                                        TimeSignature time,
                                        ClefMeasures clefs)
        {
            int i = 0;
            List <ChordSymbol> chords    = new List <ChordSymbol>();
            List <MidiNote>    notegroup = new List <MidiNote>(12);
            int len = midinotes.Count;

            while (i < len)
            {
                int  starttime = midinotes[i].StartTime;
                Clef clef      = clefs.GetClef(starttime);

                /* Group all the midi notes with the same start time
                 * into the notes list.
                 */
                notegroup.Clear();
                notegroup.Add(midinotes[i]);
                i++;
                while (i < len && midinotes[i].StartTime == starttime)
                {
                    notegroup.Add(midinotes[i]);
                    i++;
                }

                /* Create a single chord from the group of midi notes with
                 * the same start time.
                 */
                ChordSymbol chord = new ChordSymbol(notegroup, key, time, clef, this);
                chords.Add(chord);
            }

            return(chords);
        }
Esempio n. 3
0
        /** Create the chord symbols for a single track.
         * @param midinotes  The Midinotes in the track.
         * @param key        The Key Signature, for determining sharps/flats.
         * @param time       The Time Signature, for determining the measures.
         * @param clefs      The clefs to use for each measure.
         * @ret An array of ChordSymbols
         */
        private List<ChordSymbol> CreateChords(List<MidiNote> midinotes, 
            KeySignature key,
            TimeSignature time,
            ClefMeasures clefs)
        {
            int i = 0;
            List<ChordSymbol> chords = new List<ChordSymbol>();
            List<MidiNote> notegroup = new List<MidiNote>(12);
            int len = midinotes.Count;

            while (i < len) {

            int starttime = midinotes[i].StartTime;
            Clef clef = clefs.GetClef(starttime);

            /* Group all the midi notes with the same start time
             * into the notes list.
             */
            notegroup.Clear();
            notegroup.Add(midinotes[i]);
            i++;
            while (i < len && midinotes[i].StartTime == starttime) {
                notegroup.Add(midinotes[i]);
                i++;
            }

            /* Create a single chord from the group of midi notes with
             * the same start time.
             */
            ChordSymbol chord = new ChordSymbol(notegroup, key, time, clef, this);
            chords.Add(chord);
            }

            return chords;
        }
Esempio n. 4
0
 /** The current clef is always shown at the beginning of the staff, on
  * the left side.  However, the clef can also change from measure to
  * measure. When it does, a Clef symbol must be shown to indicate the
  * change in clef.  This function adds these Clef change symbols.
  * This function does not add the main Clef Symbol that begins each
  * staff.  That is done in the Staff() contructor.
  */
 private List<MusicSymbol> AddClefChanges(List<MusicSymbol> symbols,
     ClefMeasures clefs,
     TimeSignature time)
 {
     List<MusicSymbol> result = new List<MusicSymbol>( symbols.Count );
     Clef prevclef = clefs.GetClef(0);
     foreach (MusicSymbol symbol in symbols) {
     /* A BarSymbol indicates a new measure */
     if (symbol is BarSymbol) {
         Clef clef = clefs.GetClef(symbol.StartTime);
         if (clef != prevclef) {
             result.Add(new ClefSymbol(clef, symbol.StartTime-1, true));
         }
         prevclef = clef;
     }
     result.Add(symbol);
     }
     return result;
 }
Esempio n. 5
0
 public void TestMainClefTreble()
 {
     List<MidiNote> notes = new List<MidiNote>();
     for (int i = 0; i < 100; i++) {
         int num = F4 + (i % 20);
         MidiNote note = new MidiNote(i*10, 0, num, 5);
         notes.Add(note);
     }
     for (int i = 100; i < 200; i++) {
         int num = G3 - (i % 2);
         MidiNote note = new MidiNote(i*10, 0, num, 5);
         notes.Add(note);
     }
     for (int i = 200; i < 300; i++) {
         int num = middleC - (i % 2);
         MidiNote note = new MidiNote(i*10, 0, num, 5);
         notes.Add(note);
     }
     ClefMeasures clefs = new ClefMeasures(notes, 50);
     for (int i = 0; i < 100; i++) {
         Clef clef = clefs.GetClef(i*10);
         Assert.AreEqual(clef, Clef.Treble);
     }
     for (int i = 100; i < 200; i++) {
         Clef clef = clefs.GetClef(i*10);
         Assert.AreEqual(clef, Clef.Bass);
     }
     for (int i = 200; i < 300; i++) {
         Clef clef = clefs.GetClef(i*10);
         /* Even though the average note is below middle C,
          * the main clef is treble.
          */
         Assert.AreEqual(clef, Clef.Treble);
     }
 }
Esempio n. 6
0
 public void TestAllTreble()
 {
     List<MidiNote> notes = new List<MidiNote>();
     for (int i = 0; i < 100; i++) {
         int num = middleC + (i % 5);
         MidiNote note = new MidiNote(i*10, 0, num, 5);
         notes.Add(note);
     }
     ClefMeasures clefs = new ClefMeasures(notes, 40);
     for (int i = 0; i < 100; i++) {
         Clef clef = clefs.GetClef(10 * i);
         Assert.AreEqual(clef, Clef.Treble);
     }
 }