A software tool that subverts traditional weaving by introducing intentional error, or "glitches."
Glitch Weaving subverts traditional weaving by introducing intentional errors, or “glitches,” into the algorithmic pattern process. While glitch can imply unexpected error in computing, Glitch Weaving embraces the serendipity and beauty of the unexpected and creates altered weaving drafts that are deterministic and repeatable glitches. It is specifically tailored for use on a table loom, bridging the gap between digital art and manual craftsmanship. Users of Glitch Weaving are engaged in a dynamic process where they generate, evaluate, and ultimately select altered patterns to weave by hand. By doing so, Glitch Weaving invites a deeper exploration into the symbiotic relationship between human creativity and machine precision in the realm of textile art. This tool adds to the landscape of glitched textiles in art, design, and commerce, pushing against the boundaries between traditional craft and contemporary digital art.
Glitch Weaving is an open-source software tool that infuses deterministic, algorithmic glitches into woven textiles [1]. This computational tool transforms woven patterns by altering the lifting sequence of frames on four- or eight-shaft table looms, referred to as 'glitches'. Traditionally, a glitch implies an unwelcome error, but in the design space of Glitch Weaving, it represents a deliberate divergence, celebrating the allure of the unforeseen. In Legacy Russell's Glitch Feminism, a glitch signifies a departure from binary norms, heralding a realm of untapped possibilities [2]. Glitch Weaving embodies this philosophy, merging the aesthetics of unpredictable change with the precision of computational processes.
Users working with Glitch Weaving input a weave pattern as a base and glitch their weave draft using manual input on a keyboard. The lift plan indicates how to manually operate a table loom, and glitches occur in these instructions, creating weaving drafts that alter the number and position of shaft lifts on each row, producing a textile design that can be woven on a table loom. In Figure 1, an example of a glitched weave is shown alongside an unaltered sample. The base pattern for both samples is made in black and white yarn, and the glitched rows are highlighted in teal.
In this paper, Glitch Weaving is shared through its technical implementation, diverse applications, and the balance between human creativity and machine-driven error generation. Our discussion aims to unfold the layers of this unique human-machine interaction, highlighting how Glitch Weaving not only disrupts traditional textile practices but also offers a new perspective on the creative potential of errors.
The intertwining of computing and weaving traces back to a revolutionary invention: the Jacquard loom. In the early seventeenth century, Joseph Marie Jacquard's loom, with its hole-punched cards dictating thread manipulation, foreshadowed the digital era [3]. These cards were the precursors to modern computer programming, and today's computer-controlled Jacquard looms are essential for mass-producing intricate textiles. Building on this history, contemporary researchers, artists, and designers delve into the aesthetic of errors in weaving, interpreting computer and data glitches as a new form of expression. David McCallum, in his doctoral dissertation Glitching the Fabric, investigates glitch art in new media through the lens of textile techniques [4]. He produced an impressive array of knit and woven samples that tell stories of error in cloth, including a series on introducing error through recursion, wrong-pedal pressed, and noise. Japanese artist and fashion designer Nukeme provocatively introduces errors into digital files for weaving and embroidery, creating garments adorned with warped corporate logos like Pfizer, Internet Explorer and Chrome [5]. Faig Ahmed blends Azerbaijani rug-making traditions with modern practices of distortion and pixelation, hand-weaving rugs that challenge our perception of digital and analog art. His piece titled Expansion (2011) is a playful approach to glitch, distorting a woven rug as if inflated with air and about to burst [6]. Paola Torres Núñez del Prado infuses Peruvian textile design with e-textiles, interpreting cultural mistranslations into innovative designs. Her Corrupted Structure I-V series starts with a traditional pattern that quickly dissolves into disarray, infusing energy and chaos into the resulting pattern [7]. The allure of these patterns has transcended niche art circles, making its way into commercial products, with corrupted data designs now adorning household textiles [8]. This fascination with the aesthetics of error enriches our visual culture and prompts us to reflect on the nature and meaning of digital imperfection.
Glitch Weaving was initially built in Processing [9] and is also hosted on the web with p5.JS [10]. The system design consists of three components: a JSON file containing the weave pattern descriptors, the main Java or Javascript file, and the Graphical User Interface. In the original implementation, each weave pattern was defined in JSON by its name, the loom type, the lift plan, and threading. The loom type is defined in code as the number of shafts (e.g., four or eight shafts), and the lift plan indicates which shafts are lifted on each row, and is the section of the code that’s impacted by glitch. The threading indicates the tie up for the loom. The example below is an example of one weave pattern called Bird’s Eye on a four-shaft loom.
[
{
"name": "birdsEye",
"numShafts": 4,
"shafts": [
[1, 4],
[1, 2],
[2, 3],
[3, 4],
[2, 3],
[1, 2]
],
"threading": [1, 2, 3, 4, 3, 2],
}
]
The main script defines the behavior of both the weave draft creation and the glitch implementation. After drawing the grid structure for a weave draft, glitch is applied to the lift plan with glitchLiftPlan()
. The purpose of this function is to remix the lift plan by adding, removing, or swapping shafts to lift.
glitchLiftPlan() {
let currRow = 0;
let currSection = 0;
for (let i = 0; i < this.liftPlanData.length; i += this.glitchSectionSize) {
let sliceSize;
if (this.liftPlanData.length - currRow > this.glitchSectionSize) {
sliceSize = this.glitchSectionSize;
} else {
sliceSize = this.liftPlanData.length - currRow;
}
// Take a slice of the lift plan
let slice = this.liftPlanData.slice(i, i + sliceSize);
// Perform the glitch operation
let glitchSection = this.gradientGlitch(slice, currSection, currRow);
for (let j = 0; j < glitchSection.length; j++) {
if (currRow < this.liftPlanData.length) {
this.liftPlanData[currRow] = glitchSection[j];
currRow++;
}
}
currSection++;
}
}
The manipulation type is selected using a Perlin noise field, which was created by Ken Perlin in the 1980s for graphical applications to generate organic-looking, computational designs [11]. The function perlinChoose()
uses the Perlin noise value returned by noise()
to select a type of glitch to perform: add a shaft, remove a shaft, or swap a shaft.
perlinChoose(numItems, px, py) {
px = px + pan; // Add offset when panning
// noise() returns a value between 0 and 1
let trim = 0.3;
let pNoise = noise(px / pZoom, py / pZoom); // 0..1
// Adjust noise value within the trimmed range
if (pNoise < trim) {
pNoise = trim + 0.01;
} else if (pNoise > (1 - trim)) {
pNoise = 1 - trim - 0.01;
}
// Map the noise value to a number between 0 and numItems
let selected = Math.floor(map(pNoise, trim, 1 - trim, 0, numItems));
return selected;
}
Using Glitch Weaving, users immediately engage with the core concept of intertwining digital art and traditional craftsmanship. At the start, the software displays a weave draft with initial glitches, inviting users to modify the design. This interaction is pivotal, as users adjust glitch frequency and Perlin noise field sampling through keyboard commands. There are two parameters users can control: the glitch frequency and the Perlin noise field sampling. Increasing and decreasing the glitch frequency and panning or zooming around the Perlin field to sample new values create new glitched designs. These adjustments not only alter the visual outcome but also embody the user's role in shaping the interplay between algorithmic precision and human creativity.
The user's influence is visually represented in the drafts, with color-coding indicating the glitched rows - a direct reflection of their input. This experience of manipulating and saving unique designs, as seen in Figure 2, encapsulates the essence of Glitch Weaving. It highlights the user's active participation in a digital crafting process where their choices have a tangible impact on the evolution of textile design, bridging the gap between traditional weaving practices and innovative digital art.
In order for the user to know how to weave glitched rows, the darker pink cells represent a lifted shaft and light pink cells are lowered shafts. The highlighting is intentional to indicate to the weaver that something out of the ordinary is happening and to pay careful attention. Users can also save their designs, and embedded in the filename are the parameters needed to recreate the exact same design with glitches in the tool. The reproducibility facilitates users to return to designs in the future to iterate and build off past ideas as well as share their design with others.
Early prototypes employed various techniques to visualize errors in the cloth. In Figure 3, a single glitched twill pattern demonstrates three distinct methods of representing glitches. The top sample leaves the glitch unmarked, inviting the viewer to discern the pattern irregularities independently. The middle sample employs teal yarn to accentuate the glitched rows, using color as an intuitive visual cue to signal change. The bottom sample adopts a tactile approach, utilizing snags and loops of varying sizes to visually and texturally reflect the frequency of glitches. Each method of glitch representation imparts unique meaning and insight into the alterations within the textile patterning, offering diverse perspectives on the interplay between error and design.
The sampling process in Glitch Weaving produced numerous small rectangles of cloth, which closely resemble patches ideal for mending garments. This serendipitous byproduct has been creatively repurposed; selected woven designs have been used to mend and upcycle clothing. This approach, essentially fixing error with error, is demonstrated in the denim jacket adorned with a Glitch Weaving patch seen in Figure 4. This application not only highlights the practical use of Glitch Weaving but also embodies the conceptual merger of imperfection and repair in the context of fashion.
Glitch Weaving reimagines traditional weaving patterning through algorithmic design. Central to this process is the ability to create random-looking lift plan alterations that preserve the draft's integrity and ensure its reproducibility. The use of a Perlin noise field introduces pseudorandom yet deterministic modifications, allowing for the creation of patterns that are predictable in structure yet uniquely flawed. This approach to repeatability, a key aspect of traditional weaving, means glitch patterns, while appearing random, can be reproduced consistently. This characteristic paves the way for potentially standardizing certain glitch patterns, akin to conventional weaving designs.
In Glitch Weaving, the user’s role is significant. While the algorithm provides the basic framework, the user has the autonomy to influence the final design, choosing the base pattern and adjusting glitch parameters. This interplay between automated processes and human creativity positions the human element as a vital component of the design process. Such user intervention suggests a new perspective on errors in digital art and craftsmanship. It raises questions about the future potential of error-filled patterns in design. Glitches, introduced through a combination of algorithmic precision and human choice, have the potential to be as coveted as traditional patterns. Glitch Weaving imagines the possibility of new trends that celebrate anomalies as a central feature rather than a flaw.
Glitch Weaving explores the inherently algorithmic nature of weaving by integrating purposeful, reproducible errors into traditional patterns. As an software tool, it grants users the power to shape their own glitched drafts. This approach not only opens up avenues for novel pattern creation but also emphasizes the transformative role of glitches in guiding the future of textile design.
Deanna Gelosi is a computer scientist, artist, and PhD student at the ATLAS Institute in the College of Engineering and Applied Sciences at the University of Colorado Boulder. She is am a member of the Unstable Design Lab advised by Laura Devendorf and focuses her research on computational fabrication through design. Her interests combine computational tools and systems with materiality and craft techniques.