Skip to content

routersys/YMM4-CombinedEffect

Repository files navigation

まとめてエフェクト for YMM4

License .NET Release


YukkuriMovieMaker4(YMM4)上で動作する、複数の映像エフェクトをひとつにまとめて管理するプラグインです。 複数のエフェクトをひとつのアイテムとしてグループ化し、プリセットとして保存・呼び出し・共有することで、複雑なエフェクト構成の再利用と管理を強力にサポートします。 グループ・お気に入り・最近使用の仮想グループによるプリセット管理、タブごとに構成を切り替えられるエフェクトタブ管理、Git ライクなスナップショット履歴とブランチ管理、CRC32 検証付きアトミックファイル書き込みおよび SHA-256 ハッシュによる多重冗長永続化、プリセットパッケージの書き出し・読み込み、クリップボードを利用したコピー・カット・ペースト、正規表現対応の多軸検索、8 言語対応の UI を搭載しています。

Image


目次

  1. 概要
  2. 動作要件
  3. インストール方法
  4. 主な機能
  5. パラメータ一覧
  6. プリセット管理の操作一覧
  7. 履歴管理の操作一覧
  8. 使い方ガイド
  9. 注意事項
  10. 免責事項
  11. ライセンス

概要

本プラグインは YMM4 の「映像エフェクト」として動作する、エフェクトまとめ管理ツールです。 タイムライン上のアイテムに追加された「まとめてエフェクト」ひとつの中に、複数の映像エフェクトを順番に格納して適用できます。エフェクトの構成はプリセットとして保存・呼び出しが可能で、名前のついたグループで整理できます。プリセットの内容はスナップショット履歴で管理でき、ブランチを使ってバージョンを分岐させることもできます。プリセットパッケージファイル(.ceprstpkg)による書き出し・読み込みや、クリップボードを介したコピー・カット・ペーストで、プリセットを他の環境や他のユーザーと手軽に共有できます。

ラベルには現在のプリセット名と適用中エフェクト数が表示されるため、タイムライン上での内容の把握が容易です。


動作要件

項目 要件
OS Windows 10 / 11 (64bit)
YukkuriMovieMaker4 最新版を推奨
ランタイム .NET 10.0
GPU Direct2D 対応 GPU

インストール方法

  1. Releases ページから最新のプラグインファイル(.ymme)をダウンロードしてください。
  2. YMM4 が起動していないことを確認し、ダウンロードしたファイルを実行(ダブルクリック)してインストールします。
  3. YMM4 を起動し、タイムライン上のアイテムを選択します。
  4. 映像エフェクトの追加から 「まとめてエフェクト」 を選択してください。

主な機能

1. エフェクトのグループ化

YMM4 の標準の映像エフェクトセレクター(VideoEffectSelector)を内包しており、任意の映像エフェクトを複数格納して順番に適用できます。格納されたエフェクトは上から順にパイプライン処理され、無効化されたエフェクト(IsEnabled = false)はスキップされます。

  • エフェクト数の表示: プロパティパネル・タイムラインのラベルに現在のエフェクト数が表示されます。
  • プリセット連携: 適用中のプリセット名がある場合はラベルに併記されます。
  • AviUtl 非対応: 本エフェクトは AviUtl 出力(ExoVideoFilters)には対応していません。

2. エフェクトタブ管理

「適用中エフェクト」の上部にタブバーが表示され、タブごとに独立したエフェクト構成を保持できます。タブを切り替えると選択中タブの内容が反映されます。

  • タブを追加: 右端の「+」ボタンでタブを追加できます。
  • タブを削除: 各タブの「×」ボタンで削除できます(先頭タブ「新規」は削除不可)。
  • タブ名を変更: タブ名をダブルクリックして編集できます(Enter/フォーカス移動で確定、Escでキャンセル)。
  • 既定のタブ名: 先頭は「新規」、2個目以降は「タブ 2」「タブ 3」… が自動で付きます。

3. プリセット管理

WPF(PresetManagerControl.xaml)で実装されたプリセット管理パネルを内蔵しています。プリセットはユーザー定義グループで整理でき、グループ・プリセットともにドラッグ&ドロップで並び替えられます。

  • グループの追加・削除・名前変更: ダイアログで名前を入力してグループを作成・管理できます。ただし「デフォルト」グループは削除できません。
  • プリセットの追加: 現在のエフェクト構成(エフェクトタブ構成を含む)をプリセットとして保存します。保存先グループは現在選択中のグループ(仮想グループ選択時は最初の実グループ)になります。
  • プリセットの適用: 選択したプリセットのエフェクト構成を現在のアイテムに読み込みます。同一プリセットを重ねて適用する際は確認ダイアログが表示されます。複数選択時は選択中タブのエフェクトを結合して適用します。
  • プリセットの更新: 現在のエフェクト構成で選択中プリセットを上書きします。エフェクトに変更がある場合のみ有効になります。
  • プリセットのクリア: プリセットに保存されているエフェクトをすべて削除して空にします。
  • 複数選択での削除: プリセットリストで複数のプリセットを選択した状態で削除操作を行うと、選択中のすべてのプリセットが一括削除されます。
  • お気に入り登録: スター(★)ボタンでプリセットをお気に入りに登録・解除できます。
  • プリセット検索: キーワードで表示中のプリセットをリアルタイムに絞り込めます(詳細は 多軸プリセット検索 参照)。
  • 無効エフェクトの一括削除: コンテキストメニューから、無効化(チェックオフ)されているエフェクトをまとめて削除できます。
  • 履歴管理: プリセットごとに履歴管理ウィンドウを開くことができます(詳細は スナップショット履歴・ブランチ管理 参照)。
  • ボタンのホバーアニメーション: 操作ボタンはマウスオーバー時にラベルが展開表示されるアニメーションを備えています(XAML スタイルで実装)。

4. 仮想グループ

以下の 3 つの仮想グループが常にグループリストの先頭に表示されます。仮想グループは削除・名前変更できません。

グループ名 内容
すべて 全実グループのプリセットを名前順で表示
最近使用 直近で適用したプリセットを最大 10 件、新しい順で表示
お気に入り お気に入り登録済みのプリセットを名前順で表示

5. スナップショット履歴・ブランチ管理

プリセットごとに Git ライクな履歴管理ウィンドウ(HistoryManagerWindow)を提供します。

  • スナップショットの作成: メッセージを入力してエフェクト構成のスナップショットを保存します。スナップショットは親スナップショット ID(ParentId)で連結されてブランチを形成します。
  • ブランチの作成: 現在または選択したスナップショットを起点に新しいブランチを作成し、履歴を分岐させます。
  • スナップショットへの巻き戻し(Revert): 選択したスナップショットのエフェクト構成をプリセットおよびタイムライン上のアイテムに復元します。
  • マージ(Merge): 選択したスナップショットのエフェクトを現在のエフェクトの末尾に結合します。
  • リセット Soft: ブランチの HEAD を選択したスナップショットに移動します(エフェクトは変更しません)。
  • リセット Hard: リセット Soft とスナップショットへの Revert を同時に実行します。
  • 差分表示: 現在のエフェクト構成と選択したスナップショットの差分を、追加・削除・変更のカラーコードで表示します。
  • タグ管理: スナップショットに複数のタグを付与・削除して整理できます。

6. 安全なファイル永続化

すべてのプリセットデータ・グループ構成・履歴データは JSON ファイルとして保存されます。書き込みには多重冗長化・整合性検証の仕組みが備わっており、単一障害によるデータ消失を防ぎます。

  • アトミック書き込み: AtomicFileWriter が一時ファイル(.tmp)への書き込みと File.Replace による差し替えを行い、書き込み途中のクラッシュによるデータ破損を防ぎます。
  • CRC32 検証: 書き込み時に CRC32 チェックサムを付与し、読み込み時に照合します。照合に失敗した場合はバックアップファイル(.bak)からの復元を試みます。
  • SHA-256 ハッシュによる多重冗長化: PresetPersistenceService はプラグインディレクトリ(メインディスク)と YMM4 インストールディレクトリ配下のバックアップストレージ(user/backup/CombinedEffect/)の 2 か所にデータを保存します。起動時に両者の内容と CombinedEffectSettings に記録されたハッシュ・タイムスタンプを照合し、不整合を検出した場合は自動的に正しいデータで修復します(ヒーリング)。
  • デバウンス書き込み: AsyncDebouncer により連続した変更操作を 300ms デバウンスして書き込みをまとめ、I/O 負荷を抑制します。
  • ログ記録: LoggerService が操作ログ・エラーログを user/log/CombinedEffect/ 配下に保存します。ログファイルは 512 KB を超えると新ファイルに切り替わり、31 日以上経過したファイルは自動削除されます。
  • 旧バージョンからの移行: %AppData%\YukkuriMovieMaker4\user\plugins\CombinedEffect\presets.json に旧フォーマットのデータが存在する場合、初回起動時に自動マイグレーションを行います。

7. プリセットの書き出し・読み込み

プリセットをプリセットパッケージファイル(拡張子 .ceprstpkg)として書き出し・読み込みすることで、環境間やユーザー間でのプリセット共有が可能です。

  • 書き出し(Export): 選択中のプリセット(複数選択可)をひとつのパッケージファイルにまとめて書き出します。単一プリセット選択時はプリセット名をファイル名の初期値として使用し、複数選択時はデフォルトのバンドル名が使用されます。コンテキストメニューの「書き出し」から実行します。
  • 読み込み(Import): パッケージファイルを読み込んで現在のグループにプリセットを追加します。複数のファイルを同時に読み込むことができます。コンテキストメニューの「読み込み」から実行します。
  • バージョン互換: パッケージファイルにはフォーマットバージョンが記録されており、将来のバージョンアップ時の移行に対応した設計になっています。現在のバージョン(1)を超えるパッケージを読み込もうとした場合はエラーメッセージが表示されます。
  • ID の再割り当て: 読み込んだプリセットには新しい GUID が割り当てられるため、既存プリセットと競合しません。

8. クリップボード連携(コピー・カット・ペースト)

クリップボードを使ってプリセットをコピー・カット・ペーストできます。プリセットパッケージと同じ JSON 形式でクリップボードに書き込まれるため、テキストエディタやほかのツールとのデータ交換にも利用できます。

  • コピー(Copy): 選択中のプリセット(複数選択可)の内容をクリップボードにコピーします。コンテキストメニューまたはプリセットリストの空白領域の右クリックメニューから実行できます。
  • カット(Cut): コピーと同時に元のプリセットを削除します。確認ダイアログは表示されません。
  • ペースト(Paste): クリップボードの内容を現在のグループに新しいプリセットとして貼り付けます。クリップボードに有効なプリセットパッケージ JSON が含まれている場合のみ有効になります。仮想グループ選択中は最初の実グループに追加されます。

9. 多軸プリセット検索

検索ボックスの右端にある絞り込みアイコンから検索対象を切り替えられます。すべてのモードで正規表現(大文字小文字を区別しない)を使用できます。正規表現として無効なパターンが入力された場合は通常の部分一致検索にフォールバックします。

検索モード 検索対象
プリセット名(デフォルト) プリセットの名前
エフェクト名 プリセットに含まれるエフェクトのラベル一覧
エフェクト数 プリセットに含まれるエフェクトの個数(数値での完全一致を優先)
内部データ (JSON) シリアライズされたエフェクト構成の生 JSON データ
すべて 名前・エフェクト名・生 JSON データのいずれかに一致するものを表示

10. レスポンシブ UI

プリセット管理コントロールの幅が 400px を下回ると、グループパネルが自動的に折りたたまれ、ハンバーガーメニューボタンからポップアップで開くモバイルレイアウトに切り替わります。コントロールの高さはドラッグで変更でき(リサイズ完了時に保存)、グループ列の幅はグリッドスプリッターで調整できます。いずれも設定値として保存され、次回起動時に復元されます。

11. 多言語対応

ローカライズファイルを内蔵しており、YMM4 の言語設定に合わせて UI テキスト、ダイアログメッセージ、グループ名、ボタンラベルがすべて自動で切り替わります。

対応言語:日本語 (ja-jp)、英語 (en-us)、中国語簡体字 (zh-cn)、中国語繁体字 (zh-tw)、韓国語 (ko-kr)、スペイン語 (es-es)、アラビア語 (ar-sa)、インドネシア語 (id-id)


パラメータ一覧

プロパティエディタで設定可能な項目は以下の通りです。

パラメータ名 デフォルト アニメーション 説明
適用中エフェクト ImmutableList (空) まとめて管理する映像エフェクトのリスト。YMM4 標準のエフェクトセレクターで追加・並べ替え・無効化ができます。
EffectTabsJson String (JSON) (空文字列) エフェクトタブ状態(選択中タブ ID・タブ名・各タブのエフェクト JSON)を保持する内部用プロパティです。タブの追加・削除・名前変更・切替時に自動更新されます。
SelectedPresetJson String (JSON) (空) 現在適用されているプリセットの情報(内部用途)。プリセット適用時に自動設定され、タイムラインのラベル表示に使用されます。

プリセット管理パネル(PresetManagerControl)はプロパティパネル上部に表示されます。


プリセット管理の操作一覧

操作 説明
タブを追加 タブバー右端の「+」ボタンで新しいタブを作成します
タブを削除 タブの「×」ボタンで削除します(先頭タブ「新規」は削除不可)
タブ名変更 タブをダブルクリックして名前を編集します(Enter/フォーカス移動で確定、Escでキャンセル)
タブを切替 タブをクリックすると、そのタブのエフェクトが「適用中エフェクト」に反映されます
グループを追加 名前を入力して新規グループを作成します
グループを削除 選択中グループとその全プリセットを削除します(デフォルト・仮想グループは削除不可)
グループ名変更 ダブルクリックまたはコンテキストメニューから名前を変更します(仮想グループは変更不可)
グループの並べ替え ドラッグ&ドロップで順序を変更します(仮想グループは移動不可)
プリセットを追加 現在のエフェクト構成を名前付きでプリセットとして保存します
プリセットを削除 選択中のプリセット(複数選択可)を削除します
プリセット名変更 ダブルクリックまたはコンテキストメニューから名前を変更します
プリセットの並べ替え ドラッグ&ドロップで順序を変更します(仮想グループ表示中は不可)
プリセットを適用 選択中プリセットのエフェクト構成を読み込みます
プリセットを更新 現在のエフェクト構成で選択中プリセットを上書きします
プリセットをクリア プリセットに保存されているエフェクトをすべて削除します
お気に入り切替 スターボタンでお気に入り登録・解除します
プリセットを検索 検索ボックスにキーワードを入力してプリセットを絞り込みます。検索対象は絞り込みアイコンで切り替えられます
コピー 選択中のプリセット(複数選択可)をクリップボードにコピーします
カット 選択中のプリセット(複数選択可)をクリップボードにコピーして削除します
ペースト クリップボードのプリセットを現在のグループに貼り付けます
書き出し 選択中のプリセット(複数選択可)をパッケージファイル(.ceprstpkg)として書き出します
読み込み パッケージファイルからプリセットを現在のグループに追加します
未選択エフェクトを削除 無効化されているすべてのエフェクトを一括削除します
履歴管理 コンテキストメニューからプリセットの履歴管理ウィンドウを開きます

履歴管理の操作一覧

操作 説明
スナップショットを保存 メッセージを入力して現在のエフェクト構成を保存します
この状態に戻す 選択したスナップショットのエフェクト構成を復元します
ブランチを作成 名前を入力して現在または選択したスナップショットからブランチを分岐させます
マージ 選択したスナップショットのエフェクトを現在のエフェクトに追記します
変更を保持 (Soft Reset) ブランチの HEAD を選択したスナップショットへ移動します(エフェクト変更なし)
変更を破棄 (Hard Reset) Soft Reset と Revert を同時実行します
タグの管理 スナップショットにタグを追加・削除します

使い方ガイド

まとめてエフェクトを追加する

  1. タイムラインで映像アイテム(動画・画像など)を選択します。
  2. 映像エフェクトの追加から「まとめてエフェクト」を選択します。
  3. プロパティパネルにプリセット管理パネルとエフェクトリストが表示されます。
  4. エフェクトリストに任意の映像エフェクトを追加してください。

エフェクトタブを使い分ける

  1. 「適用中エフェクト」上部の「+」ボタンを押してタブを追加します。
  2. 各タブで異なるエフェクト構成を作成します。
  3. タブ名をダブルクリックして用途に合わせた名前に変更します。
  4. タブをクリックして切り替えると、選択中タブの構成が即座に反映されます。

プリセットを保存・呼び出す

  1. エフェクトリストに任意のエフェクトを追加・設定します。
  2. 必要に応じてタブを追加し、タブごとにエフェクト構成を作成します。
  3. プリセット管理パネルで「追加(+)」ボタンをクリックし、名前を入力してプリセットを保存します。
  4. 別のアイテムに同じ構成を適用したい場合は、プリセットを選択して「適用(✓)」ボタンをクリックします。

グループでプリセットを整理する

  1. 「グループを追加(+)」ボタンでグループを作成し、名前を入力します。
  2. 作成したグループを選択した状態でプリセットを追加すると、そのグループに保存されます。
  3. グループ・プリセットともにドラッグ&ドロップで並び替えができます。

プリセットを書き出して共有する

  1. 共有したいプリセットを選択します(Ctrl クリックや Shift クリックで複数選択可能)。
  2. 右クリックしてコンテキストメニューから「書き出し」を選択します。
  3. 保存先とファイル名を指定してパッケージファイル(.ceprstpkg)として保存します。
  4. 受け取った側はコンテキストメニューの「読み込み」から同ファイルを指定して取り込みます。

クリップボードでプリセットをコピーする

  1. コピーしたいプリセットを選択し、右クリックして「コピー」を選択します。
  2. 移動先のグループを選択し、右クリックして「ペースト」を選択します。
  3. 元のプリセットを残さず移動させたい場合は「コピー」の代わりに「カット」を使用します。

プリセットを検索する

  1. 検索ボックスにキーワードを入力するとリアルタイムで絞り込まれます。
  2. 検索ボックス右端の絞り込みアイコンをクリックすると検索対象を切り替えられます。
  3. 正規表現(例: ^blurcolor|shadow)も使用できます。

スナップショット履歴を使う

  1. プリセットを右クリックしてコンテキストメニューから「履歴管理」を開きます。
  2. エフェクト構成を変更したら、メッセージを入力して「新規スナップショット保存」をクリックします。
  3. 過去のスナップショットを選択して「この状態に戻す」をクリックすると、その時点の構成が復元されます。
  4. 「新規分岐を作成」でブランチを分けて、異なるバリエーションを並行管理できます。

お気に入りと最近使用を活用する

  • よく使うプリセットはスター(★)ボタンでお気に入り登録すると、「お気に入り」グループから素早くアクセスできます。
  • 最近適用したプリセットは「最近使用」グループに最大 10 件表示されます。

注意事項

  • AviUtl 形式(.exo)への出力には対応していません。
  • プリセットデータはプラグインディレクトリ配下の presets/ フォルダおよびバックアップストレージ(user/backup/CombinedEffect/)の 2 か所に保存されます。ログファイルは user/log/CombinedEffect/ に出力されます。いずれかのフォルダを削除してもデータを復元できる場合がありますが、両方を削除するとプリセットが失われます。履歴データは History/ フォルダに保存されます。
  • 「すべて」「お気に入り」「最近使用」の仮想グループは削除・名前変更・並べ替えができません。
  • 「デフォルト」グループは削除できません。
  • 仮想グループを選択した状態でプリセットを追加・ペーストすると、実グループの先頭に保存されます。
  • 書き出したパッケージファイルを読み込むと、元の GUID とは異なる新しい ID が割り当てられます。
  • 単一プリセットを適用すると保存済みタブ構成(選択中タブを含む)が復元されます。複数プリセットの同時適用、または同一プリセットの重ね適用時は、選択中タブのエフェクトのみが結合され、タブ構成は 1 タブ(「新規」)に再構成されます。
  • 「まとめてエフェクト」内に同じ「まとめてエフェクト」を入れ子にすることは推奨しません。

免責事項

本プラグインは MIT ライセンスのもとで公開されています。

本ソフトウェアは「現状のまま」提供されており、明示・黙示を問わず、商品性、特定目的への適合性、および権利非侵害に関する保証を含む、いかなる種類の保証も行いません。

作者は、本プラグインの使用または使用不能に起因するいかなる損害についても、一切の責任を負いません。 ご利用は自己責任でお願いします。


ライセンス

MIT License

About

YMM4向けの映像エフェクト管理プラグイン。複数のエフェクトをグループ化してプリセット保存・呼び出し・共有が可能。Gitライクな履歴管理、8言語対応、CRC32検証付きアトミック書き込みによる安全な永続化を実装

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages