public static List <MusicalSymbol> Convert(MusicMeasure measure)
        {
            var s = new List <MusicalSymbol>();

            foreach (var note in measure.Notes.OrderBy(n => n.Position))
            {
                var t         = TranslateNote(note);
                var direction = note.Note > 71
                    ? NoteStemDirection.Down
                    : NoteStemDirection.Up;

                var duration = TranslateDuration(note);

                var psamNote = new Note(t.Note, t.Alter, t.Octave, duration.Duration, direction, NoteTieType.None, new List <NoteBeamType>()
                {
                    NoteBeamType.Single
                });
                psamNote.NumberOfDots = duration.Dots;
                if (note.IsRepaired)
                {
                    psamNote.MusicalCharacterColor = System.Drawing.Color.Red;
                }
                s.Add(psamNote);
            }

            return(s);
        }
Beispiel #2
0
        private static (IncipitViewerWPF Viewer, int Width) BuildVisualMeasure(MusicMeasure measure)
        {
            var result  = new IncipitViewerWPF();
            var symbols = MeasureToPsamSymbolConvertor.Convert(measure);

            foreach (var symbol in symbols)
            {
                result.AddMusicalSymbol(symbol);
            }
            result.AddMusicalSymbol(new Barline());

            return(result, CalculateWidth(symbols));
        }
Beispiel #3
0
        public MeasureViewModel(MusicMeasure measure)
        {
            Measure = measure;

            var viewer = BuildVisualMeasure(measure);

            Width = viewer.Width;
            var grid = new Grid {
                Width = Width, Height = 100
            };

            grid.Children.Add(viewer.Viewer);
            DisplayGrid = grid;
        }