Ejemplo n.º 1
0
        private void ParseMeasureAttributes(XElement msElement, Measure ms)
        {
            var attributeElement = msElement.Element("attributes");
            var keyAttr          = attributeElement.Element("key");

            if (keyAttr != null)
            {
                ms.KeySignature = ParseKeyAttribute(keyAttr);
                ms.ShowKey      = true;
            }

            var clefAttr = attributeElement.Element("clef");

            if (clefAttr != null)
            {
                var sign = clefAttr.Element("sign")?.Value;
                var line = clefAttr.Element("line")?.Value;
                int.TryParse(line, out var lineNum);
                ms.Clef     = Clefs.GetClef(lineNum, sign[0]);
                ms.ShowClef = true;
            }

            var timeAttr = attributeElement.Element("time");

            if (timeAttr != null)
            {
                ms.ShowTime = timeAttr.Attribute("print-object")?.Value == "yes";
                int.TryParse(timeAttr.Element("beats").Value, out var top);
                int.TryParse(timeAttr.Element("beat-type").Value, out var bottom);
                ms.TimeSignature = new TimeSignature(top, bottom);
            }
        }
        public void AddClef(Clefs clef)
        {
            if (!_lastIsKeyword)
            {
                _output += $"{{\n{new string(' ', _scopes * SPACES_IN_TAB)}";
                _scopes++;
            }

            _output       += $"\\clef {clef.ToString().ToLower()}\n{new string(' ', _scopes * SPACES_IN_TAB)}";
            _lastIsKeyword = true;
        }
Ejemplo n.º 3
0
        private Measure ParseMeasure(string input)
        {
            try
            {
                var ms = new Measure();

                if (input.Contains(":"))
                {
                    var options = input.Split(':');
                    foreach (var opt in options)
                    {
                        var info = opt.Trim();
                        if (info.StartsWith("Time-"))
                        {
                            ms.TimeSignature = TimeSignatures.GetTime(info.Substring(5));
                        }
                        else if (info.StartsWith("Key-"))
                        {
                            ms.KeySignature = KeySignatures.GetKey(info.Substring(4));
                        }
                        else if (info.StartsWith("Clef-"))
                        {
                            ms.Clef = Clefs.GetClef(info.Substring(5));
                        }
                    }

                    input = options.Last();
                }

                var units = input.Split(',');
                foreach (var unit in units)
                {
                    var p = unit.Trim().ToUpperInvariant();
                    if ((!p.EndsWith("QUARTER") && p.EndsWith("R")) ||
                        p.EndsWith("REST"))
                    {
                        ms.Pattern.Add(new Rest(p));
                    }
                    else
                    {
                        ms.Pattern.Add(new Note(p));
                    }
                }

                return(ms);
            }
            catch (Exception ex)
            {
                throw new UnrecognizedPatternException($"Unrecognized Measure: {input}", ex);
            }
        }
Ejemplo n.º 4
0
 public Score(Clefs clef = Clefs.Treble)
 {
     SymbolGroups = new List <SymbolGroup>();
     Clef         = clef;
 }