/// <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); } } } } } }
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); } }