Stitch format PMV

The educational technology and digital learning wiki
Jump to navigation Jump to search
Machine embroidery
Module: Embroidery format
to finalize beginner
2018/12/05
See also

.pmv files are a brother stitch format.

Overview

Stitch formats are strictly embroidery in the traditional sense. They are the applications of patterned stitches on to fabric. But these are done with programs within the sewing machine itself. Rather than the entire XY field of the hoop they have a Y field of the presser foot and an X dimension forward and back along the fabric. It is for this reason that the formatting is stored in a hybrid absolute/relative manner with different encoding schemes. The amount the element moves up in the fabric is different than the amount the needle moves within the presser foot.

There are several other related Brother stitch files this is simply the only one analyzed.

Header

The header is exactly 100 bytes long. 7 bytes of format spec, 36 of copyright. And 57 bytes of a few different stitch settings.

Type Bytes Value Description
`string` 7 "#PMV0001" Nearly ever brother format starts with a similar header.
`string` 36 copyright This is not needed for the format explicitly but the files contain a copyright message. This doesn't affect whether the files work or not.
`s8` 9 b'\x01\x00\x00\x00\x00\x00\x00\x00\x00' Unknown
`s8` 1 Length Offset Usually 00, but can be set within the stitch and saved. It's the offset from the default in signed 8 bit.
`s8` 1 Width Offset Usually 00, but can be set within the stitch and saved. It's the offset from the default in signed 8 bit.
`s8` 3 b'\x00\x00\x01' Unknown
`s8` 14 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' Unknown
`s8` 3 b'\x00\x00\x00' Unknown
`s16` 2 L/R shift Usually 0, but gives the length offset in left and right directly to the current value.
`s8` 9 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00' Unknown
`s8` 14 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00' Unknown

L/R shift is a 16 bit integer located at 0x4A-0x4B. The length table offset is an 8 bit int located at 0x34 and the width table offset is located at 0x35. These can be set within the stitch on the machine and then saved out again saving their value. The table offsets are signed 8 bit numbers, and are added to the default table values located within the tables.

Copyright Note

The 36 character copyright notice appears on all files produced by a Brother sewing machine. This includes files for which Brother did no work, and legally would not own the copyright. It always says "Copyright by brother industries LTD". The intellectual work of stitch making using something like Brother's My Stitch, would (IANAL) be owned by its creator and not Brother (unless created by Brother).

Stitch Block

Point count Byte count. 6 bits forward/back 5 bits movement within presser foot.

While +15,-16 is possible beyond 14,14 is never seen.

Ends with 0, 256 16le 0 16le 256 Likely due to there not being another stitch block.

Followed by 16 bytes of unknown. b'\x00\x00\x00\x00\x05\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00\x02\x00'

Control Tables

Type Bytes Value Description
`s16` 2 256 This may be to end the stitch blocks. Giving a 256, 0 values.
`s8` 1 0 Unknown
`s8` 1 0 Unknown
`s8` 1 Typically 12 Default Position in Table.
`s8` 1 N - Number of table entries. Gives the Length Table Count before the table.
`s16` 4 * N Table Entries The table elements.
`s8` 1 Typically (width-range) Default Position in Table.
`s8` 1 N - Number of table entries. Gives the Width Table Count before the table.
`s16` 4 * N Table Entries The table elements.
`s16` 2 Only seen: 12 Unknown.
`s8` 16 16 byte 0x00 File ends with 16 bytes of 00

Length Lookup Table

Since the length travelled is independent from the width within the presser foot. These are often very similar. For the satin stitches they often have 1 value that turns them off. For most of the dynamic stitches they are quite similar and fit into a semi-log curve but this is mostly to ensure they have finer details at the low end.

Type Bytes Value Description
`s8` 1 Typically: 12 The default position within the table.
`s8` 1 N - Number of table entries. Gives the table count before the table.
`s16` 4 * N Table Entries The table elements.


Type Bytes Value Description
`s16` 2 value 1 Dunno specifically.
`s16` 2 value 2 Dunno specifically.


Position Value 1 Value 2
0 0 0
1 10 71
2 20 143
3 40 214
4 60 286
5 80 357
6 100 429
7 120 500
8 140 571
9 160 714
10 180 786
11 200 857
12 250 1000
13 300 1286
14 350 1429
15 400 1571
16 450 1786
17 500 2000

Width Lookup Table

Type Bytes Value Description
`s8` 1 Usually about 14 The default position within the table.
`s8` 1 N - Number of table entries. Typically 15 Gives the table count before the table.
`s16` 4 * N Table Entries The table elements.


Type Bytes Value Description
`s16` 2 value 1 Dunno specifically.
`s16` 2 value 2 Dunno specifically.

These values differ depending on the range of values occupied within in presser foot. If there is a range of 0. Which is to say every point is at the same location within the presser foot and the values given is a table of size 1 with the values.

Position Value 1 Value 2
0 8192 1000

This turns off the ability to change this value within the sewing machine.

Typically however there is a range of values. And since you can always expand this range to become the entire range within the presser foot. The values change accordingly. Usually these are constant steps with a max value that can be calculated 28000 / width_range. The 28,000 is due to the +14 -14 value range. If the total range is used the width range is 28 making the top value 1000. We'll do the calculations as if that is the case in the table below.

Position Value 1 Value 2
0 0 0
1 50 71
2 100 143
3 150 214
4 200 286
5 250 357
6 300 429
7 350 500
8 400 571
9 450 643
10 500 714
11 550 786
12 600 857
13 650 929
14 700 1000

Keeping in mind that unit conversion has 700 equal to a width of 7.00 mm.

Also See

Brothers support for making custom stitches. http://support.brother.com/g/b/faqend.aspx?c=us&lang=en&prod=hf_inovnq1300eus&faqid=faqh00100482_000