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); }
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); }
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); }
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); }
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); }
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); }
public static bool Edit(cadencii.vsq.VsqFile vsq) { vsq.Track[1].printMetaText(@"c:\meta_text.txt", "Shift_JIS"); return(true); }