コード例 #1
0
        private RenderNote[] BuildRenderNotes(Ust ust, Singer singer)
        {
            var renderNotes = new List <RenderNote>();

            for (int i = 0; i < ust.Notes.Length; i++)
            {
                var renderNote = RenderNote.CreateFromNote(ust.Notes[i]);
                renderNote.Oto = singer.FindOto(renderNote) ?? Oto.CreateDefault();
                renderNotes.Add(renderNote);
            }

            for (int i = 0; i < renderNotes.Count; i++)
            {
                var note = renderNotes[i];
                var next = renderNotes.ElementAtOrDefault(i + 1);
                note.Envelope = new Envelope(note, next);
            }

            var pitchController = new PitchController(ust.Tempo);

            for (int i = 0; i < renderNotes.Count; i++)
            {
                var prev = renderNotes.ElementAtOrDefault(i - 1);
                var curr = renderNotes.ElementAtOrDefault(i);
                var next = renderNotes.ElementAtOrDefault(i + 1);

                pitchController.BuildPitchData(curr, prev, next);
            }

            return(renderNotes.ToArray());
        }