Deliverables¶
GANTT¶
Changes have been made throughout the project.
BoM (Bill of Materials)¶
Presentations¶
Pitch Presentation¶
Midterm Presentation¶
Storytelling Presentation¶
Final Presentation¶
Story telling script¶
My sketches for the story telling session tell a story about my concept and lead to the final outcome in..
- scene 1 the scene opens with a room full of flowers
- scene 2 we zoom into the lady wearing a plant based dress
- scene 3 she comes out from behind the plants
- scene 4 ... whats next?
A good exaple of story telling sketches are from ...Florencia Moyano https://class.textile-academy.org/2022/florencia-moyano/finalproject/prefinal03/
Code¶
Mother-Grandmother Data Python File (Combines 2 data sets of around ~150 characters and converts it to a weaving pattern using an 8 shaft loom, a straight draw-down threading pattern, and a simple advancing twill weave)
import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
# Your Variables!
EPI = 14
PPI = 15
WIDTH_IN = 5
LENGTH_IN = 20
SHAFTS = 8
MAX_FLOAT = 4
TOTAL_WARPS = EPI * WIDTH_IN
TOTAL_PICKS = PPI * LENGTH_IN
OUTPUT_FILE = "weavingdraft_mothergrandmother.xlsx"
STRUCTURAL_INTERVAL = 10 # distributes conductivity every 10 picks
# Text -> Binary -> 3-Bit Chunks
def text_to_binary(filename):
with open(filename, "r", encoding="utf-8") as f:
text = f.read()
binary_stream = []
for char in text:
byte = format(ord(char), "08b")
binary_stream.extend([int(b) for b in byte])
return binary_stream
def chunk_bits(bits, size=3):
chunks = []
for i in range(0, len(bits), size):
chunk = bits[i:i+size]
while len(chunk) < size:
chunk.append(0)
chunks.append(chunk)
return chunks
def chunk_to_value(chunk):
return int("".join(str(b) for b in chunk), 2)
# Insert .txt data files
chunks_A = chunk_bits(text_to_binary("grandmother.txt"), 3)
chunks_B = chunk_bits(text_to_binary("mother.txt"), 3)
# Setting up the excel file
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Weaving Draft"
warp_color = PatternFill(start_color="580113", end_color="580113", fill_type="solid")
weft_color = PatternFill(start_color="fff79c", end_color="fff79c", fill_type="solid")
threading = [i % SHAFTS for i in range(TOTAL_WARPS)]
BASE_LIFTS = [
{0,1,2,3},
{1,2,3,4},
{2,3,4,5},
{3,4,5,6},
{4,5,6,7},
{5,6,7,0},
{6,7,0,1},
{7,0,1,2},
]
warp_down_count = [0] * TOTAL_WARPS
ws.column_dimensions["A"].width = 40
# Generate the pattern
current_row = 1
for pick in range(TOTAL_PICKS):
# Gradual blend grandmother → mother
t = pick / (TOTAL_PICKS - 1)
value_A = chunk_to_value(chunks_A[pick % len(chunks_A)])
value_B = chunk_to_value(chunks_B[pick % len(chunks_B)])
blended_value = round((1 - t) * value_A + t * value_B) % 8
lift = BASE_LIFTS[blended_value]
# Adding conductive wefts based on when 3-bit chunk = 000 AND every 10th pick
conductive = False
if blended_value == 0:
conductive = True
if pick % STRUCTURAL_INTERVAL == 0:
conductive = True
# Labels when to put a conductive weft and a yarn weft
if conductive:
weft_sequence = ["COPPER WIRE", "YARN"]
else:
weft_sequence = ["YARN"]
# Labeling and writing shaft lift instructions for weaver
for weft_type in weft_sequence:
lift_shafts = sorted([s+1 for s in lift])
instruction = "Shaft Lift: " + ",".join(str(s) for s in lift_shafts)
instruction += f" | {weft_type}"
ws.cell(row=current_row, column=1).value = instruction
for warp in range(TOTAL_WARPS):
cell = ws.cell(row=current_row, column=warp + 2)
shaft = threading[warp]
if shaft in lift:
warp_down_count[warp] = 0
cell.fill = warp_color
else:
warp_down_count[warp] += 1
cell.fill = weft_color
if warp_down_count[warp] >= MAX_FLOAT:
cell.fill = warp_color
warp_down_count[warp] = 0
ws.row_dimensions[current_row].height = 10
current_row += 1
# Column width sizing (but this changes if you import the file from excel to say a Google Sheets app)
for col in range(2, TOTAL_WARPS + 2):
ws.column_dimensions[get_column_letter(col)].width = 1.5
wb.save(OUTPUT_FILE)
print("Weaving draft generated.")
My Data Python File (Uses 1 data set of around ~150 characters and converts it to a weaving pattern using an 8 shaft loom, a straight draw-down threading pattern, and a simple advancing twill weave)
import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
# Your variables!
EPI = 15
PPI = 30
WIDTH_IN = 5
LENGTH_IN = 20
SHAFTS = 8
MAX_FLOAT = 4
STRUCTURAL_INTERVAL = 10
TOTAL_WARPS = EPI * WIDTH_IN
TOTAL_PICKS = PPI * LENGTH_IN
OUTPUT_FILE = "weavingdraft_daughter.xlsx"
# Text -> Binary -> 3-Bit Chunks
def text_to_binary(filename):
with open(filename, "r", encoding="utf-8") as f:
text = f.read()
binary_stream = []
for char in text:
byte = format(ord(char), "08b")
binary_stream.extend([int(b) for b in byte])
return binary_stream
def chunk_bits(bits, size=3):
chunks = []
for i in range(0, len(bits), size):
chunk = bits[i:i+size]
while len(chunk) < size:
chunk.append(0)
chunks.append(chunk)
return chunks
def chunk_to_value(chunk):
return int("".join(str(b) for b in chunk), 2)
# upload your .txt file here
chunks = chunk_bits(text_to_binary("daughter.txt"), 3)
# setting up the excel file
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Weaving Draft"
warp_color = PatternFill(start_color="5e41ff", end_color="5e41ff", fill_type="solid")
weft_color = PatternFill(start_color="f84509", end_color="f84509", fill_type="solid")
threading = [i % SHAFTS for i in range(TOTAL_WARPS)]
BASE_LIFTS = [
{0,1,2,3},
{1,2,3,4},
{2,3,4,5},
{3,4,5,6},
{4,5,6,7},
{5,6,7,0},
{6,7,0,1},
{7,0,1,2},
]
warp_down_count = [0] * TOTAL_WARPS
ws.column_dimensions["A"].width = 35
# generate the weaving pattern
for pick in range(TOTAL_PICKS):
row = pick + 1
value = chunk_to_value(chunks[pick % len(chunks)]) % 8
lift = BASE_LIFTS[value]
conductive = False
# data trigger
if value == 0:
conductive = True
# structural reinforcement
if pick % STRUCTURAL_INTERVAL == 0:
conductive = True
if conductive:
weft_type = "COPPER WIRE"
else:
weft_type = "YARN"
lift_shafts = sorted([s+1 for s in lift])
instruction = "Shaft Lift: " + ",".join(str(s) for s in lift_shafts)
instruction += f" | {weft_type}"
ws.cell(row=row, column=1).value = instruction
for warp in range(TOTAL_WARPS):
cell = ws.cell(row=row, column=warp + 2)
shaft = threading[warp]
if shaft in lift:
warp_down_count[warp] = 0
cell.fill = warp_color
else:
warp_down_count[warp] += 1
cell.fill = weft_color
if warp_down_count[warp] >= MAX_FLOAT:
cell.fill = warp_color
warp_down_count[warp] = 0
ws.row_dimensions[row].height = 10
# Column width sizing (but this changes if you import the file from excel to say a Google Sheets app)
for col in range(2, TOTAL_WARPS + 2):
ws.column_dimensions[get_column_letter(col)].width = 1.5
# Saving and spitting out your resulting file
wb.save(OUTPUT_FILE)
print("Weaving draft generated from daughter.txt.")
How-Tos & Tutorials¶
You can find this info in the "Process Journal" tab! :) Check out the Analog Synth, Weaving, and Theremin tabs in particular :D :D
Fabrication files¶
- Python File 1
- Python File 2
