Example #1
0
 public static bool Edit(cadencii.vsq.VsqFile Vsq)
 {
     for (int i = 1; i < Vsq.Track.Count; i++)
     {
         foreach (var item in Vsq.Track[i].getNoteEventIterator())
         {
             if (item.ID.Note < 127)
             {
                 item.ID.Note++;
             }
         }
     }
     return(true);
 }
Example #2
0
 public static bool Edit(cadencii.vsq.VsqFile Vsq)
 {
     for (int i = 1; i < Vsq.Track.Count; i++)
     {
         foreach (var item in Vsq.Track[i].getNoteEventIterator())
         {
             // 32分音符の長さは,クロック数に直すと60クロック
             if (item.ID.Length > 60)
             {
                 item.ID.Length -= 60;
             }
         }
     }
     return(true);
 }
Example #3
0
 public static bool Edit(cadencii.vsq.VsqFile Vsq)
 {
     for (int i = 1; i < Vsq.Track.size(); i++)
     {
         for (Iterator <VsqEvent> itr = Vsq.Track.get(i).getNoteEventIterator(); itr.hasNext();)
         {
             cadencii.vsq.VsqEvent item = itr.next();
             if (item.ID.Note < 127)
             {
                 item.ID.Note++;
             }
         }
     }
     return(true);
 }
Example #4
0
 public static bool Edit(cadencii.vsq.VsqFile Vsq)
 {
     for (int i = 1; i < Vsq.Track.size(); i++)
     {
         for (Iterator <VsqEvent> itr = Vsq.Track.get(i).getNoteEventIterator(); itr.hasNext();)
         {
             cadencii.vsq.VsqEvent item = itr.next();
             // 32分音符の長さは,クロック数に直すと60クロック
             if (item.ID.Length > 60)
             {
                 item.ID.Length -= 60;
             }
         }
     }
     return(true);
 }
Example #5
0
 public static bool Edit(cadencii.vsq.VsqFile Vsq)
 {
     System.IO.StreamWriter sw = null;
     try {
         sw = new System.IO.StreamWriter(@"c:\lyrics.txt");
         foreach (var item in Vsq.Track[1].getNoteEventIterator())
         {
             int    clStart  = item.Clock;
             int    clEnd    = clStart + item.ID.Length;
             double secStart = Vsq.getSecFromClock(clStart);
             double secEnd   = Vsq.getSecFromClock(clEnd);
             sw.WriteLine(secStart + "\t" + secEnd + "\t" + item.ID.LyricHandle.L0.Phrase + "\t" + item.ID.LyricHandle.L0.PhoneticSymbol);
         }
     } catch {
         return(false);
     } finally {
         if (sw != null)
         {
             sw.Close();
         }
     }
     return(true);
 }
Example #6
0
    public static bool Edit(cadencii.vsq.VsqFile vsq)
    {
        // 選択されているアイテム(のInternalID)をリストアップ
        System.Collections.Generic.List <int> ids = new System.Collections.Generic.List <int>();
        foreach (var entry in AppManager.itemSelection.getEventIterator())
        {
            ids.Add(entry.original.InternalID);
        }

        cadencii.vsq.VsqTrack track = vsq.Track[AppManager.getSelected()];

        // コントロールカーブの時間方向の解像度を,Cadenciiの設定値から取得
        int resol = AppManager.editorConfig.getControlCurveResolutionValue();

        for (int i = 0; i < ids.Count; i++)
        {
            int internal_id = ids[i];

            foreach (var item in track.getNoteEventIterator())
            {
                // 指定されたInternalIDと同じなら,編集する
                if (item.InternalID == internal_id)
                {
                    // Brightnessカーブを取得
                    cadencii.vsq.VsqBPList bri = track.getCurve("BRI");

                    // 音符の最後の位置でのBRIを取得.処理の最後で追加
                    int value_at_end = bri.getValue(item.Clock + item.ID.Length);

                    // これから編集しようとしている範囲にすでに値がある場合,邪魔なので削除する
                    bri.keyClockIterator()
                    .Where((clock) => item.Clock <= clock && clock <= item.Clock + item.ID.Length)
                    .ToList()
                    .ForEach((clock) => bri.remove(clock));

                    // 直前に指定したBRI値.最初はありえない値にしておく
                    int last_v = -1;

                    // 時間方向解像度(resol)ごとのクロックに対して,順次BRIを設定
                    for (int clock = item.Clock; clock <= item.Clock + item.ID.Length; clock += resol)
                    {
                        // BRIを取得.x=0が音符の先頭,x=1が音符の末尾.getCurve関数は,この仕様を満たすようにBRIを返すように,お好みで定義
                        float x = (clock - item.Clock) / (float)item.ID.Length;
                        int   v = getCurve(x);

                        if (last_v != v)
                        {
                            // 直前に指定した値と違うときだけ追加.
                            bri.add(clock, v);
                        }

                        // 「直前の値」を更新
                        last_v = v;
                    }

                    // 音符末尾の位置のBRIを強制的に元の値に戻す.これをやらないと,
                    // その音符の末尾以降のBRIがそのまま編集の影響を受けてしまう
                    bri.add(item.Clock + item.ID.Length, value_at_end);
                    break;
                }
            }
        }
        return(true);
    }
Example #7
0
 public static bool Edit(cadencii.vsq.VsqFile vsq)
 {
     vsq.Track[1].printMetaText(@"c:\meta_text.txt", "Shift_JIS");
     return(true);
 }