Satin Studio Manual

EXP

Status

FieldValue
Extension(s).exp
Common ecosystemMelco and some Bernina workflows
Format familyExpanded stitch stream
Satin Studio statusSupported
Open / importYes
ExportYes
ConfidenceHigh for base Melco-style stream; sidecars vary.

What it is

EXP is a compact expanded stitch format associated with Melco. The base stitch stream has no header: it is a sequence of relative movement records and control markers.

Bernina workflows may also use EXP-style files with companion color or metadata sidecars, so an .exp file alone may not describe the whole design handoff.

Satin Studio behavior

Satin Studio preserves the EXP stitch stream and associates recognized color sidecars with it. Missing or unknown sidecars leave the stitch commands intact and mark the thread mapping for review.

Versions and variants

Melco-style and Bernina-style workflows differ around sidecars. Satin Studio identifies the main stitch stream and reports each companion file separately.

File identification notes

The base EXP stream uses signed 8-bit relative x, y movement bytes. Normal movement is two bytes. A first byte of 0x80 introduces a control event, with the second byte identifying the command.

Known command pairs include:

Maximum single-byte movement is in the signed 8-bit range. Longer travel must be split.

Observed structure notes

Structure sketch

Represent the base stream as records with no required file header:

struct ExpStream<'a> {
    records: &'a [ExpRecord<'a>],        // no required file header in base EXP
}

enum ExpRecord<'a> {
    Stitch { dx: i8, dy: i8 },
    End,                                // 0x80 0x80
    ColorChange,                        // 0x80 0x01 in common files
    Jump { dx: i8, dy: i8 },             // 0x80 0x04 followed by movement bytes
    VendorControl { command: u8, payload: &'a [u8] },
}

Compatibility evidence

Compatibility checks cover signatures, metadata, command boundaries, malformed records, and files from the machines and software named above. Unsupported variants stop with a specific report instead of being silently rewritten.