Beispiel #1
0
        public static VsqCommand generateCommandTrackCurveReplace(int track, string target_curve, VsqBPList bplist)
        {
            VsqCommand command = new VsqCommand();

            command.Type    = VsqCommandType.TRACK_CURVE_REPLACE;
            command.Args    = new Object[3];
            command.Args[0] = track;
            command.Args[1] = target_curve;
            command.Args[2] = bplist.clone();
            return(command);
        }
Beispiel #2
0
        public Object clone()
        {
            VsqMetaText res = new VsqMetaText();

            if (Common != null)
            {
                res.Common = (VsqCommon)Common.clone();
            }
            if (master != null)
            {
                res.master = (VsqMaster)master.clone();
            }
            if (mixer != null)
            {
                res.mixer = (VsqMixer)mixer.clone();
            }
            if (Events != null)
            {
                res.Events = new VsqEventList();
                foreach (var item in Events.iterator())
                {
                    res.Events.add((VsqEvent)item.clone(), item.InternalID);
                }
            }
            if (PIT != null)
            {
                res.PIT = (VsqBPList)PIT.clone();
            }
            if (PBS != null)
            {
                res.PBS = (VsqBPList)PBS.clone();
            }
            if (DYN != null)
            {
                res.DYN = (VsqBPList)DYN.clone();
            }
            if (BRE != null)
            {
                res.BRE = (VsqBPList)BRE.clone();
            }
            if (BRI != null)
            {
                res.BRI = (VsqBPList)BRI.clone();
            }
            if (CLE != null)
            {
                res.CLE = (VsqBPList)CLE.clone();
            }
            if (reso1FreqBPList != null)
            {
                res.reso1FreqBPList = (VsqBPList)reso1FreqBPList.clone();
            }
            if (reso2FreqBPList != null)
            {
                res.reso2FreqBPList = (VsqBPList)reso2FreqBPList.clone();
            }
            if (reso3FreqBPList != null)
            {
                res.reso3FreqBPList = (VsqBPList)reso3FreqBPList.clone();
            }
            if (reso4FreqBPList != null)
            {
                res.reso4FreqBPList = (VsqBPList)reso4FreqBPList.clone();
            }
            if (reso1BWBPList != null)
            {
                res.reso1BWBPList = (VsqBPList)reso1BWBPList.clone();
            }
            if (reso2BWBPList != null)
            {
                res.reso2BWBPList = (VsqBPList)reso2BWBPList.clone();
            }
            if (reso3BWBPList != null)
            {
                res.reso3BWBPList = (VsqBPList)reso3BWBPList.clone();
            }
            if (reso4BWBPList != null)
            {
                res.reso4BWBPList = (VsqBPList)reso4BWBPList.clone();
            }
            if (reso1AmpBPList != null)
            {
                res.reso1AmpBPList = (VsqBPList)reso1AmpBPList.clone();
            }
            if (reso2AmpBPList != null)
            {
                res.reso2AmpBPList = (VsqBPList)reso2AmpBPList.clone();
            }
            if (reso3AmpBPList != null)
            {
                res.reso3AmpBPList = (VsqBPList)reso3AmpBPList.clone();
            }
            if (reso4AmpBPList != null)
            {
                res.reso4AmpBPList = (VsqBPList)reso4AmpBPList.clone();
            }
            if (harmonics != null)
            {
                res.harmonics = (VsqBPList)harmonics.clone();
            }
            if (fx2depth != null)
            {
                res.fx2depth = (VsqBPList)fx2depth.clone();
            }
            if (GEN != null)
            {
                res.GEN = (VsqBPList)GEN.clone();
            }
            if (POR != null)
            {
                res.POR = (VsqBPList)POR.clone();
            }
            if (OPE != null)
            {
                res.OPE = (VsqBPList)OPE.clone();
            }
            return(res);
        }
Beispiel #3
0
        /// <summary>
        /// このトラックの指定した範囲を削除し,削除範囲以降の部分を削除開始位置までシフトします
        /// </summary>
        /// <param name="clock_start"></param>
        /// <param name="clock_end"></param>
        public void removePart(int clock_start, int clock_end)
        {
            int dclock = clock_end - clock_start;

            // 削除する範囲に歌手変更イベントが存在するかどうかを検査。
            VsqEvent t_last_singer = null;

            for (Iterator <VsqEvent> itr = getSingerEventIterator(); itr.hasNext();)
            {
                VsqEvent ve = itr.next();
                if (clock_start <= ve.Clock && ve.Clock < clock_end)
                {
                    t_last_singer = ve;
                }
                if (ve.Clock == clock_end)
                {
                    t_last_singer = null; // 後でclock_endの位置に補うが、そこにに既に歌手変更イベントがあるとまずいので。
                }
            }
            VsqEvent last_singer = null;

            if (t_last_singer != null)
            {
                last_singer       = (VsqEvent)t_last_singer.clone();
                last_singer.Clock = clock_end;
            }

            bool changed = true;

            // イベントの削除
            while (changed)
            {
                changed = false;
                int numEvents = getEventCount();
                for (int i = 0; i < numEvents; i++)
                {
                    VsqEvent itemi = getEvent(i);
                    if (clock_start <= itemi.Clock && itemi.Clock < clock_end)
                    {
                        removeEvent(i);
                        changed = true;
                        break;
                    }
                }
            }

            // クロックのシフト
            if (last_singer != null)
            {
                addEvent(last_singer); //歌手変更イベントを補う
            }
            int num_events = getEventCount();

            for (int i = 0; i < num_events; i++)
            {
                VsqEvent itemi = getEvent(i);
                if (clock_end <= itemi.Clock)
                {
                    itemi.Clock -= dclock;
                }
            }

            for (int i = 0; i < VsqTrack.CURVES.Length; i++)
            {
                string    curve  = VsqTrack.CURVES[i];
                VsqBPList bplist = getCurve(curve);
                if (bplist == null)
                {
                    continue;
                }
                VsqBPList buf_bplist = (VsqBPList)bplist.clone();
                bplist.clear();
                int  value_at_end = buf_bplist.getValue(clock_end);
                bool at_end_added = false;
                foreach (var key in buf_bplist.keyClockIterator())
                {
                    if (key < clock_start)
                    {
                        bplist.add(key, buf_bplist.getValue(key));
                    }
                    else if (clock_end <= key)
                    {
                        if (key == clock_end)
                        {
                            at_end_added = true;
                        }
                        bplist.add(key - dclock, buf_bplist.getValue(key));
                    }
                }
                if (!at_end_added)
                {
                    bplist.add(clock_end - dclock, value_at_end);
                }
            }
        }