Esempio n. 1
0
 /// <summary>
 /// Adds clef to each new System if not specified inside score
 /// </summary>
 public void AddAttributesToEachSystem()
 {
     if (_systemAttributes)
     {
         List <string> systems = _measuresPerSystem.Select(x => x[0]).ToList();
         foreach (var item in systems)
         {
             if (!ClefChanges.ContainsKey(item))
             {
                 ClefChanges clefs = new ClefChanges();
                 for (int i = 1; i <= _numberOfStaves; i++)
                 {
                     var clef = ViewModel.ViewModelLocator.Instance.Main.CurrentScoreProperties.GetClef(item, _partId, i, 0);
                     clefs.Add(i.ToString(), 0, clef);
                 }
                 ClefChanges.Add(item, clefs);
             }
             if (ClefChanges.ContainsKey(item))
             {
                 ClefChanges clefs = ClefChanges[item];
                 if (clefs.AttributeChanges.All(x => x.TimeFraction != 0))
                 {
                     for (int i = 1; i <= _numberOfStaves; i++)
                     {
                         var clef = ViewModel.ViewModelLocator.Instance.Main.CurrentScoreProperties.GetClef(item, _partId, i, 0);
                         clefs.Add(i.ToString(), 0, clef);
                     }
                 }
             }
             if (!KeyChanges.ContainsKey(item))
             {
                 KeyChanges keys = new KeyChanges();
                 for (int i = 1; i <= _numberOfStaves; i++)
                 {
                     var key = ViewModel.ViewModelLocator.Instance.Main.CurrentScoreProperties.GetKeySignature(item, _partId);
                     keys.Add(i.ToString(), 0, key);
                 }
                 KeyChanges.Add(item, keys);
             }
             if (KeyChanges.ContainsKey(item))
             {
                 KeyChanges keys = KeyChanges[item];
                 if (keys.AttributeChanges.All(x => x.TimeFraction != 0))
                 {
                     for (int i = 1; i <= _numberOfStaves; i++)
                     {
                         var key = ViewModel.ViewModelLocator.Instance.Main.CurrentScoreProperties.GetKeySignature(item, _partId);
                         keys.Add(i.ToString(), 0, key);
                     }
                 }
             }
         }
     }
 }
Esempio 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);
            }
        }