Exemplo n.º 1
0
        private void PianoWindow_TrackPaint(object sender, VocalUtau.DirectUI.DrawUtils.TrackDrawUtils utils)
        {
            List <PitchObject>[] PitchArray = getPitchObjLists();
            foreach (List <PitchObject> PitchObjList in PitchArray)
            {
                utils.DrawPitchLine(PitchObjList, Color.Red);
            }

            /*
             * List<PitchObject> PitchObjList=getShownPitchLine();
             * utils.DrawPitchLine(PitchObjList, Color.Red);
             */
            switch (PitchDragingStatus)
            {
            case PitchDragingType.DrawLine: utils.DrawPitchLine(PitchMathUtils.CalcLineSilk(PitchStP1, PitchTmpP0), Color.DarkCyan); break;

            case PitchDragingType.DrawGraphJ: utils.DrawPitchLine(PitchMathUtils.CalcGraphJ(PitchStP1, PitchTmpP0), Color.DarkCyan); break;

            case PitchDragingType.DrawGraphR: utils.DrawPitchLine(PitchMathUtils.CalcGraphR(PitchStP1, PitchTmpP0), Color.DarkCyan); break;

            case PitchDragingType.DrawGraphS: utils.DrawPitchLine(PitchMathUtils.CalcGraphS(PitchStP1, PitchTmpP0), Color.DarkCyan); break;

            case PitchDragingType.EarseArea:
                if (PitchStP1 != null && PitchTmpP0 != null)
                {
                    PitchView.BlockDia PitchDia = new PitchView.BlockDia();
                    PitchDia.setStartPoint(PitchStP1.Tick, PitchStP1.PitchValue.NoteNumber);
                    PitchDia.setEndPoint(PitchTmpP0.Tick, PitchTmpP0.PitchValue.NoteNumber);
                    utils.DrawDia(PitchDia.TickStart, PitchDia.TickEnd, PitchDia.TopNoteNum, PitchDia.BottomNoteNum);
                }
                break;
            }
            if (_HandleEvents)
            {
                switch (_PitchToolsStatus)
                {
                case PitchView.PitchDragingType.DrawLine: utils.DrawString(new Point(utils.ClipRectangle.Width - 210, 35), Color.FromArgb(60, 0, 0, 0), "Pitch Draw Line", 25, FontStyle.Bold); break;

                case PitchView.PitchDragingType.DrawGraphJ: utils.DrawString(new Point(utils.ClipRectangle.Width - 170, 35), Color.FromArgb(60, 0, 0, 0), "Pitch Draw J", 25, FontStyle.Bold); break;

                case PitchView.PitchDragingType.DrawGraphR: utils.DrawString(new Point(utils.ClipRectangle.Width - 170, 35), Color.FromArgb(60, 0, 0, 0), "Pitch Draw R", 25, FontStyle.Bold); break;

                case PitchView.PitchDragingType.DrawGraphS: utils.DrawString(new Point(utils.ClipRectangle.Width - 170, 35), Color.FromArgb(60, 0, 0, 0), "Pitch Draw S", 25, FontStyle.Bold); break;

                case PitchView.PitchDragingType.EarseArea: utils.DrawString(new Point(utils.ClipRectangle.Width - 160, 35), Color.FromArgb(60, 0, 0, 0), "Pitch Earse", 25, FontStyle.Bold); break;
                }
            }
        }
Exemplo n.º 2
0
        private void PianoWindow_TrackMouseUp(object sender, VocalUtau.DirectUI.PianoMouseEventArgs e)
        {
            if (!_HandleEvents)
            {
                return;
            }
            if (PitchDragingStatus == PitchDragingType.None)
            {
                return;
            }
            PitchObject PitchEdP2 = new PitchObject(e.Tick, e.PitchValue.PitchValue);

            switch (PitchDragingStatus)
            {
            case PitchDragingType.DrawLine: PartsObject.PitchCompiler.ReplaceRealPitchLine(PitchMathUtils.CalcLineSilk(PitchStP1, PitchEdP2)); break;

            case PitchDragingType.DrawGraphJ: PartsObject.PitchCompiler.ReplaceRealPitchLine(PitchMathUtils.CalcGraphJ(PitchStP1, PitchEdP2)); break;

            case PitchDragingType.DrawGraphR: PartsObject.PitchCompiler.ReplaceRealPitchLine(PitchMathUtils.CalcGraphR(PitchStP1, PitchEdP2)); break;

            case PitchDragingType.DrawGraphS: PartsObject.PitchCompiler.ReplaceRealPitchLine(PitchMathUtils.CalcGraphS(PitchStP1, PitchEdP2)); break;

            case PitchDragingType.EarseArea:
                if (PitchStP1 != null && PitchTmpP0 != null)
                {
                    PitchView.BlockDia PitchDia = new PitchView.BlockDia();
                    PitchDia.setStartPoint(PitchStP1.Tick, PitchStP1.PitchValue.NoteNumber);
                    PitchDia.setEndPoint(PitchTmpP0.Tick, PitchTmpP0.PitchValue.NoteNumber);
                    earsePitchLine(PitchDia, _EarseModeV2);
                }
                break;
            }
            PitchDragingType EDStatus = PitchDragingStatus;

            PitchDragingStatus = PitchDragingType.None;
            PitchStP1          = null;
            PitchTmpP0         = null;
            if (PitchActionEnd != null)
            {
                PitchActionEnd(EDStatus);
            }
        }
Exemplo n.º 3
0
        private void earsePitchLine(PitchView.BlockDia NoteDia, bool ModeV2 = false)
        {
            long StartTick = -1;
            long EndTick   = -1;

            for (long i = NoteDia.TickStart; i <= NoteDia.TickEnd; i++)
            {
                double curPv = PartsObject.PitchCompiler.getRealPitch(i);
                int    PN    = (int)Math.Floor(curPv);
                if (PN < NoteDia.BottomNoteNum || PN > NoteDia.TopNoteNum)
                {
                    //区域外
                    if (StartTick > -1 && EndTick > StartTick)
                    {
                        PartsObject.PitchCompiler.ClearPitchLine(StartTick, EndTick);
                        StartTick = -1;
                        EndTick   = -1;
                    }
                }
                else
                {
                    //区域内
                    if (StartTick < 0)
                    {
                        StartTick = i;
                    }
                    EndTick = i;
                }
            }
            if (StartTick > -1 && EndTick > StartTick)
            {
                PartsObject.PitchCompiler.ClearPitchLine(StartTick, EndTick);
                StartTick = -1;
                EndTick   = -1;
            }
        }