iTranslated by AI
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
},
}
-
Sorry for the lack of vocabulary. ↩︎
Discussion