iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🗃️

Inside the YMMP File Format

に公開

To be updated periodically
Also, if you have any questions or suggestions, please write them in the comments section.

Basic Structure

_{json}
The content inside this JSON is the actual project data; the leading underscore is a mystery.

Top-level Items

FilePath

The location where the .ymmp file is stored.

SelectedTimelineIndex

Likely the index of the currently selected timeline.
Starts from 1.

Timelines

Represented as an array, where the first element corresponds to index 1 mentioned above.
Multiple timelines can exist.
They likely exist as "scenes" within YMM4.

Characters

I believe the characters being used are stored here in an array.

CollapsedGroups

Unknown

LayoutXml

Holds YMM4 layout settings in XML format.
This is likely why layout settings revert when loading old projects.

ToolStates

A place that maintains the state of the tool plugins being used.

Structure inside Timelines

ID: UUIDv4 format
Name: Name
VideoInfo: FPS, audio frequency, video width and height

VerticalLine

Unknown

      "VerticalLine": {
        "IsEnabled": false,
        "StartFrame": 0,
        "LineType": "BPM",
        "Line": {
          "$type": "YukkuriMovieMaker.Project.VerticalBPMLine, YukkuriMovieMaker.Plugin",
          "BPM": 100.0
        },
        "Group": 4
      }

Items

Packed with arrays of all items.
Since the contents vary depending on the item type, I will list the ones that seem common.
Also, this is just a guess, but audio and video (image, text) data likely consist of similar data despite having different names.
$type
A string in the format of ItemType, YukkuriMovieMaker.
It probably represents something like ClassLocation, ItemAuthor.[1]
Group
Unknown
Frame
Starting frame position
Layer
Layer number
KeyFrames
Unknown
Length
I assume this is the length in frames.
PlaybackRate
Unknown
ContentOffset
Unknown
Remark
Probably refers to comments, but unknown.
IsLocked
Whether it is locked; boolean value.
IsHidden
Whether it is hidden; boolean value.

Structure inside Characters

Structure inside CollapsedGroups

Structure inside ToolStates

The interior has a JSON structure, where the name of the called ViewModel is used as the key.
The values consist of Title and SavedState, both of which appear to be saved in string format.

  "ToolStates": {
    "Preview": { "Title": "", "SavedState": null },
    "ItemEditor": { "Title": "", "SavedState": null },
    "YMM4PerfMonitorPlugin.ViewModel.PerfMonitorViewModel": {
      "Title": "",
      "SavedState": null
    },
  }
脚注
  1. Sorry for the lack of vocabulary. ↩︎

Discussion