「スクリプトのサンプル」の編集履歴(バックアップ)一覧に戻る
スクリプトのサンプル - (2009/03/30 (月) 20:46:01) のソース
*編集自動化スクリプトのサンプル スクリプトの呼び出し仕様などが確定していないので,下記のサンプルは疑似コードです. -試してみたい方は、それぞれのスクリプトのソースコードと思しき部分をテキストファイルにコピペして&bold(){UTF-8}で保存し、Cadencii.exeの置いてあるフォルダ直下の「script」というフォルダに放り込んでください。 **トラックの内容をUTAUの「resampler*.exe」と「wavtool.exe」を使ってレンダリングするスクリプト -エンベロープをはじめとした各種パラメータは設定・反映されません [[UTAU音源でレンダリング]] **ぼかりすのようなことをするスクリプト -適当実装、version 1.4a5以降でのみ動作 -実行前に、ピッチ・音量の参照元となるWAVEファイルを準備し、あらかじめ音符を打ち込んでおく必要があります。 [[ぼかりすのようなことをするスクリプト]] **メタテキストの内容をファイルに保存する #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; } } }} ----