「スクリプトのサンプル」の編集履歴(バックアップ)一覧はこちら
「スクリプトのサンプル」(2009/06/04 (木) 12:19:39) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*編集自動化スクリプトのサンプル
スクリプトの呼び出し仕様などが確定していないので,下記のサンプルは疑似コードです.
-試してみたい方は、それぞれのスクリプトのソースコードと思しき部分をテキストファイルにコピペして&bold(){UTF-8}で保存し、Cadencii.exeの置いてあるフォルダ直下の「script」というフォルダに放り込んでください。
**トラックの内容をUTAUの「resampler*.exe」と「wavtool.exe」を使ってレンダリングするスクリプト
-エンベロープをはじめとした各種パラメータは設定・反映されません
[[UTAU音源でレンダリング]]
**メタテキストの内容をファイルに保存する
#highlight(csharp){{public static class SaveMetaText {
public static bool Edit( Boare.Lib.Vsq.VsqFile vsq ) {
vsq.Tracks[1].PrintMetaText( @"c:\meta_text.txt" );
return true;
}
} }}
**歌詞情報を取得し、ファイルに保存する
#highlight(csharp){{public static class PrintLyric {
public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) {
System.IO.StreamWriter sw = null;
try {
sw = new System.IO.StreamWriter( @"c:\lyrics.txt" );
for ( int i = 0; i < Vsq.Tracks[1].Events.Count; i++ ) {
Boare.Lib.Vsq.VsqEvent item = Vsq.Tracks[1].Events[i];
if ( item.ID.type == Boare.Lib.Vsq.VsqIDType.Anote ) {
int clStart = item.Clock;
int clEnd = clStart + item.ID.Length;
double secStart = Vsq.SecFromClock( clStart );
double secEnd = Vsq.SecFromClock( 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;
}
} }}
**全ての音符を半音上げる
#highlight(csharp){{public static class UpHalfStep {
public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) {
for ( int i = 1; i < Vsq.Tracks.Count; i++ ) {
for ( int j = 0; j < Vsq.Tracks[i].Events.Count; j++ ) {
Boare.Lib.Vsq.VsqEvent item = Vsq.Tracks[i].Events[j];
if ( item.ID.type == Boare.Lib.Vsq.VsqIDType.Anote ) {
if ( item.ID.Note < 127 ) {
item.ID.Note++;
}
}
}
}
return true;
}
} }}
**全ての音符の長さを32分音符分だけ短くする
#highlight(csharp){{public static class Trim32 {
public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) {
for ( int i = 1; i < Vsq.Tracks.Count; i++ ) {
for ( int j = 0; j < Vsq.Tracks[i].Events.Count; j++ ){
Boare.Lib.Vsq.VsqEvent item = Vsq.Tracks[i].Events[j];
if ( item.ID.type == Boare.Lib.Vsq.VsqIDType.Anote ) {
// 32分音符の長さは,クロック数に直すと60クロック
if ( item.ID.Length > 60 ) {
item.ID.Length -= 60;
}
}
}
}
return true;
}
} }}
----
*編集自動化スクリプトのサンプル
スクリプトの呼び出し仕様などが確定していないので,下記のサンプルは疑似コードです.
-試してみたい方は、それぞれのスクリプトのソースコードと思しき部分をテキストファイルにコピペして&bold(){UTF-8}で保存し、Cadencii.exeの置いてあるフォルダ直下の「script」というフォルダに放り込んでください。
**トラックの内容をUTAUの「resampler*.exe」と「wavtool.exe」を使ってレンダリングするスクリプト
-エンベロープをはじめとした各種パラメータは設定・反映されません
[[UTAU音源でレンダリング]]
**メタテキストの内容をファイルに保存する
#highlight(csharp){{public static class SaveMetaText {
public static bool Edit( Boare.Lib.Vsq.VsqFile vsq ) {
vsq.Track[1].printMetaText( @"c:\meta_text.txt" );
return true;
}
} }}
**歌詞情報を取得し、ファイルに保存する
#highlight(csharp){{public static class PrintLyric {
public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) {
System.IO.StreamWriter sw = null;
try {
sw = new System.IO.StreamWriter( @"c:\lyrics.txt" );
for ( Boare.Lib.Vsq.Iterator itr = Vsq.Track[1].getNoteEventIterator(); itr.hasNext(); ) {
Boare.Lib.Vsq.VsqEvent item = (Boare.Lib.Vsq.VsqEvent)itr.next();
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;
}
} }}
**全ての音符を半音上げる
#highlight(csharp){{public static class UpHalfStep {
public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) {
for ( int i = 1; i < Vsq.Track.Count; i++ ) {
for ( Boare.Lib.Vsq.Iterator itr = Vsq.Track[i].getNoteEventIterator(); itr.hasNext(); ) {
Boare.Lib.Vsq.VsqEvent item = (Boare.Lib.Vsq.VsqEvent)itr.next();
if ( item.ID.Note < 127 ) {
item.ID.Note++;
}
}
}
return true;
}
} }}
**全ての音符の長さを32分音符分だけ短くする
#highlight(csharp){{public static class Trim32 {
public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) {
for ( int i = 1; i < Vsq.Track.Count; i++ ) {
for ( Boare.Lib.Vsq.Iterator itr = Vsq.Track[i].getNoteEventIterator(); itr.hasNext(); ) {
Boare.Lib.Vsq.VsqEvent item = (Boare.Lib.Vsq.VsqEvent)itr.next();
// 32分音符の長さは,クロック数に直すと60クロック
if ( item.ID.Length > 60 ) {
item.ID.Length -= 60;
}
}
}
return true;
}
} }}
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: