Combined Effect for YMM4 — User Manual

Version: 2.2.0  /  Supported OS: Windows 10 / 11 (64bit)  /  Runtime: .NET 10.0

1. Overview

"Combined Effect" is a video effect plugin for YukkuriMovieMaker4 (YMM4). It allows you to store multiple video effects inside a single "Combined Effect" item, and manage them through grouping, preset saving, and recall.

Key features:

  • Apply multiple effects in sequence within a single item
  • Save, recall, and share named presets
  • Manage multiple effect sets with tabs and switch them instantly (add/remove/rename supported)
  • Organize presets with three virtual group types: All, Recent, and Favorites
  • Git-like snapshot history and branch management
  • Atomic writes with CRC32 verification and SHA-256 multi-redundant persistence
  • Export and import preset package files (.ceprstpkg)
  • Clipboard-based copy, cut, and paste
  • Multi-axis search with regular expression support
  • 8-language UI (Japanese, English, Simplified Chinese, Traditional Chinese, Korean, Spanish, Arabic, Indonesian)
  • Responsive UI that automatically switches to a mobile layout below 400px width

The timeline label displays the current effect count and applied preset name, e.g. "Combined Effect Active: 3 [PresetName]", making it easy to identify contents at a glance.

AviUtl output (.exo) is not supported.


2. System Requirements

ItemRequirement
OSWindows 10 / 11 (64bit)
YukkuriMovieMaker4Latest version recommended
Runtime.NET 10.0
GPUDirect2D compatible GPU

3. Installation

  1. Download the latest .ymme file from the Releases page on GitHub.
  2. Make sure YMM4 is not running.
  3. Double-click the downloaded .ymme file to install.
  4. Launch YMM4 and select an item on the timeline.
  5. Select "Combined Effect" from the Add Video Effect menu.

After installation, the preset management panel and effect list will appear in the properties panel.


4. Getting Started

  1. Select a video or image item on the timeline.
  2. Add "Combined Effect" from the Add Video Effect menu.
  3. Add and configure effects in the "Active Effects" section at the bottom of the properties panel.
  4. Click the "+ (Add)" button in the preset management panel, enter a name, and save the preset.
  5. To apply the same configuration to another item, select the preset and click the "✓ (Apply)" button.

5. UI Layout

The properties panel displays the following sections from top to bottom.

5-1. Preset Management Panel (PresetManagerControl)

This is the main area for managing presets, divided into two columns.

AreaDescription
Left column (Group list)Displays user-defined groups and virtual groups (All, Recent, Favorites). Click to select, double-click to rename, drag and drop to reorder (virtual groups cannot be moved). Use the + button to add groups and the - button to remove them.
Right column top (Search bar)Filter presets by keyword. Click the icon on the right to change the search target.
Right column center (Preset list)Lists presets in the selected group. Each row shows a star (favorite toggle), name, effect count, and an info icon (tooltip shows effect list). Multiple selection (Ctrl+click, Shift+click) is supported.
Right column bottom (Action buttons)From left: Add (+), Remove (-), Update (↺), Apply (✓). Buttons expand their labels on mouse hover.
Bottom resize handleDrag to change the panel height.

5-2. Grid Splitter

Drag the border between the two columns to adjust the group column width. The value is restored on next launch.

5-3. Mobile Layout (below 400px width)

When the control width drops below 400px, the group list is hidden and a hamburger menu button (≡) appears. Clicking it opens the group list as a popup.

5-4. Effect Tab Manager (EffectTabManagerControl)

A tab bar is shown above "Active Effects". Each tab keeps an independent effect configuration, and switching tabs immediately reflects the selected tab.

  • Right + button: "Add Tab"
  • x button on each tab: "Remove Tab" (the first tab "New" cannot be removed)
  • Double-click a tab name: rename (Enter or focus change to commit, Esc to cancel)
  • Default tab names: first is "New", then "Tab 2", "Tab 3", ...

5-5. Active Effects (VideoEffectSelector)

The YMM4 standard video effect selector shows effects for the currently selected tab. Add, remove, reorder, and enable/disable operations are saved to that selected tab.


6. Group Management

Presets can be organized into groups. There are "real groups" and "virtual groups".

6-1. Adding a Group

  1. Click the "+" button at the bottom of the group list.
  2. Enter a group name in the dialog and click "OK".
  3. The new group is added to the list and automatically selected.

6-2. Removing a Group

  1. Select the group you want to remove from the group list.
  2. Click the "-" button at the bottom of the group list.
  3. Click "OK" in the confirmation dialog to delete the group and all its presets.

Note: The "Default" group and virtual groups (All, Recent, Favorites) cannot be deleted.

6-3. Renaming a Group

Use one of the following methods:

  • Double-click the group to open a dialog and enter a new name.
  • Right-click the group and select "Rename" from the context menu.

Note: Virtual groups cannot be renamed.

6-4. Reordering Groups

Drag and drop real groups to change their order. Virtual groups are always fixed at the top of the list and cannot be moved.


7. Preset Management

7-1. Adding a Preset (Saving)

  1. Set up the effects you want to save in "Active Effects".
  2. Select the target group in the group list (if a virtual group is selected, it will be saved to the first real group).
  3. Click the "+ (Add)" button at the bottom of the right column.
  4. Enter a preset name in the dialog and click "OK".
  5. The current effect configuration is saved as a preset and added to the list.

7-2. Removing a Preset

  1. Select the preset(s) to remove (Ctrl+click or Shift+click for multiple).
  2. Click the "- (Remove)" button or right-click and select "Remove".
  3. Click "OK" in the confirmation dialog to delete.

Selecting multiple presets and deleting will remove all selected presets at once.

7-3. Renaming a Preset

  • Double-click the preset to open a dialog and enter a new name.
  • Right-click and select "Rename".

7-4. Clearing a Preset (Emptying Contents)

Removes all effects stored in a preset, leaving the preset itself empty.

  1. Right-click the target preset.
  2. Select "Empty Preset" from the context menu.
  3. Click "OK" in the confirmation dialog.

7-5. Reordering Presets

Drag and drop presets within the list to change their order. Reordering is not available while viewing virtual groups (All, Favorites, Recent).


8. Virtual Groups

Virtual groups are special groups that always appear at the top of the group list. They cannot be deleted, renamed, or reordered.

Group NameContentsSort Order
AllDisplays all presets from all real groups.Alphabetical (ascending)
RecentShows the last 10 recently applied presets.Most recently applied first
FavoritesDisplays all star-marked presets.Alphabetical (ascending)

When a virtual group is selected and you add or paste a preset, it is saved to the first real group.


9. Applying Presets

9-1. Applying a Single Preset

  1. Select the preset you want to apply from the list.
  2. Click the "✓ (Apply)" button or right-click and select "Apply".
  3. The preset's effect configuration is loaded into the item on the timeline.

Applying the same preset again: If you try to apply a preset whose content is identical to the current effects, a confirmation dialog appears. Click "OK" to append (stack) the effects on top of the existing ones. Click "Cancel" to abort.

9-2. Applying Multiple Presets at Once

  1. Select multiple presets using Ctrl+click or Shift+click.
  2. Click the "✓ (Apply)" button.
  3. The effects from all selected presets are merged in order and applied.

No duplicate confirmation dialog is shown for multi-selection. Also, when 2 or more presets are selected, the "Recent" list and preset JSON are not updated.

9-3. Label Update After Applying

After applying a single preset, the timeline label is updated to show "Combined Effect Active: 3 [PresetName]". The preset name remains displayed even if effects are manually changed afterwards.


10. Updating Presets

Overwrites the selected preset with the current effect configuration.

  1. Select the preset you want to update from the list.
  2. Modify the effects in "Active Effects".
  3. Confirm that the "↺ (Update)" button is active (only enabled when there are changes).
  4. Click "↺ (Update)" or right-click and select "Update".

When the Update button becomes active: The button is enabled only when the selected preset is the same as the most recently applied preset, and the current effect configuration differs from what is saved in the preset. If an effect parameter is changed, the button state is automatically evaluated after a 50ms debounce.


Enter a keyword in the search box to filter presets in real time.

11-1. Switching Search Mode

Click the filter icon at the right end of the search box to open a menu and switch the search target.

Search ModeTarget
Preset Name (default)The name of the preset
Effect NameLabels of all effects contained in the preset (newline-separated list)
Effect CountNumber of effects in the preset. Numeric input prioritizes exact match; falls back to partial string match if no exact match is found.
Raw Data (JSON)Raw JSON of the serialized effect configuration. Search by effect type name or parameter values.
AllDisplays presets matching the name, effect names, or raw JSON

11-2. Regular Expression Search

Regular expressions (case-insensitive) can be used in all search modes.

  • Example: ^blur → Search for presets whose name starts with "blur"
  • Example: color|shadow → Search for presets whose name contains "color" or "shadow"
  • Example: [0-9]+ → Search for presets whose name contains a number

If an invalid regex pattern is entered, the search falls back to case-insensitive partial string matching.


12. Favorites

Mark frequently used presets as favorites to access them quickly from the "Favorites" virtual group.

12-1. Marking / Unmarking Favorites

Click the star button at the left end of each preset row.

  • A yellow (gold) star indicates the preset is marked as a favorite.
  • A gray star indicates it is not a favorite.

Changes are saved to the preset file immediately.

12-2. Viewing the Favorites Group

Select "Favorites" in the group list to display all starred presets in alphabetical order. If you unmark a preset while viewing the Favorites group, it disappears from the list immediately.


13. Copy, Cut & Paste

Use the clipboard to copy, cut, and paste presets. Data is written to the clipboard in the same JSON format as preset packages, so you can also inspect and edit it in a text editor.

13-1. Copy

  1. Select the preset(s) to copy (multiple selection supported).
  2. Right-click and select "Copy".

The original presets remain unchanged.

13-2. Cut

  1. Select the preset(s) to move (multiple selection supported).
  2. Right-click and select "Cut".

The presets are copied to the clipboard and the originals are deleted simultaneously. No confirmation dialog is shown.

13-3. Paste

  1. Select the destination group in the group list.
  2. Right-click on a blank area of the preset list or any preset and select "Paste".

This is only available when the clipboard contains valid preset package JSON. Pasted presets are assigned new GUIDs (different from the original IDs). If a virtual group is selected, the presets are added to the first real group.

13-4. Clipboard Data Format

The data written to the clipboard uses the following JSON format:

{
  "FormatId": "CombinedEffect.PresetExchange",
  "Version": 1,
  "ExportedAtUtc": "2025-01-01T00:00:00+00:00",
  "Presets": [
    {
      "Id": "...",
      "Name": "Preset Name",
      "IsFavorite": false,
      "SerializedTabs": "...",
      "SerializedEffects": "..."
    }
  ]
}

14. Export & Import Presets

Presets can be exported and imported as package files (extension .ceprstpkg), enabling sharing between environments and users.

14-1. Export

  1. Select the preset(s) to export (Ctrl+click or Shift+click for multiple).
  2. Right-click and select "Export".
  3. A file save dialog opens. Specify a destination and file name, then save.
  • Single preset: The preset name is used as the default file name (characters not allowed in file names are replaced with _).
  • Multiple presets: The default bundle name "CombinedEffect_Presets" is used.

14-2. Import

  1. Select the group to which you want to add imported presets.
  2. Right-click on a blank area of the preset list and select "Import".
  3. A file selection dialog opens. Select a .ceprstpkg file (multiple files can be selected at once).
  4. The imported presets are added to the current group.

Imported presets are assigned new GUIDs, so they will not conflict with existing presets.

14-3. Version Compatibility

Package files include a format version number. The current version is 1. An error message is displayed if you try to import a package with a version higher than what is supported.


15. Snapshot History & Branch Management

Each preset has a Git-like history management window. You can save effect configuration changes as snapshots and manage them with branches.

15-1. Opening the History Window

  1. Right-click the preset you want to manage.
  2. Select "History Management" from the context menu.
  3. The history management window opens (one window per preset).

15-2. History Window Layout

PanelDescription
Left (Branch list)Lists all branches for the preset. Click to select a branch; its snapshot history is shown in the center. Enter a branch name in the text box at the bottom and click "Create New Branch" to add a new branch.
Center (Snapshot list)Lists snapshots from the HEAD of the selected branch backwards. Each row shows a commit icon (filled for current HEAD), tags, message, date/time, diff summary, and ID. Right-click for a context menu. Enter a message at the bottom and click "Save New Snapshot" to save the current configuration. Use the "Revert to This" button at the bottom to roll back to the selected snapshot.
Right (Diff view)Shows the diff between the selected snapshot and the current effect configuration. Additions are green, deletions are red, and modifications are yellow. Effect count changes and before/after property values are displayed in Consolas font.

15-3. Creating a Snapshot

  1. Open the history management window.
  2. Enter a message describing the changes in the text box at the bottom of the center panel.
  3. Click "Save New Snapshot".
  4. The current preset's effect configuration is saved as a snapshot and the HEAD of the selected branch is updated.

15-4. Reverting to a Snapshot

  1. Select the snapshot you want to revert to.
  2. Click the "Revert to This" button.
  3. The preset and the Combined Effect item on the timeline are restored to the state of the selected snapshot.

15-5. Creating a Branch

  1. Enter a new branch name in the text box at the bottom of the left panel.
  2. Click "Create New Branch".
  3. A new branch is created starting from the currently selected snapshot (or the current branch HEAD).

15-6. Context Menu Operations

Right-clicking a snapshot opens a context menu.

OperationDescription
Merge to CurrentAppends the selected snapshot's effects to the end of the current effects.
Keep Changes (Soft)Moves the HEAD of the selected branch to the chosen snapshot without changing the timeline effects.
Discard Changes (Hard)Performs Keep Changes (Soft) and Revert simultaneously.
Manage TagsOpens the tag management window for the snapshot.

15-7. Reading the Diff Summary

A diff summary is shown in the "Changes" column of the snapshot list.

  • "Added (+N)": The snapshot has N more effects than the current state
  • "Removed (N)": The snapshot has N fewer effects than the current state
  • "Modified": Same effect count, but parameters have changed
  • (empty): Identical to the current effect configuration

15-8. History Data Storage Location

History data is saved in the History/ folder under the plugin directory. A subfolder is created per preset; branch info is stored as branches.json and each snapshot as {ID}.json.


16. Tag Management

You can attach multiple tags to snapshots for organization. Tags are displayed in green in the snapshot list.

16-1. Adding a Tag

  1. Right-click the snapshot you want to tag.
  2. Select "Manage Tags" from the context menu.
  3. The tag management window opens.
  4. Enter a tag name in the text box at the top and click "Add".

Duplicate tag names are not allowed.

16-2. Removing a Tag

  1. Open the tag management window.
  2. Click the "Remove" button next to the tag you want to delete.

17. Bulk Delete Effects

You can remove all disabled (unchecked) effects from the Combined Effect item at once.

  1. Right-click on a blank area of the preset list.
  2. Select "Clear" → "Remove Unselected Effects" from the context menu.
  3. Click "OK" in the confirmation dialog.
  4. All currently disabled effects are removed.

Enabled effects are not affected. If there are no disabled effects, nothing happens.


18. Responsive UI & Layout

18-1. Adjusting Panel Height

Drag the resize handle (double line) at the bottom of the preset management panel to change its height. The minimum height is 200px. The setting is saved when you release the drag and is restored on next launch.

18-2. Adjusting Group Column Width

Drag the grid splitter (border between the group list and preset list) left or right to adjust the group column width. The minimum width is 120px and the maximum is 400px. The setting is saved when dragging is complete.

18-3. Mobile Layout

When the control width drops below 400px, the following changes occur:

  • The group list panel is hidden.
  • The grid splitter is hidden.
  • A hamburger menu button (≡) appears to the left of the search bar.
  • Clicking it opens the group list as a popup. Selecting a group closes the popup.

When the control width returns to 400px or more, the layout automatically switches back to desktop mode.


19. Data Storage & Safe Persistence

All preset data, group configurations, and history data are saved as JSON files. The following mechanisms for redundancy and integrity verification prevent data loss from a single failure.

19-1. Atomic Write

File writes follow these steps:

  1. Write to a temporary file (.tmp).
  2. Use File.Replace to swap the temp file with the main file, and move the old file to backup (.bak).
  3. Even if the application crashes mid-write, either the main or backup file is always in a valid state.

19-2. CRC32 Verification

A CRC32 checksum is calculated and appended to the file on write. On read, the checksum is verified; if it does not match, the backup file is used for recovery.

19-3. SHA-256 Multi-Redundant Storage

Preset data and group registry are saved in two locations:

  • Main storage: The presets/ folder under the plugin directory
  • Backup storage: The user/backup/CombinedEffect/ folder

On startup, both locations are compared against the SHA-256 hash and timestamp stored in CombinedEffectSettings. If an inconsistency is detected, the correct data is used to automatically repair (heal) the other.

19-4. Debounced Writes

Consecutive change operations are debounced for 300ms (100ms for deletions) and written together, reducing I/O load.

19-5. Logging

Operation logs and error logs are saved under user/log/CombinedEffect/.

  • A new log file is created when the current file exceeds 512 KB.
  • Log files older than 31 days are automatically deleted (checked every hour).

20. Migration from Older Versions

If an older version data file exists at the path below, it is automatically migrated on first launch.

%AppData%\YukkuriMovieMaker4\user\plugins\CombinedEffect\presets.json

After migration, the old file is renamed to presets.json.migrated. The old file is not deleted if migration fails.

Migration covers:

  • Group list in the old format (groups equivalent to the virtual "All" and "Favorites" groups are excluded)
  • Presets belonging to each group (name, favorite status, effect configuration)

21. File & Folder Structure

Path (relative to plugin directory)Contents
presets/Main preset data storage folder
presets/groups.jsonGroup configuration (group names and preset ID lists)
presets/{GUID}.jsonIndividual preset data (name, favorite, effect config JSON)
presets/recent_ids.jsonList of recently used preset IDs (max 10)
presets/UISettings.jsonUI settings (panel height, group column width)
History/Snapshot history data storage folder
History/{PresetGUID}/branches.jsonBranch list for that preset
History/{PresetGUID}/{SnapshotGUID}.jsonIndividual snapshot data
user/backup/CombinedEffect/Backup storage (relative to YMM4 install directory)
user/log/CombinedEffect/Log file storage folder (relative to YMM4 install directory)

Preset data is stored in both main storage and backup storage. If one is lost, the other can be used for recovery. If both are deleted, presets cannot be recovered.


22. Multilingual Support

The entire UI automatically switches based on the YMM4 language setting. No additional configuration is needed.

Language CodeLanguage
ja-jpJapanese
en-usEnglish
zh-cnSimplified Chinese
zh-twTraditional Chinese
ko-krKorean
es-esSpanish
ar-saArabic
id-idIndonesian

23. Parameter Reference

ParameterTypeDefaultAnimatableDescription
Active Effects (Effects)ImmutableList<IVideoEffect>(empty)NoThe list of video effects to manage. Use the YMM4 standard effect selector to add, remove, reorder, and enable/disable effects. They are processed as a pipeline from top to bottom. Disabled effects are skipped.
EffectTabsJsonString (JSON)(empty string)NoInternal property that stores effect-tab state (selected tab ID, tab names, and per-tab effect JSON). It is updated automatically when tabs are added, removed, renamed, or switched.
SelectedPresetJsonString (JSON)(empty string)NoInternal property holding information about the currently applied preset. Set automatically when a preset is applied. Direct editing is not recommended. Used to display the preset name in the timeline label.
PresetManagerVisiblebooltrueNoInternal flag controlling the visibility of the preset management panel. Excluded from JSON serialization ([JsonIgnore]).

Label Display Format

StateFormatExample
No preset applied{Effect Name} Active: {N}Combined Effect Active: 3
Preset applied{Effect Name} Active: {N} [{Preset Name}]Combined Effect Active: 3 [Effect Set A]

24. Quick Reference

Tab Operations

OperationMethodNotes
Add TabRight + button on the tab barCreates a new tab with an empty effect configuration
Remove Tabx button on a tabThe first tab "New" cannot be removed
Rename tabDouble-click a tab to editEnter/focus change to commit, Esc to cancel
Switch tabClick a tabThe selected tab's effects are reflected in "Active Effects"

Group Operations

OperationMethodRestriction
Add group"+" button at bottom of group listNone
Remove group"-" button at bottom of group listDefault and virtual groups cannot be removed
Rename groupDouble-click, or right-click → "Rename"Virtual groups cannot be renamed
Reorder groupsDrag and dropVirtual groups cannot be moved

Preset Operations

OperationMethodNotes
Add preset"+ (Add)" buttonSaved to first real group when a virtual group is selected
Remove preset"- (Remove)" button, or right-click → "Remove"Confirmation dialog shown. Multiple selection supported.
Rename presetDouble-click, or right-click → "Rename"None
Reorder presetsDrag and dropNot available when viewing virtual groups
Apply preset"✓ (Apply)" button, or right-click → "Apply"Confirmation dialog for identical content
Update preset"↺ (Update)" button, or right-click → "Update"Only enabled when effects have changed
Empty presetRight-click → "Empty Preset"Confirmation dialog shown. Only available when preset has 1+ effects.
Toggle favoriteClick the star buttonNone
CopyRight-click → "Copy"Multiple selection supported
CutRight-click → "Cut"No confirmation dialog. Multiple selection supported.
PasteRight-click → "Paste"Requires valid JSON in clipboard
ExportRight-click → "Export"Multiple selection. .ceprstpkg format.
ImportRight-click blank area → "Import"Multiple files can be selected
Remove unselected effectsRight-click blank → "Clear" → "Remove Unselected Effects"Confirmation dialog shown
Open historyRight-click → "History Management"One window per preset

History Operations

OperationMethodDescription
Save snapshotEnter message → "Save New Snapshot" buttonDisabled if message is empty
Revert to snapshotSelect snapshot → "Revert to This" buttonApplied to both preset and timeline
Create branchEnter branch name → "Create New Branch" buttonDisabled if branch name is empty
MergeRight-click snapshot → "Merge to Current"Appends effects to current end
Keep Changes (Soft Reset)Right-click snapshot → "Keep Changes (Soft)"Moves HEAD only, no effect changes
Discard Changes (Hard Reset)Right-click snapshot → "Discard Changes (Hard)"Soft Reset + Revert simultaneously
Manage tagsRight-click snapshot → "Manage Tags"Opens tag management window

25. Notes & Cautions

  • AviUtl format (.exo) output is not supported.
  • Nesting a "Combined Effect" inside another "Combined Effect" is not recommended.
  • The "All", "Favorites", and "Recent" virtual groups cannot be deleted, renamed, or reordered.
  • The "Default" group cannot be deleted.
  • Adding or pasting a preset while a virtual group is selected saves it to the first real group.
  • Importing a package file assigns new IDs that differ from the original GUIDs. Therefore, imported presets do not inherit snapshot history.
  • The Cut operation deletes presets without a confirmation dialog. This action cannot be undone immediately, so use it with care.
  • Applying a single preset restores the saved tab state (including the selected tab). Applying multiple presets at once, or re-applying the same preset in append mode, merges only selected-tab effects and rebuilds tabs into a single "New" tab.
  • Preset data is stored in both main storage and backup storage. Deleting one folder may still allow recovery, but deleting both will result in permanent data loss.
  • History data is stored in the History/ folder. Deleting this folder will erase all history.
  • Snapshot history grows without limit. If there are too many unnecessary snapshots, you can manually delete unwanted .json files in the History/{PresetGUID}/ folder (do not delete branches.json).
  • Only effects supported by the YMM4 plugin system are saved as part of a preset's effect configuration. Unsupported effects may be skipped when loading.
  • Due to debounced writes, there is a delay of up to 300ms between a change operation and the actual file write. If YMM4 is force-quit immediately, the last operation may not be saved.

26. Disclaimer & License

This plugin is released under the MIT License.

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.

The author shall not be liable for any damages arising from the use or inability to use this plugin. Use at your own risk.

Author: routersys  /  License: MIT License  /  Repository: https://github.com/routersys/YMM4-CombinedEffect


End of document.