Exemplo n.º 1
0
 /// <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;
 }
Exemplo n.º 2
0
        /// <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));
        }