/// <summary> /// コンストラクタ。 /// </summary> /// <param name="process">VOICEROIDプロセス。</param> /// <param name="talkTextReplaceConfig">トークテキスト置換設定。</param> /// <param name="exoConfig">AviUtl拡張編集ファイル用設定。</param> /// <param name="appConfig">アプリ設定。</param> /// <param name="talkText">トークテキスト。</param> public CommandParameter( IProcess process, TalkTextReplaceConfig talkTextReplaceConfig, ExoConfig exoConfig, AppConfig appConfig, string talkText) { this.Process = process; this.TalkTextReplaceConfig = talkTextReplaceConfig; this.ExoConfig = exoConfig; this.AppConfig = appConfig; this.TalkText = talkText; }
/// <summary> /// 設定を基にAviUtl拡張編集ファイル関連の処理を行う。 /// </summary> /// <param name="filePath">WAVEファイルパス。</param> /// <param name="voiceroidId">VOICEROID識別ID。</param> /// <param name="text">テキスト。</param> /// <param name="appConfig">アプリ設定。</param> /// <param name="exoConfig">AviUtl拡張編集ファイル用設定。</param> /// <param name="aviUtlFileDropService"> /// AviUtl拡張編集ファイルドロップサービス。 /// </param> /// <returns>処理結果とエラー文字列のタプル。</returns> private static async Task <Tuple <ExoOperationResult, string> > DoOperateExo( string filePath, VoiceroidId voiceroidId, string text, AppConfig appConfig, ExoConfig exoConfig, IAviUtlFileDropService aviUtlFileDropService) { if (appConfig.IsExoFileMaking) { var exoFilePath = Path.ChangeExtension(filePath, @".exo"); // 共通設定更新 ExoCommonConfig common = null; var gcmzResult = GcmzDrops.FileDrop.Result.Success; if ( appConfig.IsSavedExoFileToAviUtl && appConfig.IsExoFileParamReplacedByAviUtl) { common = exoConfig.Common.Clone(); gcmzResult = UpdateExoCommonConfigByAviUtl(ref common); } // ファイル保存 var exo = await DoOperateExoSave( exoFilePath, filePath, text, common ?? exoConfig.Common, exoConfig.CharaStyles[voiceroidId]); if (exo == null) { return (Tuple.Create( ExoOperationResult.SaveFail, @".exo ファイルを保存できませんでした。")); } // ファイルドロップ if (appConfig.IsSavedExoFileToAviUtl) { // UpdateExoCommonConfigByAviUtl で失敗しているなら実施しない var failMessage = (gcmzResult != GcmzDrops.FileDrop.Result.Success) ? MakeFailMessageFromExoDropResult(gcmzResult) : await DoOperateExoDrop( exoFilePath, exo.Length, appConfig.AviUtlDropLayers[voiceroidId].Layer, aviUtlFileDropService); // 処理失敗時、そもそも AviUtl が起動していないなら成功扱い if (failMessage != null && Process.GetProcessesByName(@"aviutl").Length > 0) { return(Tuple.Create(ExoOperationResult.DropFail, failMessage)); } } } return(Tuple.Create(ExoOperationResult.Success, (string)null)); }