Process Journal¶
I've been keeping a digital journal of my thought and design and build process since the start of this whole deal. I tried cleaning it up for the purpose of clearer documentation to the reader. Hopefully it's clear to anyone (including myself) visiting or revisiting this space. 'Tis the design process!
But first my process in a more coherent nutshell :3
Think of uploading your hand-drawings, "frankenstein prototypes", pictures with notes, everything that shows your thinking process and initial development of your personal project. Giving inside in your process, will help the mentors to assist you further in your development.
research papers can also be linked through an online link or when optimised, PDFs of research papers can be added to your repository and credited to the writer or researcher
Design & Fabrication¶
once you start designing and fabricating your first tests, you can link both at the bottom of the page with footnotes
"This step of the process was important because i learnt to draft my own pattern digitally. The first tests of this can be seen here on the right, find half- or test-fabrication files here[^1]"
Prototypes¶
prototypes are your first step towards shaping your final piece, product, material et cetera
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Week 1¶
I made a very preliminary gantt chart and BoM this week. I didn’t do much but think and think and think about my project. Not much doing or researching, just a bunch of thinking.
I did get helpful references! Here they are:
- ZOMBITRON
- Sophie Skach - info@sophieskach.com - No response but I'm sure she's just super busy! :)
- Michelle Vossen - Reached out to her and got some great feedback!
- Jessica Stanley - Connected on LinkedIn!
- Intelligent Instruments Lab - Nicola Privato - Great feedback about textile synths here as well!
- Passepartout Duo - Set up a call and super informative on binary synths and soft synths in general!
Resources:
- DXARTS Softlab - Resources tab of website
- Adafruit
- Pure Data
- Intelligent Instruments Lab
- Adafruit E-Textiles
- Instructables
Week 2¶
I refined my gantt chart this week and made a trello board! Hooray!
Slowly but surely this is coming along.
Now I was posed a couple of options for synths by Nicola P. from the Intelligent Instruments Lab:
- DIY Analog Synth - could by a kit and assemble one of these
- Virtual Synth on your Computer (using Pure Data)
- Build a synth using a microcontroller - microcontroller, digital to analog converter, amplifier, and a speaker.
Michelle Vossen also responded back and posed me looking into different types of synths as well.
Which one is best for my vision?... I don’t know.
I like the Arturia Microfreak. And I also like the breadboard synth built by this guy (below).
Well, really, the questions this week are:
- What datasets do I want to visualize/sonify in my project?
- What kind of synthesizer do I want to embed?
- What kind of loom do I want to develop patterns and weave on?
- What kind of folding patterns can and will I develop?
- What kind of language am I developing to turn data into binary
I also found that the same guy I hyperlinked above made a drum machine using rope core memory which was used as the guidance navigation computer for Apollo 8! Side note for either this project or the DXARTS Softlab residency :0 :0
Anyway, I went on a bit of a break which is both a blessing and a curse. It’s Sunday, Jan. 18th and I’m scrambling. But let’s delve into this. A couple of things we need to handle:
- Which synth type do I want to build for this project?
- Once I decide which synth, what materials do I need to prototype it?
- Once that list is defined, order those materials
If I have time I'll address these:
- Research data sonification
- Start developing data-yarn-sound language - logic diagram
DIY Synths
Arturia MicroFreak
The Arturia MicroFreak synthesizer is a hybrid synthesizer. It contains:
- Digital oscillator engines — including wavetable, FM-style, granular, physical modeling, and more
- Analog filter — state-variable filter shaping the tone
- Expressive interface — flat capacitive keyboard with polyphonic aftertouch and touch strip
- Sequencer & arpeggiator built in
- CV/Gate outputs — for controlling external gear with pitch and gate signals
- USB/MIDI connectivity — so it can interface with computers or other synths/controllers too
It’s compact but powerful, and it’s praised for being both a fun sound-design instrument and a creative performance synth.
^^ This was from my research on ChatGPT.
Before I continue, let me actually frame the intention of this project better: My intention is to experiment translating a hardware synth to a soft synth. Point one. I do want a particular sound, truthfully, and the sound I’m intending on replicating is that of a twinkling celesta. It’s honestly a sound that I would consider to be warm and hopeful, much like a home, TO ME. HOWEVER, if the synth is supposed to act as a tool or object that could be modified to be “home” for others, then the sound emanating from their synth might be different, also dependent on weaving and folding patterns. SO, that said, I want to make a versatile and responsive textile synth.
I’ve looked lightly through kits that are sold on musicfromouterspace.com and my Make: Analog Synthesizers book but I think I can safely say that my choice synth for this project is an analog one.
Jessica Stanley’s documentation for her soft synth really was and is a great source for my project. She was looking into kits as well but I didn’t want to spend all this money buying a kit. I wanted to bring the components together myself without the help of a kit. I decided I would prototype a synth using “Look Mum No Computer’s” video on building an analog synth from scratch using a breadboard.
It’s a more advanced synth but I think experimenting with it would prove useful.
As I build this synth up, I may continue researching and switching out components should I decide to depending on what the sound is.
Let me step aside and say translating this to textile, we need to think. A synthesizer’s components that are in place for human interaction are potentiometers and keys. So how can I translate these components into weaving or folding structures that would allow for a textile synthesizer to be as a playable as a hardware analog synth.
Onto what was left on my list:
- Research data sonification
- Start developing data-yarn-sound language - logic diagram
Pitch - Mentoring Notes
Before we went off for winter break, I gave my project pitch but let's just say it was not good. I had so many ideas at the time. Most of the feedback I received that week was not very focused because my pitch wasn't very focused. I posted on a Mattermost channel that I had refined my pitch presentation Rico K., bless him, gave me some pretty awesome feedback regarding my project.
Marissa...Rico here. Just took a look at your FP proposal, here are some thoughts for you...
- love the concept
- great research...would love to know in specific terms what aspect(s) of the inspirations you identified speak to you
- You are probably aware of the work of Fabricademy graduate (Waag) Michelle Vossen...but if you aren't...https://www.instagram.com/michellevossen_/
- I just finished Neil's Data Science course where I sonified data following a great tutorial. Check it out here...https://class.academany.org/futures/data-science/2025/labs/skylab/students/rico-kanthatham/Week0401.html
- Not enough description of the technical aspects of you FP...what synth? microcontroller? what design software?
-
By far the clearest explanation of how your FP will work was on page 4 of your slide deck...the colored square diagram that shows the modularity of your system. Some random thoughts...
-
for the sake of time, keep each module reasonably small...say 10cm x 10cm max
- aim for a decent and doable number of modules...start with 3, stretch goal for 5
- based on your inspirations and your specific interest...quickly define what each unique module will be and do (ex: folded technique, pitch bend; woven technique, capacitive MIDI input)
- do the connections have to be linear? are loop back connections possible (like on a Eurorack synth)?
- how will you transport your 'synth'? The 'portability' feature should also be thought out.
Beyond that, your schedule will need to be revised. In simple terms, what I normally tell me students is that...January is where you furiously and rapidly prototype everything you want to try...make all your mistakes and learn a ton in this month about what is possible and not possible...recording your trials and tribulations religiously. February is FP production month...have triaged all your ideas in Jan, Feb is where you move forward with a fixed idea of what your FP will be...and the month is about producing all of the various components of your FP with the aim of getting it DONE by the end of the month. March is presentation prep month. If you look at past Fabricademy Final Project presentations...you will notice how slick they are. To get them to this level or quality...takes time. Fabricademy FP presentations start some time after the middle of the month, I think...so you don't have a full month to work. As such, with your FINISHED FP from Feb...you will craft your narrative, shoot and edit your videos, put together a sick slide presentation...and prep for your big reveal day. Repeat...March is NOT for finalizing your project production and assembly. March is for presentation work ONLY.
Therefore, start with a list of absolutely everything you must do between now and the presentation day...then build a GAANT chart style schedule to get it all done. If the list feels too daunting, then you will have to triage down the list to one that feels less insane...and move forward with that. Getting some things done well is much better than getting many things done poorly.
Don't mean to scare you, but just trying to help you to understand that you have less time than you think. January is the most critical month...you must arrive at decisions and work at a very fast pace...so that the subsequent months will be less insane.
You have a very cool project and I very much look forward to seeing it manifested. Let me know if I can help.
He mentioned doing data sonification program/class recently and so I linked it again here.
(From the mentoring notes) Data sonification is interesting and I do think I may take some points from his work but I think the difference for my project is I’m sonifying patterns that are made up of data (binary). Which reminds me, this is the logic I’m dealing with.
Any data set → Converts to binary → Map binary pattern to CV (or controlled voltage) values → Guides creation of weaving and/or folding pattern based on binary
I realize right now that folding may complicate things more than they already are. But I’m prototyping this coming week so we’ll see how this goes.
Just like in my concept page, I've listed the books recommended by Jessican Stanley in her documentation. I agree, they do look pretty rad.
- Zeros and Ones by Sadie Plant
- The Art of Electronics by Horowitz and Hill
- Handmade Electronic Music by Nicolas Collins
- Textile Messages, edited by Leah Buechley
- Getting Started in Electronics by Forrest M Mims III
Week 3¶
I’m currently working through a problem. I’m using data (binary data) to generate weaving and folding patterns. Okay? With me? Now, I’m translating those patterns in physical form. Okay, good. Sounds difficult but my brain can wrap my brain around that. Solid. But NOW I want those woven and folded samples to produce a synth effect. How can I do that when I have to weave conductive traces in the form of the specific pattern (based on the different datasets!) woven or folded? I mean how the hell do I do that???! Should I weave this data pattern with colored yarn and weave traces along some indiscriminate path along the sample to produce a synth effect. I don’t know. But I’m talking to Passepartout Duo next week on 1/25 and I’m going to email Sophie Skach for some help. She’s an e-textiles guru.
Two days later..
No response from Sophie yet. I’m meeting with Passepartout Duo tomorrow night. AND Louise gave me some helpful insight into my problem, and I quote:
Hello Marissa, it seems to me that you have 2 types of inputs: the datasets (type 1) and the actions on the e-textiles (type 2 maybe capacitive sensors?). What would be the goal of each types?
For instance: one dataset informs your tones/melody and then with the capacitive sensor you are able to modulate it. One dataset can inform your shapes/weaving patterns too. But if you are looking for a dataset that informs the modulation I think you need to list the different types of modulations possible with their interval, minimum and maximum value to remap the dataset to this interval. (for example: your dataset goes from 2 to 50 but your interval is 0V to 9V so your 2 is going to correspond to your 0V and 50 to 9V and all data in between 2 to 50 will be remap from 0 to 9).
Maybe those documentations can help:
Kobakant synth example: https://www.kobakant.at/DIY/?p=9948
Kobakant synth example 2: https://www.kobakant.at/DIY/?p=9812 hope this help!
It does help! Because I have to think okay my datasets will be weaving new patterns, new patterns based on data that will essentially produce synth effects like an oscillator, mixer, LFO, envelope, etc. BUT those patterns can also generate a series of textile sensors that act as inputs. Where when you touch those textiles, it acts like a keyboard on an analog synthesizer.
This week I spent a lot of time thinking about and starting to build a circuit out for this really cool synth but it gets really complicated, really fast. And if I think of my project, I want people to be able to see this project through to completion for their own purposes and reflection. So as much as I spent on researching and buying components and so forth, I didn’t put as much time into the textiles portion of my project. I’ll paste a picture of my breadboard circuit with 2 oscillators and a mixer. It’s involved, trust.
So, my goals for this coming week are to dial it in and reel it in. I’m speaking to Nicolette of Passepartout Duo tomorrow night and hoping to clear up some of my questions about integrating and working with e-textiles and sound. I’m simplifying the modules I do want on the synth and prototyping/testing those on a breadboard. I’ll be weaving some samples on a hand loom and setting out to see what the layout of this synth would be. Oh man, it’s gonna be a busy week but we got this.
Another 2 days later..
I met with Passepartout Duo (Chris and Nicoletta) and they provided some very important insight. So they pointed me to check out Kobakant, https://afroditipsarra.com/ (who’s the person in charge of the DXARTS Softlab residency I applied to! Hope i get in but ill try managing expectations), and Irene Posch.
Plus they shared other textile labs with residencies and/or access to TC2 looms.
Now, I explained my idea and Chris posed 2 possibilities: I weave data according to patterns generated via datasets that include conductive yarn/thread which, when connected to a microcontroller, can become a sort of digital synthesizer. That option basically allows you to have any sound you want because you can program that in to the microcontroller along with a DAW (i.e. Ableton).
The 2nd option is I think more organic to my project. Which is weave data with colored yarn and conductive yarn along with different CMOS components and analog synth hardware (transistors, resistors, ICs, etc.) to essentially produce analog sounds based on binary data. He said data would be present as conductive thread (like a punch card) woven in binary and then you translate that binary to sound.
It’s very hard to create a totally soft synth. You can make a relay, primitive resistors, a kind of capacitor, and decode binary into sound but you can’t produce all this hardware in “soft” form.
They encouraged me to look into music boxes and rope memory to see about a synthesizer. If I wanted to go the rope memory route, Chris recommended using a parachute cord to insulate. Remove the yarn from the inside and replace it with conductive yarn. They also pointed me to past projects of theirs where they’ve tried translating binary to sound. They both also recommended I look into using an embroidery machine with copper wire and (perhaps later) a TC2 loom.
Then, Nico posed another consideration: Consider the long-term survival of the materials. And I thought WHOA. That's actually very profound. What if things we find meaningful aren’t made to last physically. The object doesn’t matter. Also what kinds of sounds are produced from decay and wear?
So, during the weekend I started prototyping an analog synth on breadboards and honestly it got complicated super fast. I mean doable still! But not entirely conducive to the project. If I want people to make it, it won’t be an easy task.
This week I have a lot ahead of me.
Let’s reframe the scope now, given the info from Chris and Nico.
- [ ] Define more or less simple synth modules (LFO, oscillator, etc.)
- [ ] Prototype small sample woven synth module w/ CMOS and more components (or at least draw circuit diagrams and maybe “test” them on LTSpice)
- [ ] Investigate translating binary to sound (Chris and Nico documentation)
- [ ] Warp structo loom
- [ ] Weave samples in simple handloom
- [ ] Fold samples as potentiometers
- [ ] Kirigami/Origami Potentiometers
- [ ] Design out textile/synth layout (what will it look like, how will it connect?)
- [ ] Program translation from dataset to binary
- [ ] Shell script?
- [ ] Python?
- [ ] Translating data to weaving patterns - Code to Excel to Treadl
- [ ] Excel
- [ ] AdaCAD
- [ ] Buy yarn (after making samples)
- [ ] Update BoM
- [ ] Update Gantt chart
- [ ] Visualize understanding through presentation, pitch, and flowcharts
Let’s start at the top of my list. Define my modules.
Analog Synthesizers 101¶
An analog synthesizer works by using voltage-controlled circuits (VCOs, VCFs, VCAs) to generate and shape sound, relying on physical components like oscillators for pitch, filters for tone (removing frequencies), and amplifiers for volume, all controlled by electrical signals and shaped by modules like envelopes (ADSR) and LFOs to create evolving sounds, unlike digital synths that use binary code. A keyboard press sends a control voltage (CV) to trigger these modules, turning a raw waveform into a musical tone.
Key Components & Signal Flow:
Oscillator (VCO): The sound source, generating basic waveforms (sine, saw, square, pulse) whose pitch is controlled by voltage.
Filter (VCF): Shapes the sound by removing frequencies (e.g., low-pass, high-pass) to alter the timbre, with controls for cutoff and resonance.
Amplifier (VCA): Controls the sound's overall volume, opening and closing based on control voltage.
Envelope Generator (EG/ADSR): Shapes the sound's volume or brightness over time (Attack, Decay, Sustain, Release) when a key is pressed.
Low-Frequency Oscillator (LFO): A slow oscillator used to modulate other parameters (like pitch for vibrato or filter cutoff for movement).
The Process (Subtractive Synthesis):
Sound Creation: A VCO generates a complex waveform (like a sawtooth).
Initial Shaping (Filter): This waveform goes through a VCF, which cuts out unwanted high frequencies, making the sound darker.
Volume Shaping (Envelope): An EG controls the VCA, so the sound gradually fades in (Attack), holds (Sustain), and fades out (Release) when the key is lifted, rather than just cutting off.
Modulation (LFO/EG): An LFO can add a subtle vibrato by slightly altering the VCO's pitch, or an envelope can control the filter to make the sound brighter at the start and darker as it decays.
To be honest, I’d like to make a synth w/ all components if I can: an oscillator, a low pass, high pass filter, an amplifier, an envelope generator (ADSR), and a low-frequency oscillator.
Week 4¶
Project Progress - Mentoring Notes
At the end of last week (1/27), I went to the Fabricademy mentoring session and had to present my progress. It made me realize how ILL PREPARED I WAS. How a lot of my work as of yet has been focused on thinking through my concept. In fact, the comments I got were how I had a lot on my plate and I ran the risk of potentially not finishing by the end of Fabricademy. Other than that, Emma and Anush, my mentors, were very encouraging and excited about my project as they were for the rest of my peers :)
So, I made an updated Gantt for the upcoming week and really dialed in my concept. I updated the gantt with the above checklist (somewhat changed), the BoM, and in the process of updating the presentation.
I’ve done quite a bit. I warped my table loom with the help of Susan van Winkle, fellow weaver in San Diego.
I will also add calculations later here of what to consider when weaving but I’m also thinking of generating a little loom wherein someone can do this easily by hand and lasercut some lease sticks and stick shuttles. Will update you here soon. I need to decide this week whether I will do that or not.
I missed 2 warps and didn’t keep my cross consistent so there’s a bit of inconsistency there. I may have to make a new warp but that’s okay! I know how to do that now.
I also programmed in python some code for making a shaft lift pattern. Basically, with no TC2 or any other jacquard loom, it’s very hard for me to weave by lifting individual warps to weave data (0s and 1s). SO, I decided to have a byte of data (8 bits of 0s and 1s) dictating which shafts are lifted up and which are down. I’m pretty pleased with the result. It needs to be cleaned up a bit and with maybe an interface someone can interact with and generate their own pattern. The threading pattern you ask? I thought of just a simple straight draw down, which is the simplest twill pattern.
I condensed my code into one file → one that takes data, converts it to binary, maps binary to something specific in the weaving process to produce a unique woven structure. This woven structure then produces sound.
I used python. And I used Norm MacDonald’s moth joke as an example dataset. I love this clip. I first started with the following configuration: data -> binary -> lift warps up or down
- Filled: shaft up
- Empty: shaft down
This is more of a refined version labeling the shafts to columns. This sounds good for the loom I have but ultimately, like I said, there would be too many floats and that's no good for weaving.
Then I wondered about the conductive and non-conductive yarns and thought why not thread a conductive yarn when there's a 1 present. It doesn't make sense in terms of obviously visually representing data.
Week 5¶
The focus this week is sample making! Going into this week, I was able to warp my loom with the help of Susan van Winkle in Rancho Bernardo. She was super helpful. I learned a ton. I need lease sticks and a shuttle. I’ll either be lasercutting these or 3D printing them. I’m also going to either design or find a file myself to lasercut or 3d print a handheld loom to weave samples on.
I also received all my parts for my CMOS circuits. My plan is to breadboard those and showcase a bit of an example at next week’s midterm.
I did a couple of things already.
- [x] Define more or less simple synth modules (LFO, oscillator, etc.)
- [x] Oscillator, Simulated LFO, Envelope/AR Module, Gate/Trigger Module
- [x] Prototype small sample woven synth module w/ CMOS and more components (or at least draw circuit diagrams and maybe “test” them on LTSpice)
- [x] This week: breadboard this
- [ ] Investigate translating binary to sound (Chris and Nico documentation)
- [ ] This week: simulate sound on web
- [x] Warp structo loom
- [x] This week: Thread through dents
- [x] Weave samples in simple handloom
- [x] Design hand loom
- [x] Print hand loom (pin hole loom)
- [x] Design lease sticks, shuttles
- [x] Print lease sticks
- [ ] Fold samples as potentiometers
- [ ] This week: Kirigami/Origami Potentiometers
- [ ] Design out textile/synth layout (what will it look like, how will it connect?)
- [ ] I may not get to do this this week. My focus is on sample making
- [x] Program translation from dataset to binary
- [x] Shell script?
- [x] Python?
- [x] Translating data to weaving patterns - Code to Excel to Treadl
- [x] Excel
- [x] AdaCAD
- [x] I did the above using just python and excel. - [x] This week: I will be refining this as I weave samples
- [ ] Buy yarn (after making samples)
- [ ] This week: Not only buy yarn but determine whether there will be somewhat of a color scheme for makers to follow
- [x] Update BoM
- [x] This week: Just make sure it’s up to date for midterm
- [x] Update Gantt chart
- [x] This week: Just make sure it’s up to date for midterm
- [x] Visualize understanding through presentation, pitch, and flowcharts
- [x] This week: Make these diagrams for presentation/documentation AND in time for midterm
The modules I'm building are an oscillator, LFO, VCA, binary counter, envelope, gate/trigger module
Here's the code I've been working with!
I modified my code to not map binary values to conductive weft. Rather, mapping 0s to one weave pattern and 1s to another weave pattern. For instance, 0 would be associated with a right twill weave and 1 would be a left twill weave.
# Converting data to binary to weaving pattern using a 2/2 Twill pattern as a base
# Without a base pattern there will be floats in the weave which would produce pretty big inconsistencies
# The "lift_plan" is really just to remind others what shafts to lift on an 8 shaft loom repeatedly
The following are libraries required to interact with Excel through Python. Specifically, filling in cells according to binary data.
import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
These are essentially our constraints. We want our dents per inch (or ends per inch) to be 18. 7 inches for the sample. With washing the sample, it should shrink to about 6in. 126 total warp yarns in the loom. I have an 8 shaft loom so 8 shafts and no warp is allowed to float more than 4 picks. I’m using a sample “dataset.txt” file with a joke I really like. The output file is then named in OUTPUT_FILE.
EPI = 18
SAMPLE_SIZE_IN = 7
TOTAL_THREADS = EPI * SAMPLE_SIZE_IN # 126
SHAFTS = 8
MAX_FLOAT = 4
TEXT_FILE = "dataset.txt"
OUTPUT_FILE = "weaving_6x6_8shaft_from_text.xlsx"
This reads everything in the dataset.txt file. Then for every character in the file, it’s converted to a number via ASCII, and then converted to 8 bits (00100110). The binary data is then converted to one large stream of binary data.
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") # ASCII → 8-bit
binary_stream.extend([int(b) for b in byte])
return binary_stream
binary_stream = text_to_binary(TEXT_FILE)
This sets up the excel file. Columns are warp threads, rows are weft picks. It’s color-coded. Dark is for when warps are up and white is for when warps are down.
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "8-Shaft Weave Draft"
warp_color = PatternFill(start_color="222222", end_color="222222", fill_type="solid")
weft_color = PatternFill(start_color="EEEEEE", end_color="EEEEEE", fill_type="solid")
This is really just for reference. Our threading is straight draw down. Meaning one warp per heddle eyelet, sequentially. The threading is for a very simple twill and I think pretty easy for our purposes here.
threading = [i % SHAFTS for i in range(TOTAL_THREADS)]
This is again for our reference. We’re advancing our weave with twill and always lifting 4 shafts at a time to potentially avoid long floats. This is our base weave. We lift shafts 1-4, throw shuttle, lift 2-5, throw shuttle, 3-6, throw shuttle, and so on until we start at the beginning once again.
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},
]
This tracks how many picks has a warp been down. The max would be 4 as we stated at the top of the code. This reads 1 bit of data in which that 1 bit influences 1 pick. If bit equals 1 the weave rotates by one shaft (shifting the weave). If it equals 0, the weave remains the same (normal twill weave).
warp_down_count = [0] * TOTAL_THREADS
This starts with say that for every weft in the total number of threads. The twill repeats every 8 picks.
for pick in range(TOTAL_THREADS):
base_lift = BASE_LIFTS[pick % 8]
bit = binary_stream[pick % len(binary_stream)]
# Data-driven modulation
if bit == 1:
lift = {(s + 1) % SHAFTS for s in base_lift}
else:
lift = base_lift.copy()
If the shaft that the warp is threaded on is lifted the cell is filled, if warp is down the cell is not filled.
for warp in range(TOTAL_THREADS):
cell = ws.cell(row=pick + 1, column=warp + 1)
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
This makes sure we don’t have more than 4 floats in a row for any warp.
# Enforce max float
if warp_down_count[warp] >= MAX_FLOAT:
cell.fill = warp_color
warp_down_count[warp] = 0
ws.row_dimensions[pick + 1].height = 10
for col in range(1, TOTAL_THREADS + 1):
ws.column_dimensions[get_column_letter(col)].width = 1.5
wb.save(OUTPUT_FILE)
print(f"Weaving draft generated from text: {OUTPUT_FILE}")
I started weaving on my 8 shaft structo artcraft tabletop loom which the aforementioned pattern and this is kind of what it looks like so far close-up. I need to even out the tension because it doesn't look quite as good yet.
Updated BoM and Gantt here!
I finished my midterm presentation! Here it is!
As I was finishing my presentation, I started thinking about how my synth would work and how one could interact with it. I got this crazy idea: what if I made my body the potentiometer? You fold paper and through folding you can create an analog sensor based on folding. BUT what if I didn’t want to do that and just rely on the folding that the human body or human hand already does through joints. I just thought it was such a cool idea. More on this in the coming week!
Week 6 + 7¶
Midterm presentations! I presented my progress this week and it was harrowing.
No, it was actually fine. I think I did great! Here's some of the feedback I received.
Midterm - Mentoring Notes
I was recommended to look into the following:
- Lea's Jacquard Loom
- Clement Zheng's Sensing Kirigami Project
- Aristarco's LoomOne
- Riley's jacquard loom
- Collins Labs Electronic
Anastasia: colins lab! this is how i learned electronics, Afroditti psarra has nice work. lara grant as well
Cecilia: look at Rileys work! AMsterdam 2024
Claudia: I like the project being a sort of an instrument, interface and at the same time of an archive of stories.. is home then a temporary condition? // are you making a glove as well for a person to wear? can you connect that with processing? and create some visuals? also add an extra speaker for a louder sound // involve people to participate in the project so that you can speed up the testing phase / the project can be a performance and definitely a series of workshops // contact also jessica stanley would be nice to have a chat!
Louise: Very nice presentation Marissa, thank you. I am wondering if you could precise the type of data you are using and how it is related to home?
Carolina: Hi Marissa, so fun to see your code in the Loom! Certainly, the first computer codes were created for the loom. I hope you have time to finish all. Good work!
Stephanie: "Right into my field of interest :) Where does your data come from? What is the meaning of using these data and what do you want to communicate through the translation to image/texture? What do you want to convey? A Dutch artist/designer put an arduino on an old Jacquard loom https://www.instagram.com/reel/DTlDSdODbdc/?igsh=MTVtMXhqYXNod2hjNQ== Clement Zheng makes interactive paper mechanisms: https://clementzheng.info/ Also look at the Penelope project https://penelope.hypotheses.org/ which explores weaving looms and digital tools. I have also used my hacked knitting machine as a jacquard loom with Ayab: https://gitlab.com/svilayphiou/knit-tink ANd probably you know it, but the work of Unstable Design Lab is a must see, especially their software adacad.org
Anush: Such amazing progress! I’m really curious to see the final result! I would suggest working in parallel with the electronics on the visual aspect - how it will look - so you’re ready on time for your final project.
Troy Nachtigall echoed all of the above sentiments.
I got to meet with my instructor Louise last week and realized I HAD TO complete one working model of my project. So, effectively, my goals went from what's on the left to what's on the right.
I started working this week by fixing my calculations for warp yarn size, weft yarn size, and denting pattern. I started weaving with a 24/2 cotton yarn (warp) and a similar size crochet yarn. I really eyeballed the size of the weft yarn to go with my 24/2 yarn. The weights and sizes of yarn have kind of a different metric system I realized. Because my first weave was super loose, I knew I had to take not only yarn size into account but denting pattern.
I was able to weave a sample!
The part of the sample with the red weft is a simple advancing twill weave. The one with the dark purple weft and conductive yarn is the data influenced-weave.
With that, let me actually give a quick intro about weaving from what I've learned throughout this process.
Weaving 101¶
So this is a little late on this page but this is what I've learned in my experiences weaving for and outside this project.
Every loom is different but parts of the loom you have to keep in mind:
- Shafts - Lift some warps at a time to form a weaving pattern
- Heddle - Individual components in a shaft through which you thread the warp
- Heddle Eyelets - The hole in the heddle through which you thread a warp yarn
- Reed - Rigid, comb-like frame to space warp threads and comb weft yarn down as you weave
- Beater - holds the reed and is the tool you use to comb your wefts down as you pass your shuttle through
- Dent - Individual space within that reed
- Shed - The opening formed as you lift shafts to throw the shuttle through
- Warp and Cloth Roller(s) - The back and front rollers of the loom, respectively, you roll your warp onto and rotate as needed
- Breast and Back Beam - The top shelf, if you will, above the winders almost like a front winder, where your finished fabric rolls up into
- Apron Rod - Flat piece usually tied to the rollers where you tie your warp yarn to in the front and back of the loom
This is a pretty good simple diagram showing you some of the parts.
You do need a couple things outside of the loom to warp it.
You need a:
- Warping board - This is where you prepare your warp by typically wrapping it around pegs for the yardage and number of warps you need/want. You have to make sure the board has a yardage maximum of something you can work with. By that I mean, a small loom can have a smaller warp board (3-6 yards) and a larger loom needs a larger warp board or warping wheel (5-10 yards < ).
- Raddle - The raddle allows you to separate your warp ends and spread it evenly on the back beam to have even tension and prevent tangles.
- Lease sticks - When you prepare your warp, you form a cross to separate top and bottom warps. You need both top and bottom to create a shed which is ESSENTIAL to weaving on your loom. Otherwise, you wouldn't be able to throw your shuttle through and not be able to weave at all. You need 2 of these!
- Shuttle - This is what you wind your weft yarn onto and throw in between the shed.
Hooray! Onto math!
I'm going to start with WPI, EPI, PPI, and DPI.
The importance with this is how yarn size and weaving structures affect how you want your woven fabric to drape or feel, ultimately.
EPI determines how densely your warp threads are placed in the reed.
I may have mentioned this or not but wrap your yarn around a ruler for one inch without overlapping or spreading it out. This is your WPI.
Common Weave Structure EPI Assessments:
- Plain Weave: EPI = WPI/2
- Twill Weave: EPI = WPI x (2/3)
- Airy Weave: EPI < WPI/2
Using my example, I'm using a twill weave. Let's say I can warp 18 ends of my yarn onto an inch. My WPI is 18, multiply it by 2/3, my EPI = 12 ends per inch.
This is where you can make some samples on a small handloom or pin loom.
PPI is how many wefts you beat or comb back with your reed in an inch.
- Balanced Weave: PPI = EPI
You can control PPI by consistency in your beating. If the fabric is too dense, beat lighter; if too loose, beat harder.
I want a balanced weave so my PPI has to be 12 picks per inch like my EPI.
If you don't want a balanced weave, this is where sample making comes in! You know your EPI so you start with that and choose a yarn you have and start weaving essentially. You then take a ruler and measure how many weft yarns are in an inch. And of course you'll determine if it's looking the way you like.
So how the hell does this EPI and PPI mumbo jumbo come into play with your loom??
Your reed has dents and what matters here is how many dents there are in an inch or dents per inch (DPI).
You can take a ruler, put it against your reed, and literally count how many dents are in one inch.
My reed has a DPI of 18. If I want an EPI of 12, I can achieve this with a denting pattern. Maybe thread one yarn every other dent. Don't think you can only put one yarn in every dent. You can put 0 yarns in a dent or 3 yarns in one dent! It really depends on what your EPI is. There's actually a calculation you can do for this!
Here's how you can determine it.
- EPI/DPI = 18/12 = 1.5 or 1 1/2
This means you put at least one yarn in one dent but put 1 additional yarn in every 2 dents. So my denting pattern in this case is something like 1-2-1-2. I put this in the calculator I made near the end of this weaving 101 section! There's also this great resource on determining your denting pattern!
Let me give you another example: I prepared warp for 7 6"x6" samples. I calculated 126 warp ends with an EPI of 18. I assumed I would simply do a denting pattern of 1-1-1-1 meaning 1 yarn per dent but my fabric was loose as hell. More loose than I wanted. I then thought okay let me not waste my warp and rethread my dents to make it more compact. I rethreaded with a 2-2-2-2 denting pattern and it was great but now my final sample size would be like 3". I cut the width of my woven piece by doubling up yarn in my dents. I hope this makes sense.
Shrinkage/draw-in again is a factor here.
So now for yarn size, look up a sett chart. Here's a good one I found, but people publish these all the time online. Make sure you're looking for a sett chart specific to your weave type. In this case I look for a sett chart that lists a twill weave.
Consult a sett chart to compare yarn size to EPI and PPI against the type of weave you want.
Now to warping!
Warp Yardage
First thing to start off with is what size piece you want to weave, what type of weave, and the sett.
I want to weave pieces with a final size of 5"x5" (prefereably no fringe) with a twill weave that has a pretty balanced sett, meaning the warp and weft yarns are similar or same size.
Sett means spacing of the yarns. Warp sett is ends per inch or EPI and weft sett is picks per inch or PPI, like we talked about earlier.
- Finished length = 5"
I need to account for loom waste, or yarn that can't be woven. This includes the warp tied to the front and back apron rods.
Loom waste really depends on how big or small your loom is. Rule of thumb is the distance from your back beam to the front apron rod. Mine is about 13" BUT table looms usually produce a lot of loom waste. I read I should account for about 25" worth of loom waste on my Structo ArtCraft Loom.
So,
- Loom waste = ~25"
And then there's take up and shrinkage. You weave in tension. Which means when you remove your fabric off your loom, it will naturally shrink to a normal tension. You might also wash your sample because it's only when you wash it that it's officially woven. The fibers blend together and account for blank spaces in your weave.
It's 10% of your total percentage so,
- Take up/shrinkage = 100% + 10% = 110% = 1.10
My mind doesn't quite grasp this math yet but this is what it is.
- (Final length + Loom waste) x take up/shrinkage = (5" + 25") x 1.10 = 33" long warp
That's alot of warp for one piece! In this case, and as I was taught, it's best to prepare warp for as many consecutive pieces as you'd like. You will soon learn that it's less waste relatively and less of a pain to rewarp. Warping is no joke 0_0
Now to determine # of warp ends.
You need to determine your warp sett which we talked about in the WPI, EPI section!
Let's say for x yarn I have, my warp sett or EPI is 12, meaning I can wrap 12 yarns comfortably in 1 in of a ruler.
- Warp sett = 12
- Finished width = 5"
- Warp sett x finished width = 12 x 5" = 60"
Takeup/shrinkage = 1.10
- Total x takeup/shrinkage = 60" x 1.10 = 66 warp ends (round up)
So that's 66 warp ends I need for my piece.
Then you take,
- Warp length x total ends = 33" x 66 warp ends = 2178"/36" (to get yards) = 60.5 yds of warp
60.5 yards of warp is what you'll need.
If you want clean edges, especially for twill, add an extra warp yarn to both sides of your piece that's not threaded through a heddle. It floats while you weave and secures the wefts as you weave leaving the edges more clean and crisp! This is known as a floating selvedge.
One note, and this is probably explained in the warping video I attached below: Be sure to have paper, kraft or buther paper or really this thin kind of newspaper-like paper, as you wrap your warp onto your back winder. If you don't pack your winder with this and roll it up as you continue to wind it onto the winder, you WILL have some serious tensioning issues. You want to avoid that as much as possible.
Weft Yardage
Admittedly, I used a combination of tools like yarn size, dents in my reed, and just good ol' fashioned eyeballing that allowed me to move through this step in weaving.
BUT for all of our sakes, I'm going to layout a good structured method for you. Now that you know about EPI, PPI, DPI, WPI, warp yardage, etc., it should be okay!
Start with, your Width in Reed.
-
Total Ends/Weft Sett = 66/12 = 5.5" width in reed
-
5.5" x EPI = 5.5 x 12 = 66 weft passes
- 66 x final length = 66 x 5" = 330 x 1.10 (shrinkage) = 363"/36" = 10.1 yds of weft
Now, for actually preparing your warp. I was going to write up a section to prepare and sley your warp into your loom but it's honestly done better through video.
I found this really great video however!
I hope to upload a video of preparing and warping my loom once I have my final yarn in hand. We got this!
I hope that helps you in your journey and I'll update with a video of my own soon >:3
I also made a calculator!
It's a work in progress. It is only for a balanced weave, just so you know. Maybe you can add more to it if you're so inclined! Or create a copy! Whatever works best for you >:3
As I was working and considering my breadboarded binary synth and thinking a lot about my midterm presentation inspirations, I thought what if I made a textile analog theremin?
Initially, I said no, Marissa, don't do it, for the love of all that is holy, you're going to stress your instructor Louise out. BUT I started digging and digging and DIGGING. Not just online but in my own self.
I've moved around so much that when I'm asked where I'm from I often don't know how to answer. But I've felt at home in places I've had absolutely no history with. Why? Could it be a past life clawing at the back of my soul saying hey you've actually been here before, centuries ago? I've reflected recently that "home" is not a place, not even a feeling really - I think it's the reverbation you feel in the deepest pit of your soul that your authentic self is validated. You feel seen. You see a desert sunrise in the early hours of the morning, it's so beautiful it's enough to make you cry. The desert "sees" you, without judgment, and it's beauty envelopes you in this warm embrace. You feel comforted. I had a text conversation with one of my peers Porpla today over Mattermost about weaving and project building and working with sleepy and teary eyes. THAT I can honestly say made me feel at home. There's a resonance, a frequency in these connections to things and people and places and experiences themselves that we feel and inhabit. Even in tragedy, both current and historic, this sentiment rings true. We can honor the lives of indigenous or enslaved people, for example, through their oral traditions, their art, their current generations, and their fight to not only preserve their traditions but remake them. Home is connection to the self through love, art, beauty in it's most purest form.
So, with my aforementioned thoughts about "home" and theremins, and considering the time I have left, I discovered making a theremin is both relatively simple and not that different from my current setup! It can be done with less components and less modules.
My goal this week was to prototype one woven oscillator, one folded potentiometer, and one sound amplifier. I did build a small breadboard amp with a little chip called the LM386.
And I did make one oscillator! Actually two oscillators! One for the analog synth and one for a theremin :D I breadboarded them first then I wove my first sample. Until of course I plunged into a theremin vortex.
So THEREMINS
Theremins 101¶
The theremin is an electronic instrument invented by Russian physicist Leon Theremin in the late 1910s. Contrary to largely, if not, the totality of touch-based instruments at the time, the theremin is touchless. It uses 2 antennas to create invisible electromagnetic fields which allows a person to control pitch and volume through hand gestures and subtle hand gestures at that.
The vertical antenna is for pitch. The horizontal loop antenna is for volume. They create a sort of electromagnetic field.
It contains 2 oscillators that produce electrical signals - one fixed and one variable.
A person's body acts as a capacitor which disrupts the electromagnetic field bubble.
They would use their right hand to move closer or farther from the vertical antenna which changes capacitance. It alters the variable oscillator's frequency making higher or lower pitch notes. This, again, controls pitch.
The left hand is near the horizontal loop antenna which affects volume. The closer you are, the quieter it is. The farther you are, the louder it is.
Then you have a mixing circuit which combines signals from both oscillators. The difference between both oscillators' frequencies which is the beat frequency is amplified and sent to a good ol' speaker.
TLDR; I need, electronics-wise, a:
- Fixed oscillator (no textile and not affected by hand gestures; stable) - BUILT
- Variable oscillator - Same circuit as fixed but one different resistor
- Mixer - 2 diodes + resistor
- Low pass filter (optional?) - not sure?
- Amplifier - BUILT using LM386 but will be using my friend Juan's 10W portable guitar amp
Textile-wise:
- 2 woven pieces for 2 antennas! :) Pitch and volume :)
- Two datasets that resonate with each other (ayyy! you see what I did there?? heh heh heh)
- Warp and Weft Yarn Colors
Wearable-wise:
Theremins are controlled by bare hands. E-textiles are relatively weak and so I thought if I developed some very simple conductive hand capacitors in the form of paper ruff bracelets, it would make the interaction stronger. Also for proper grounding.
- Buy final paper type (most likely washi paper) or make paper
- Buy conductive fabric?
So I was able to breadboard a theremin circuit with all of the parts I intended: a fixed oscillator, variable oscillator, mixer, RC filter (or VCA) and amplifier. :)
Now, let's just pause a bit. These circuits... what do they do, how do they work, what do they mean?
Well, I don't want to get into the weeds too much but let's try to break down how this circuit works briefly.
The components I found useful to work with are:
- a variety of ceramic capacitors
- a variety of electrolytic capacitors
- 10K potentiometer (for testing purposes)
- a variety of resistors
- 1N4148 diodes
- LM386 amplifier (for testing, unless you want to keep it as a final)
- 1 8 Ohm speaker
- 1 9V battery
- 9V battery clip for breadboard
- CD40106BE IC
- LM13700N IC
- Breadboard
- Jumper wires
A theremin is basically an electrostatic field and your body, when you play it, interferes with that field.
A capacitor, as we know in our time in Fabricademy (or maybe you don't know and that's okay! :3), is 2 conductive plates sandwiching an insulator. In a theremin, the antenna is one conductive plate, your hand is the other conductive plate, and the air is the insulator.
As you move your hand closer to the antenna, you are physically changing the geometry of this "human capacitor." Because you are grounded through the conductive bracelet I'm weaving, you are able to "store" more charge relative to the antenna. This increases the capacitance of the oscillator.
The CD40106BE is a what's known as a Schmitt Trigger. It has multiple pairs of pins that act as inputs and outputs. It just checks at the input pin whether the voltage is high or low. The resistor between the input and output pins. For instance, let's use something I used - pin 1 is my input, pin 2 is my output. The resistor between these 2 pins pumps electrons into the antenna and capacitor at pin 1. Voltage rises and when it hits the "high" the CD40106 flips its output to "low." At that point, the resistor starts "draining" electrons away. When the voltage hits "low" from draining electrons the chip flips back to "high."
When you move your hand closer, you increase the "storage capacity" or capacitance of that input pin. This makes the voltage flips between high and low happen slower, which results in a lower frequency.
You can determine frequency through a relationship between resistance and capacitance.
f = 1/(RxC)
- R: resistance in ohms
- C: capacitance in farads (F)
This talk of frequency takes us to heterodyning!
We as humans can't hear the frequency of one oscillator. A CD40106 oscillating with an antenna usually runs at radio frequencies or 100,000Hz which is way too high for humans to hear. The loudest we can hear is 20,000Hz.
Heterodyning helps this!
Let's say the fixed oscillator vibrates at 100,000Hz.
The variable oscillator vibrates at 100,000Hz too but as you move your hand closer to the antenna, it changes to 99,000Hz.
The waves from the fixed and variable oscillator collide at the mixer and create a beat frequency from the difference between the frequencies. So in this example you hear 1000Hz and you can in fact hear it!
NOW for the LM13700N. This is known as an operational transconductance amplifier or OTA. In a regular amplifier (like the LM386 in my case!) the fixed gain or the thing that amplifies sound amplifies it by about 10 usually.
In an OTA, the fixed gain isn't fixed. It's determined by the current or electrons flowing into pin 1.
As your hand moves toward the volume Antenna, you are taking the current away from the chip. With less current, the LM13700N becomes "less efficient" at passing the signal. The pathway for the electrons of the sound gets narrower and narrower until it closes completely, creating the fade-out effect. When you pull your hand away or closer from the antennas the sound doesn't cut off immediately, it fades out instead.
The LM386, again, is just an amplifier, making the sound of the frequency difference audible to you and me.
Hope this helps! I know it'll help future Marissa.
I bought some IC chips that would then replace the RC filter for a VCA to be able to add a woven volume antenna instead of having the volume potentiometer but they were all fried. And yes the window to return them had just passed the day before. Fucking awesome, right? But hey we can't be stopped!
This test is with my woven piece connected but most of the interaction or pitch change comes when I touch the pitch pin itself. My woven textile is not as strong an antenna.
I then tried by placing a piece of conductive fabric underneath the woven textile and it seemed to be a stronger antenna!
I made the executive decision to weave the pitch and volume antennas with thin bare copper wire. I will also be weaving the electronics onto a separate textile with thin 30 AWG enameled copper wire. These antennas will be 5-6" x 20".
I went camping recently and not only that I went to a recreational equipment store. I really liked some of the color schemes on old vintage patches for environmental consciousness at the store. I'll be buying weft and warp yarn along these colors tomorrow :)
Like I said, I'm waiting for the LM13700 IC chip to come in. This is what will enable the VCA to replace the RC filter and the volume pot with a woven volume antenna.
To convert your hand into stronger capacitor is one thing but grounding is essential. With e-textiles I anticipate a lot of finickiness to take place. I figure if I still weave conductive bracelets to increase capacitance and MAINLY ground a person's body while playing, they'll be super useful.
This is a working layout of how things "look" and are laid out together.
It's funny actually I remember I used to go to Palm Sunday at Catholic Mass every April and my dad would weave crosses and pretty structures with palm leaves distributed before mass.
I thought what a cool way to potentially make a bracelet with washi paper and conductive fabric!
I used some of my washi paper and copper tape. I cut 5 1" strips from my square paper and glued them together. No precision really, just kind of wanting to make a long strip of paper. I let it dry a bit before placing the copper tape on the underside of it. I joined the 4 long strips into a cross and instead of gluing I just used a sewing pin to hold them. Then I started weaving the papers together. I end up with this square/diamond looking structure. It's nice! The paper isn't long enough but once you run out of paper to weave with, you glue more strips to the leftover strips on the weaving to continue until the end.
I used a multimeter to check the continuity between the copper tape and there actually is when the structure is compressed, not stretched. So if I want to make a bracelet of this that acts as a grounding bracelet then I have to make sure I pack as many of these in that it's sufficiently compressed when worn.
I like it though!
Week 8¶
Project Progress - Mentoring Notes
I wasn't all that enthused about the feedback honestly. Scratch that. I actually think I've reached a point where my project has now become my "ugly baby". You can't always look at what you're doing endearingly and I have to say I'm tired of what I'm building xD BUT this is normal, people. This is SUPPOSED to happen. In my opinion at least.
Emma advised me to keep in mind that my antennas have to be strong enough. And that she misses a bit about how the data might affect the synth.
Anush encouraged me to keep going and that she's actually building a synth herself with TPU (pretty cool!)
Louise (on Mattermost): Hello Marissa, thank you for sharing your project and advancements during our meeting! I really appreciate you documenting your experimentations. I think that regarding the storytelling it is more about the experience of the user "trying" your home through the instrument than about the building of the instrument itself. What I mean is maybe you should try to reframe it as "the experience you get" more that "the product you get". Not sure how much it helps but I will be glad to discuss it more on here. Good luck for the remaining work!
As you know at this point, I shifted from building a data-driven binary synth to a data-driven theremin. The binary synth would have had various integrated circuits and a lot of other moving parts but it would be, in my opinion, a little more stable. Because it's about electrical connections and resistance, etc.
The theremin has less moving parts but it's a little less stable. Because it's not just about how electricity travels but how frequencies subtract to create an audible sound.
I've effectively gone from being an "electronics engineer" to a "weaver/textile artist". At this point I think it's important to ground the project. As my dad says, it's time to change my overalls to that of a "researcher".
What is home, really? Well in 2012, Verlyn Klinkenborg asked the same the question in their article The Definition of Home.
"Be it ever so humble, it’s more than just a place. It’s also an idea — one where the heart is"
Klinkenborg acknoweldges the physical and spatial nature of a "home" but posits whether "home" is embedded in our human consciousness, is it instinctive since we started wandering the land as bipeds? It almost undergoes the metamorphosis of inquiry that presents the mirror back on ourselves: at my root, at my core who am I? Who are we?
Do I give meaning to things or do things give me meaning?
The development of my theremin uses data as a primary material, a very important material that is supposed to offer a window into what my "home" is at the very least.
In the workshop and resulting paper Data as a Material for Design: Alternative Narratives, Divergent Pathways, and Future Directions (Matthew L. Lee-Smith, Jesse Josua Benjamin, Audrey Desjardins et al.), the authors/organizers argue that data is often used for utilitarian purposes to improve our lives but the conversations and efforts are diverting away from the latter.
As they say "[That] data-interaction design space is expanding... Recent and ongoing research is []... proposing alternative narratives. These alternative narratives explore a variety of concepts and values such as ephemerality, decay, negotiation, diffraction and (re)interpretation, subjectivity, locality, invisibility, and the interaction with analog data. When these narratives are embodied in design “outcomes” they allow us to experience other possible worlds where data is not only a straightforward means to an end but a malleable material that can be shaped to create a diverse range of experiences."
Data in effect becomes a smart material e.g. it can be both collected and shaped into various tangible experiential or ideated forms e.g. "worlds", "home".
I'm materializing data through weaving and sound to in essence materialize the idea of "home".
However, there are several negotiations that happen here.
- Meaning - Objects don't have meaning, I argue, unless we give it to them as does a "home".
- Sustainability - Materializing data in "object-form" for personal expression while making space for intangible experience, decay, end-of-lifecycle processes, and the temporal nature of human existence.
- Physical and Spatial Realities - The physicality of "home" is real. Peoples have been displaced from lands since the dawn of human civilization. In the U.S., there's a sordid and candid history of displacing people from their homes and their communities as we've witnessed in the modern day. We cannot ignore this reality.
I could spend days, WEEKS even, rifling through data that matters to me - in fact, I have. Choosing my datasets to weave has been one, if not, the hardest aspect of this project.
Many "things" make me feel at home. Then I thought about it a little deeper. "Home" has often been purely a domestic space associated with women, who were expected to uphold, revere, and maintain the "home". My mother, grandmother, and grandaunt even certainly were no exceptions. I doubt they had a lot of time or resources to develop or design their own sense of home. One perhaps predesigned for them. Through their sacrifices and lived experiences, I have.
It wasn't always like that. The intergenerational shame that is carried from land to land, generation to generation, woman to woman. I had to do a lot of work as a girl and growing woman to craft a sense of "home". And craft indeed is an apt word.
Oral Traditions, Feminist Narratives
I decided one set of data would be text coming from my mother and grandmother answering some of my questions about themselves. Any questions might be biased because I have inherent bias and other things I may not be fully aware of.
The other data would come from me and the ideas that have shaped my "home" and empower me to keep making and maintaining it.
And I place my "home"board here to show it is a reflection of femme ideas I'm inspired and empowered by.
A feminist artist-collective called Chicks on Speed in Australia made a woven theremin called Theremin Tapestry in collaboration with Hangar in 2009. I wanted to acknowledge it here.
I bought my yarn today. Perhaps I'll buy one more but for now this is it. I bought one white wool yarn and may dye it with local dry cornflower petals. I belabored over this as well. What do my yarn colors mean, should they mean something?
I chose colors I love. Perhaps another time I'll develop a language of color through weaving and data. For now, I chose colors I love and that have enough contrast to better visualize data.
I'll be buying the appropriate washi paper within the week for the bracelet.
A lot has happened in the time since last.
My code, given my loom operates on 8 shafts, can only take so much data. No exaggeration. REALLY. My code would take about 45 characters for my 5"x20" piece. That's about 10 words or a couple of numbers. I edited the code to have one pick in the weaving represent 3 bit chunks. So then it would increase my data limit to 25 words. I mean it's not a lot more but it's something.
Here's my new code. I'll attach this as a .py file as well.
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.")
I formulated questions for my mother and grandmother to answer. Long answers are expected but I'll give them the note to try to answer each in short answers. SUPER difficult, I know. But it's a starting point.
What is one thing you would tell your younger self knowing what you know now?
¿Qué cosa le diría a usted más joven si supiera lo que sabe ahora?
- Mother: Nunca te rindas. Logres tus sueños.
- Grandmother: Esta de la fregada estar bien viejo uno.
When or where do you feel most yourself?
¿Cuándo o dónde se siente más como usted misma?
- Mother: When I turned 30.
- Grandmother: Aqui en el valle.
What do you love about yourself?
¿Qué le gusta de usted misma?
- Mother: Being honest.
- Grandmother: Estar bromeando aunque no este cachonda.
If you could do life over again who would you be?
Si pudiera volver a vivir, ¿quién sería?
- Mother: Yo misma. No me cambiaria el apellido.
- Grandmother: Una persona mas diferente, mas alegre.
What's the most painful thing you've experienced? What's the most beautiful thing you've experienced?
¿Qué es lo más doloroso que ha vivido? ¿Qué es lo más hermoso que ha vivido?
- Mother: Cuando mis hijos me hacen un desaire. Te voy a decir dos - cuando vi a mis hijos chicos. And the mountains. My beautiful children, now and in the future.
- Grandmother: Tener el marido a chingue chingue. Tener unos sus hijos.
What do you think is your life's purpose?
¿Cuál cree que es el propósito de su vida?
- Mother: To help others. Anybody.
- Grandmother: Que sus hijos no se condenen.
How would you define "home"?
¿Cómo definiría "hogar"?
- Mother: Beautiful.
- Grandmother: Cuando estoy con mi gente.
I recorded my conversations with my mother and grandmother.
My mother and grandmother's words are my volume antenna.
I've answered the same questions and put them into a file called daughter.txt. My answers are the pitch antenna. And I really don't want my answers to be the focus of my pitch antenna but my thinking is it's the contrast of "home" views that create the theremin's sound which in essence makes a home as well.
Here are the results of my code and what my weaving patterns should look like.
Week 9¶
Needless to say, I'm really behind. I ended up weaving a 5"x10" piece for my grandmother-mother volume antenna but that's okay. Typically the volume antenna is much smaller. The reason that happened is because I indicated my PPI as 15 (given it's a twill weave) AND my code assumes my copper wire is the same size as my yarn. Well, I had to tweak it a little for my pitch antenna and just set the PPI to 30 to double the length. We've got to make some smart shortcuts at this stage. I'm now weaving my pitch antenna, which will be 5"x20". I ended up using 20AWG gauge wire for my floating selvedges but I thought it would provide the antenna with much more stability. The copper wire being used as wefts is in fact still 30AWG. The 20AWG is not the best for weaving onto the fabric winder but I made it work by being extra careful as I pulled in more warp to continue weaving. I'll also be weaving a small piece for my electronics to be housed on.
A lot of weaving to do but it's happening as we speak!
I also just received my washi paper for my grounding bracelet. Ah look at the beautiful peach colors. I would have wanted to make my own paper. Alas, no time.
Week 10¶
- Finished woven pitch antenna
- Finished woven electronics piece w/ electronics
- Finished woven grounding bracelet
- Refined story script
- Refined shooting/filming storyboard
Week 11¶
- Final testing
- Editing?
















































