public ScorePartwisePartMeasureBuilder AddBaseAttributes(AttributesMusicXML attributes)
 {
     measure.AppendNewItem(attributes);
     return(this);
 }
Ejemplo n.º 2
0
        private void AttributesChanged(AttributesMusicXML attributes, int cursorPosition, string measureNumber, bool firstMeasure = false)
        {
            ClefChanges clefs = new ClefChanges();
            KeyChanges  keys  = new KeyChanges();
            TimeChanges times = new TimeChanges();

            //! search for clefs
            if (attributes.Clef.Count == 0 && firstMeasure)
            {
                for (var i = 1; i <= _numberOfStaves; i++)
                {
                    clefs.Add(i.ToString(), cursorPosition, new ClefMusicXML()
                    {
                        Sign = ClefSignMusicXML.G, Line = 2.ToString()
                    });
                }
            }
            else
            {
                for (var i = 0; i < attributes.Clef.Count; i++)
                {
                    clefs.Add(attributes.Clef[i].Number, cursorPosition, attributes.Clef[i]);
                }
            }
            //! search for key signatures
            if (attributes.Key.Count == 0 && firstMeasure)
            {
                for (int i = 1; i <= _numberOfStaves; i++)
                {
                    keys.Add(i.ToString(), cursorPosition,
                             new KeyMusicXML {
                        Items = new object[] { 0.ToString() }, ItemsElementName = new[] { KeyChoiceTypes.fifths }
                    });
                }
            }
            else
            {
                for (int i = 0; i < attributes.Key.Count; i++)
                {
                    keys.Add(attributes.Key[i].Number, cursorPosition, attributes.Key[i]);
                }
            }
            //! search for time signatures
            if (attributes.Time.Count == 0 && firstMeasure)
            {
                for (int i = 1; i <= _numberOfStaves; i++)
                {
                    times.Add(i.ToString(), cursorPosition,
                              new TimeMusicXML
                    {
                        Items            = new object[] { "4", "4" },
                        ItemsElementName = new[] { TimeChoiceTypeMusicXML.beats, TimeChoiceTypeMusicXML.beattype }
                    });
                }
            }
            else
            {
                for (int i = 0; i < attributes.Time.Count; i++)
                {
                    times.Add(attributes.Time[i].Number, cursorPosition, attributes.Time[i]);
                }
            }

            if (clefs.AttributeChanges.Count != 0)
            {
                _clefChanges.Add(measureNumber, clefs);
            }

            if (keys.AttributeChanges.Count != 0)
            {
                _keyChanges.Add(measureNumber, keys);
            }

            if (times.AttributeChanges.Count != 0)
            {
                _timeChanges.Add(measureNumber, times);
            }
        }