Vroma CutProblems and design

Keep the moment.
Keep its place in the journey.

Use GPX (a route file with observation times) and Marks (times and comments for moments to remember) to find the moments worth keeping in a long recording. A design for trimming without re-encoding, while preserving the link to capture time and the record.

Read the problems I encountered building my tool, my solutions and why they matter. When you want your own tool, use the design and AI instructions based on those problems.

A moment / still connected

A video without GPS
can still belong to a journey.

The design does not depend on location, altitude or speed being embedded in the video. Keep the capture-time mapping so GPX can provide the location.

This illustration explains the design. It is not a screenshot of a finished app or verified output.

A shorter clip. The same journey.DESIGN ILLUSTRATION
GPX + Mark09:24:18 ● Mark
The long recordingVideo + audio
Choose a range around the Mark
The moment to keep● 09:24:18

Even when the video has no GPS.Its capture time leads back to the same GPX and Mark.

A diagram of the intended experienceFictional time and scenery
Problems / Solutions

Problems I faced, and my solutions.

These are problems I encountered while building Cut/Edit. Each explains the situation, what I changed, why, and its limits. Choose relevant problems when building a tool for your own camera and media.

PC002

A copy date is mistaken for the date of filming

Copying a video to your Mac can give the file a creation date that differs from filming. You can also rename the file.

My solution
Cut prioritizes the date stored inside the video. If it is unavailable, you can choose to use the file creation date. Cut displays “Using file creation date” while that date is in use. It does not infer capture time from the filename or modification date. Without this choice, or if the file creation date is unavailable, the recording time remains unknown.
Reason
Showing the date source lets you check it while matching videos without internal dates to GPX and Marks.
Conditions and limits
Copying or exporting may change the file creation date. Check that it represents the start of filming before using it. Use clock adjustment if the camera clock or chosen date is offset.

Read this problem in the full list (Japanese)

PC016

A saved clock correction is applied to a different video

A correction measured in Vroma Studio can also be used in Cut and Edit, but another recording may have the same filename.

My solution
Studio saves the video’s name, byte size, uncorrected start date, duration and correction seconds in VromaMedia.json. Cut compares these with the current video and applies the correction only when one entry matches.
Reason
The correction needs to identify its original recording before another tool uses it to find the same moment.
Conditions and limits
Name and size must match exactly; start dates must differ by less than 1 ms and durations by at most 0.25 s. A rename prevents a match. Normal import adds no correction when unmatched; explicit import reports an error if no videos match.

Read this problem in the full list (Japanese)

PC018

A long recording is split into files

A scene at a camera’s file boundary is harder to inspect when each file is treated as a separate recording.

My solution
Cut groups files in one folder whose names follow VID_date_time_number, have the same date/time part, consecutive numbers and the same correction and date source. For example, VID_20260911_080012_025.mp4 can be grouped with the file ending in 026.
Reason
Adding the files’ durations gives one recording position for selecting a scene across their boundary.
Conditions and limits
This is a filename rule, not automatic camera-model detection. It does not verify gap-free filming from the internal timestamps. Different naming schemes, including GoPro names, are not grouped by this rule.

Read this problem in the full list (Japanese)

PC020

A Mark’s position is hard to find in Insta360 Studio

A Vroma Mark gives a timestamp, while editing an INSV file in Insta360 Studio requires a position inside a particular file.

My solution
Cut’s reference window reads start dates and durations and lists the matching file and position from its beginning. For grouped files it also lists the position from the start of the whole recording.
Reason
A Mark 30 seconds into the second file can be located using either the file position or the combined recording position.
Conditions and limits
The INSV reference accepts names such as VID_date_time_00_number. It does not prove recording continuity, trim INSV files or convert 360° footage.

Read this problem in the full list (Japanese)

PC023

A new export overwrites an earlier clip

Two clips beginning in the same second can produce the same date-based name. Another operation may also create that name.

My solution
Cut finalizes the output without replacing an existing file. On a name collision it tries vroma_01_timestamp.mp4, then 02 and so on. It stops at the start if another Cut export holds the same destination.
Reason
Keeping a new scene should preserve previously saved videos.
Conditions and limits
Serials are limited to 99999. Other save errors stop the operation. Edit instead asks for a different name rather than generating serials.

Read this problem in the full list (Japanese)

PC025

A trim cannot begin at every frame without re-encoding

Some compressed frames need earlier frames to play. Starting a separate file at one of those frames can make its beginning unplayable.

My solution
Cut checks for an IDR frame, a frame that can start playback independently. It extends the requested range to suitable boundaries that include the chosen scene.
Reason
The desired scene needs to remain inside a standalone, playable video.
Conditions and limits
A general keyframe flag alone is insufficient. Requested and actual saved ranges are kept separately when they differ.

Read this problem in the full list (Japanese)

PC027

Trimming loses some of the source audio

A camera video can contain several audio tracks. Saving only the first would discard the others.

My solution
Cut copies every supported AAC audio track. At a chapter seam, it checks the interval between adjacent compressed audio units and adjusts the stored duration of the preceding unit to that interval. This adjustment does not change the audio data or start timestamps, and its count is recorded with the export.
Reason
The supported audio in the original should accompany the saved footage.
Conditions and limits
At a chapter seam, the interval must be positive and no more than twice the preceding audio unit’s duration; otherwise export stops. The full list explains the time units and treatment of the final audio unit.

Read this problem in the full list (Japanese)

PC028

A file’s existence is mistaken for a correct export

A saved file does not establish that all selected compressed video and audio data were copied correctly.

My solution
Cut reopens the output and compares the copied data, timestamps and unit counts with the values recorded during export. It also checks that the first frame is independent and the output starts at time zero.
Reason
Writing the file should not silently change the selected data or its timing.
Conditions and limits
Normal verification compares compressed data and timing. Decoding every frame is a separate optional check.

Read this problem in the full list (Japanese)

PC032

Camera-added information disappears during trimming

Rebuilding an MP4 can lose camera-specific information that is outside its compressed video and audio.

My solution
Cut saves those original information regions separately under SourceMetadata, together with an identifier of the original’s full contents. For the video/audio data region, it saves only the region header.
Reason
Information not carried into the new MP4 can still be kept separately in its original form.
Conditions and limits
The archive excludes the actual compressed video and audio. It cannot by itself restore the original or guarantee reuse in the camera manufacturer’s software.

Read this problem in the full list (Japanese)

PC040

Saving a comment erases another device’s edit

Another device may change the CSV while a comment is open on your Mac.

My solution
Current Cut attempts automatic saving two seconds after the last input, comparing the version first read, your edits and the current file. It preserves external edits to comments you did not change. If both sides change the same Mark to different text, it stops the save.
Reason
Conflicting changes need review instead of silently choosing one side.
Conditions and limits
Deletion or multiple rows with the same timestamp can also prevent a unique match and require resolution.

Read this problem in the full list (Japanese)

PC051

The same moment needs comparison in another recording

Footage from two cameras can show the same event from different viewpoints.

My solution
Cut converts the main recording’s corrected capture time into a position in the comparison recording. The comparison follows playback, pause and seeking and is labelled as excluded from export.
Reason
Inspecting another view should not change the source being saved.
Conditions and limits
Missing dates or footage prevent comparison. Comparison audio starts muted; playback is not guaranteed frame-accurate synchronization.

Read this problem in the full list (Japanese)

PC054

Unsaved candidates are expected to return after restart

Saving a comment or an exported video does not also save every candidate range or Mark added during editing.

My solution
Current Cut holds those working candidates and added Marks in memory. Comment CSV saves, output videos and mapping files, and window-layout saves are separate operations.
Reason
The saved result needs to be distinguished from the current working state.
Conditions and limits
The current app has no project save/open interface. It does not offer restarting with the same adjusted candidates and locally added Marks.

Read this problem in the full list (Japanese)

All Cut problems, solutions and reasons (Japanese)

The intended experience

The experience
this design aims to build.

A design for a tool to keep shorter scenes when you want them.
Find candidates with GPX and Marks, then check the ranges to keep.

01

Start with a Mark, not hours of footage.

Use a recorded moment as a candidate. Review the footage and choose how much to keep around it.

02

Keep the moment without re-encoding.

A design that keeps compressed video and audio data. If playable boundaries widen the range, review the actual range that will be saved.

03

Trim a shorter clip again.

Keep a smaller moment from an existing clip. Verify that its reference to the original, GPX and Marks survives another trim.

Requirements / Reasons

The features to build.
The reasons behind them.

This is a design for building a personal tool with AI, not a feature list for a finished app. Core requirements cover the intended behavior and conditions that preserve records and their references. Convenience proposals are choices, not a requirement to implement everything. No implementation language or media-processing method is prescribed.

Core requirement

C01

Load media, GPX and Marks

Core requirement
Situation
Camera videos and Vroma route files may be stored in different folders for the same day.
Desired behavior
Let people select videos, GPX and the matching Mark file. Show loaded and missing records, preserving Mark times and comments. Identify unreadable formats or unknown dates, and keep existing ranges when more files are loaded.
Reason
This avoids moving everything into one folder or finding selected scenes again. Names alone can incorrectly associate footage from different days.
Result to check
Files in separate folders can be selected. Missing Marks, unknown dates and unreadable files are identifiable; existing selections survive another import.
C02

Apply clock correction once to the source time

Core requirement
Situation
A Mark and its scene can appear at different times because the camera and iPhone clocks may differ.
Desired behavior
Check the same visible event and set an offset. Calculate capture time as original start time plus offset plus original position. Compare in UTC, preserve fractional seconds, identify the affected sources and avoid correcting derived media twice.
Reason
Clock correction does not change video duration. Keeping the original time and offset separate lets an adjustment preserve the scene and its location reference.
Result to check
The Mark matches the visible moment. Reloading correction or derived media does not add the offset twice or apply it to another camera by guesswork.
C03

Review a Mark and choose the range to keep

Core requirement
Situation
The desired scene may include the scenery before a Mark or the conversation after it.
Desired behavior
Use its time and comment to find footage, then play, pause and seek to adjust the start and end. Distinguish the browsed Mark, source video, selected range and export candidates.
Reason
A Mark locates a moment; it does not define the finished range. Browsing another Mark should not discard an adjusted selection.
Result to check
A Mark leads to a scene whose boundaries can be reviewed. Adjustments survive browsing, and the source and export candidates are clear before saving.
C04

Trim without re-encoding and show actual boundaries

Core requirement
Situation
People want shorter footage without reducing quality or waiting through a long conversion.
Desired behavior
For supported media, keep compressed video and audio without re-encoding. If playable boundaries widen the range, show requested and saved ranges and the extra duration. Do not guarantee every frame boundary or silently re-encode unsupported media.
Reason
An exact boundary and copying compressed media cannot always be combined. Showing the difference lets people decide whether the extra footage is acceptable.
Result to check
Requested and saved boundaries can be compared. Saved video and audio play correctly; the derived capture time is based on the actual saved start.
C05

Handle long and split recordings

Core requirement
Situation
Hours of footage may be split into files, and a desired scene may cross a file boundary.
Desired behavior
Show the recording structure from start times, durations and order. Locate the file and position for a Mark, preserving each source segment across a boundary. Reveal missing parts, gaps and differing offsets instead of assuming continuity.
Reason
This avoids searching every file from its beginning and losing boundary scenes. Adding durations alone can falsely imply footage exists while recording was stopped.
Result to check
A scene can be reviewed across a split boundary, with each part linked to its source. Times without footage remain visible as gaps.
C06

Trim an existing clip again

Core requirement
Situation
After revisiting a saved scene, someone may want to make it shorter.
Desired behavior
Load derived media and adjust its range again. Carry its position mapping back to the original range and capture time, along with Marks, GPX references and existing offsets. Identify missing mapping information.
Reason
Repeated trimming must not lose where the scene came from. The beginning of a clip is not necessarily the beginning of the original recording.
Result to check
A second trim retains the same moment’s capture time, Mark and GPX reference. Its original range and newly saved range remain inspectable.
C07

Separate originals from working data

Core requirement
Situation
A tool built for an experiment must not put irreplaceable footage or route records at risk.
Desired behavior
Leave original video unchanged and save outputs, clock corrections and selected ranges separately. Reading alone must not rewrite GPX or Marks. If comment editing is adopted, show where entered changes are saved, track their source, stop overwrites on concurrent changes and retain copies of both versions. Keep originals and check tools with copies.
Reason
This keeps video reusable. If comment editing is adopted, distinguish reading from editing and retain entered changes safely.
Result to check
Loading, correction and trimming leave original video unchanged. Choose another name or destination for an existing output. If comment editing is adopted, entered changes update the intended source through the explained saving method, with both versions available when edits conflict.
C08

Keep video connected to GPX and Marks

Core requirement
Situation
People may want the location and comment for a scene even when the video has no embedded GPS.
Desired behavior
Preserve output and source identity, original ranges, requested and saved ranges, time mapping, correction state and GPX/Mark references. Read location and altitude from GPX at capture time; label speed as an estimate from track points. Do not invent gaps or replace unknown values with zero.
Reason
Requiring embedded GPS would limit usable cameras. Preserving references keeps the scene connected to its trip after trimming.
Result to check
Videos without GPS lead back to the same time and Mark. Missing records are unknown, and the speed method and units are inspectable.
C09

Inspect results and understand failures

Core requirement
Situation
If only some scenes are saved, it can be unclear what needs to be retried.
Desired behavior
Review sources, candidate count, actual ranges and destinations before saving. Report success, failure or cancellation per candidate. Distinguish unsupported media, access, space and missing-file problems. Keep ranges available for reselection or retry; never present partial output as complete.
Reason
A single success message cannot establish that every scene was saved. Keeping adjustments avoids repeating the selection after a failure.
Result to check
Saved video and audio can be opened and checked. Failures and cancellations are distinct from success, and the same range can be retried.

Convenience proposal

CX01

Find candidates by date and comment

Convenience proposal
Situation
Many days of footage or Marks make a scene difficult to locate in a list.
Desired behavior
Date filters, Mark-comment search and a media summary could help. Browsing search results should not change the video or range being edited.
Reason
These narrow the search before opening every video while protecting current work.
Result to check
Filtering and clearing a comment search retain the adjusted range and source selection.
CX02

Suggest a provisional range around a Mark

Convenience proposal
Situation
Setting both endpoints from scratch for every Mark is repetitive on a day with many scenes.
Desired behavior
An adjustable provisional range before and after a Mark could help. Let people change its duration and show available bounds near a recording edge. Do not overwrite manually adjusted candidates.
Reason
This makes candidate creation faster while leaving scene-by-scene review in control. A suggested range is not a final choice.
Result to check
Padding can be changed without selecting nonexistent footage or losing manual adjustments.
CX03

Compare the same moment from another camera

Convenience proposal
Situation
The same scene filmed by multiple cameras can call for a side-by-side choice.
Desired behavior
A reference view synchronized by corrected capture time could help. Separate the trimming source from the comparison view. Opening a reference should not change export targets; show when no footage exists.
Reason
Viewing another angle and selecting the media to save are different actions.
Result to check
Switching reference videos retains the main source and range; output comes from the specified source.
CX04

Process multiple candidates together

Convenience proposal
Situation
Choosing a destination and starting a save for every scene becomes repetitive.
Desired behavior
A confirmed queue with per-candidate cancellation could help. Do not mix later edits into already confirmed jobs; retain each candidate’s result.
Reason
Batching should still make it clear what was saved or cancelled.
Result to check
Cancelling one job leaves the other results and original range adjustments inspectable.
Connect records and footage

Find the same moment after a trim.

Connecting footage to a route and Marks requires keeping the meaning of each time and the source it refers to. Comparing dates in UTC and storing seconds as integer pairs are general methods. The Vroma-specific formats below matter when you choose to use its files.

A route and a remembered moment

GPX is a standard route format. Vroma uses GPX 1.1, defined in the official Topografix specification ↗. Connecting video needs points with observation times as well as coordinates.

A Mark has a time and comment. Vroma pairs names in one folder, such as trip.gpx and trip.marks.csv. Video can stay elsewhere.

Correct the camera’s clock

A moment’s time is the camera’s recorded start time plus a clock correction and the position within the recording. A camera two seconds slow needs +2 seconds. Changing the display timezone does not move the absolute moment.

Do not apply that correction again to an already corrected trimmed clip. Show unknown start times rather than deriving capture dates from a name or copy date.

Protect original video and deliberate record edits

Trimming and film editing leave original video unchanged and save used ranges and added displays separately. Keep which original position corresponds to a derived clip’s zero so the same Mark and place remain reachable.

Adopt comment editing only if your tool needs it. If adopted, track each Mark’s source and save changes the person enters. If another device changed the same comment, preserve both and ask for a conflict decision rather than overwriting it. Reading alone must not rewrite records. Saving can use a button or happen automatically, with that behavior explained to the person.

Formats for a tool that uses Vroma files

Mark CSV: pass a moment and its comment

UTF-8, no header, three columns: UTC ISO 8601 time, local ISO 8601 time with an offset, and comment. Keep fractional seconds and use CSV quoting for commas, quotes and line breaks. Compare the first column. The second is another display of the same moment, not another clock correction.

The CSV has no ID column. Importers create identifiers: Cut uses parsed seconds and comment; Edit uses the first-column timestamp string and comment. Their IDs are not always identical. IDs then appear in Project data or exported mapping. Retain source, time and comment to match moments, and preserve IDs supplied by an export.

VromaMedia.json: pass a clock correction from Studio

Studio saves the correction after matching a video moment to a Mark. Cut/Edit read and use this file. The usual location is the video folder. Load it explicitly if it is stored elsewhere.

schemaVersion: 1 contains entries with the target source, correction seconds seconds, and optional display name cameraName. Source fields are the last filename filename, byte count size, uncorrected start cameraStart, and duration in seconds duration. cameraStart uses Unix seconds since 1970-01-01 UTC.

Names and sizes must match; start times must differ by less than 1ms and durations by at most 0.25 seconds. Renaming loses this match. This neither measures the offset automatically nor compares all video content. Studio has a path that falls back to file creation time. Cut can also use the file creation date when you choose it. Different date sources or file dates changed during copying can produce different start times across apps. Invalid formats and ambiguous matches produce errors.

ExportManifest.json: retain positions through a trim

For compatibility with existing Cut output, keep MP4 files and this mapping file together. Cut writes schemaVersion: 1; Edit reads 1 and 2. Within clips, outputFile is the output name and creationDate is the corrected capture time of the output’s first actual frame. It need not equal the original start or requested start.

requested is the wanted range; actual is the saved range extended to playable boundaries. Both refer to positions in the original or grouped recording before trimming, not to output zero. Divide integer value by timescale to obtain seconds. Edit uses the difference between ranges to find the wanted portion within the output.

Numeric dates in this mapping use seconds since 2001-01-01 UTC, unlike the Unix epoch in VromaMedia.json. Edit also has a path for ISO 8601 strings. A display timezone change must not add another offset to the absolute time.

Optional marks include identifier id, UTC ISO 8601 date, comment, and sourceTime in seconds within the output video. When absent, use the original GPX and Mark CSV. Your own tool need not adopt this format unless you want that compatibility.

stationary: represent a stop without inventing observations

Vroma’s extension attaches an OS-confirmed finite stop interval to an existing observed point. It does not add new location observations for times without measurements. This differs from estimating a stop because two ordinary GPX points are close.

Put one stationary element in the extensions directly inside the observed trkpt, using namespace https://www.tsuyukimakoto.com/xmlns/vroma/gpx/1. Start from and end until are attributes of that element. The current writer uses UTC ISO 8601 timestamps with fractional seconds, for example <vroma:stationary from="2026-10-07T01:00:00.000Z" until="2026-10-07T01:02:00.000Z" />, with prefix vroma declared for that namespace. Require observation time ≤ from < until, stop no later than the next observation, and exclude the end instant. Match namespace and element name rather than prefix spelling. Invalid or duplicate declarations do not establish a stop. Do not write estimates back as observed GPX points.

When you want your own tool

Give the material to your AI.

Give AI this page’s URL to read the problems, solutions, reasons and design conditions. Add your goal and how it can access copies of your records. If it cannot retrieve the URL, copy the page material instead.

The instructions below start the conversation. If the URL is unreadable, also use “Copy problems and design material”.

Vroma Cut / AI instructions
Build a personal tool for my camera, media and working environment, using these problems, solutions, reasons and design conditions as references.
https://www.tsuyukimakoto.com/products/vroma/en/cut/
If you cannot retrieve the URL, use the text I provide. The author’s solutions are implementation examples; do not require the same language or processing method. Explain the methods you choose and why.
Tool and purpose: [specify]
Camera, media formats, OS and working environment: [specify]
Marks or ranges to keep: [specify]
Locations of record copies and how you can read them: [specify]
Compatibility with existing Cut/Edit output: [only if needed; do not assume it]
First derive necessary conditions from the problems and identify unknowns without guessing. Proceed with design, implementation and checks using small copies.
Leave original video unchanged. Adopt comment editing only if needed; if adopted, track sources when saving changes people enter and protect concurrent changes from silent overwrites. UTC comparison is general time handling; use Vroma-specific formats only for chosen integrations.
Check the same Mark and moment, clock correction, gaps, requested and actual saved ranges and mapping after another trim. Report implemented behavior, unsupported conditions and checked results separately.

Read all Cut problems and solutions in the full catalog (Japanese). The material copy covers this page. Provide the catalog URL or its text too when using the full list.

Check your own records

Check the tool you built
with copies of your own records.

Keep originals and start with copies of a small range.
Check what works and what is still unsupported.

What to checkWhat to look for in your records
The same Mark, the same momentCheck which moment in your original video a Mark refers to. The same capture time and GPX reference must survive clock correction and another trim.
No GPS in the videoUse capture time to refer to the GPX you brought back even when your own video has no location or altitude. Show unreadable times instead of inventing them.
Originals and saved rangesKeep originals and check only with copies. Distinguish requested and saved ranges, then play back video and audio. Treat GPX gaps and out-of-range times as unknown.
Reopen the trimmed videoReopen saved media and mapping information; check that the same Mark refers to the same capture time. This is separate from saving and resuming work candidates.
Saving and concurrent changes if comment editing is adoptedCheck this if comment editing is adopted. Reading alone leaves records unchanged. Entered changes update the intended source through the explained saving method. Conflicting edits to the same Mark stop the overwrite and keep both versions available.
Choose by purpose

Choose what you want to do.

Use Chrova to revisit your photos and videos. Explore the Edit design when you want to make a film.