Jacquard loom function and simulator



Talking about threads, not the ones you think...

Have you ever heard some old-timer say "back in my days we punched holes in cards to write programs" ?

Insert the obligatory "old_man_yells_at_IDE.png" here.

I certainly did and this sent me down a rabbit hole of "why the hell did people do this?!"


TL;DR Jacquard looms are awesome and were the first machines that people wrote shaders on by punching holes in paper.

To better understand these clunky pieces of steel I wrote a simulator in rust.

You can check it out here


Manual weaving

Ok now what are Jacquard looms ? To answer that question we need to do a primer on looms first.

A loom is basically just a construction which holds multiple threads that are then to be woven together to create a fabric. And if one is feeling fancy to do the weaving in a certain order to create nice looking pattern.

To do that you could just put two parallel rows of nails in a piece of wood attach some threads vertically between them like in a harp (lets call them warp threads)

and take a different colored thread and run that horizontally between the other threads (lets call this one weft thread).


First weave: color orange


Second weave: color green


Rest of the row alternating in color

Depending on if you throw the weft above the warp threads or below them you either see the weft thread color or the warp color in the resulting fabric.

In the example above its from left to right alternating between green and orange.

Voila you are now weaving manually.


Assisting structures

Manual weaving is fine but you have to fiddle the weft thread around and decide if it should go above or below the warp, this can get quite tedious.

So how about we introduce a thing that can raise each warp thread for us so we can make our lives a bit easier.

Lets take a piece of wood the width of our loom and cut a notch in it evenly spaced out for each of our warp threads and call it a heddle.

Now we wiggle the heddle in between all the warp threads on our board and put the ones we want lifted above the heddle in the notch and the ones we don't want lifted stay below the heddle.


Top view

If you look at it from the side it creates a nice triangle the shed where we can just pass our weft thru.


Side view

But we still have to manually get our weft in between all the warp threads which takes time and is error prone.

As the theme dictates... lets add another piece of wood called the shuttle! On this piece of wood we wind our weft so that we can then use it to easily pass the wound up weft in the newly created triangle.


Shuttle with weft

Voila you are still weaving manually but with a bit more efficiency.


First automation steps

As you can see this is a bit more practical but to create multiple patterns in one fabric you would either need to put each warp on and of the heddle for each row or you would need multiple heddles.

Both ways have been used and can fulfill a certain need for simple patterns.

If you want to see a loom with manually worked heddles in detail there is an excellent video from Jette Wandermeiden on youtube.

But we want complete freedom to render whatever pattern we want.

The goal

Lets mark down which manual steps we would need to automate:

How do we take the next step and get rid of the manual setting of warp and weft threads on each row ?

Needles and Hooks

Imagine you have a loom as wide as a piano and you need to get the shuttle with the weft across all warp threads. If you wanted to change the pattern you would need to rethread all warp threads and put them on or off the heddle.

This would take ages and is cumbersome so how about we split the heddle into multiple pieces that can each act as a "one heddle per warp" mechanism.

The hook

Instead of forcing each warp thread on or off the heddle we can take a long piece of wire and bend it so that it has a loop in the middle thru which we guide the warp thread.


Hook with warp hole (hehe) I mean loop

Now we are able to manipulate the warp thread but we need to somehow attach it back to the heddle.

To keep things simple we can just use little hook on top.


Shuttle with weft

Once the heedle bar moves all hooks are moving with it.


heddle lifts -> catches hook -> hook lifts warp thread

Now we could raise each thread on their own but they are constantly attached to the hook...

The needle

To stop the needle and with it the warp thread from moving with the heddle we need to push it of the heddle.

So lets introduce another piece of wire which has a loop to wrap around the hook.


same principle as the hook just horizontal

Now we can move the needle back and the hook gets bend and thus it wont get lifted by the heddle.


Needle manipulating the hook


This moves the hook off...


or on the heddle.

When the heddle is raised and the hook is pushed back by the needle it won't be catched and thus not get lifted. If the needle does not push the hook back the hook will be catched and get lifted.

Two states... so we got two states on and off or 0, 1 you can guess where this leads.

But once the needle is pushed back how is it supposed to get back so that the hook will be catched by the heddle again ?

The spring

Lets introduce even more bent wire!!! This time in the form of a spring!

First lets bend our needle at the end so that it forms an elongated loop and a small tight pin like end that we can put a spring on.


needle with pin like loop

Ok now we can put a spring on the end of our needle to push it back out after it has been pushed in.

But a spring needs to push against something so lets put a piece of wood at the back with a conveniently placed hole for the needle end to go thru.


board to push against

The needle is somewhat floating in the air so lets add another board in front of the needle same as we did for the spring.


Needle with board

Nothing stops our spring from expanding and just pushing the needle out of the spring board.

And thats the reason we made a loop at the end of the needle.


pin acts as a needle movement limiter

Once we put a pin thru the loop the needle will be limited how far it can move back and forth. And will also be stopped from being pushed out by the spring.

Since the pin needs to be held on top somehow we can add another piece of wood and call it a springbox. (Note: I'll exclude it from the other drawings just to keep things clearer)


springbox

Now we got a full needle assembly which allows the needle to go back and forth. Yay!


full needle assembly

Half way there

Lets bring the hook back into the picture:


Needle with board

With this assembly we can now check of the two first points on our checklist.

for the other two we'll need to introduce another piece...

The punchcard

Remember the needles need to be pushed in to lower the warp. We could to this by hand for each needle, given we have enough fingers but this is where the punchcard comes in ha.

Imagine a piece of cardboard which we press against the needleboard and depending on if there is a hole punched into the card the needles get push inward or stay where they are.


Punchard in front of the needle

Layout

Lets say we have a loom with 8 warp threads to keep things somewhat simple we will go with a card layout of one row and 8 holes. but for learning purposes we go with 4 columns and 2 rows.


All we need is a way to index which hole goes to which needle. Since we are doing things our way we can just come up with an indexing order of our own.

Lets use a column first layout like this:


Top to bottom first, then left to right


Mapping of holes to warp threads

Ok we got holes now but what to they mean?

"Instructions"

Remember we got a green warp and yellow weft. So if the warp is not raised we get an all yellow row in our fabric and if any warp is raised the according weave ( or pixel haha ) will result in the green thread being on top.

The warp is getting raised when the needle is NOT pushed in aka there is a hole in the punchcard and the hook stays on the heddle.


Here is a handy reminder flowchart

Lets apply this logic and make an alternating green yellow pattern.


With these "instructions" on the punchard we can tell every odd warp to stay down and every even warp to get lifted.

But all we did is talk about one needle&hook assembly how do we get 8 ?

The whole assembly

The needle and hook assembly is carefully designed to be a simply copy&pasteable on the horizontal axis.


Single mechanism

So nothing keeps us from just adding more assemblies in one row.

A single row

Here we have a single row of 4 needle and hook pairs which can "read" the top row of the punchcard.


Top row

Stacked rows

To be able to read the other row of the punchcard we need to add the same mechanism but with a little tweak. Since two stacked needle and hook pairs would collide and the needle would try to work the same hook.

But there is a simple solution. We adjust the position of loop on the needle a bit back like this and move the hooks back onto another heddle bar.


This allows us to have a complete separate row in the back.

Full assembly

Now lets put this all in one big frame


and check off our last two points.

Step by step

Lets recap what we have put together step by step.

We've got:

Thats a hole lot of pieces.

But in the end we are now able to use them to create any pattern we want on a fabric.

Conclusion

I hope you learned something today and many thanks to

2024-11-24
jmp top