What is Freeside?

Freeside is a Georgia nonprofit corporation, organized to develop a community of coders, makers, artists, and researchers in order to promote collaboration and community outreach. Learn more »

A Capacitive-Touch Janko Keyboard: What I Did at the 2017 Georgia Tech Moog Hackathon

Last weekend (February 10-12, 2017) I made a Janko-layout capacitive-touch keyboard for the Moog Werkstatt at the Georgia Tech Moog Hackathon. The day after (Monday the 13th), I made this short video of the keyboard being played:

"Capacitive Touch Janko Keyboard for Moog Werkstatt"

(Text from the video doobly doo)

This is a Janko-layout touch keyboard I made at the 2017 Moog Hackathon at Georgia Tech, February 10-12. I'm playing a few classic bass and melody lines from popular and classic tunes. I only have one octave (13 notes) connected so far.

The capacitive touch sensors use MPR121 capacitive-touch chips, on breakout boards from Adafruit (Moog Hackathon sponsor Sparkfun makes a similar board for the same chip). The example code from Adafruit was modified to read four boards (using the Adafruit library and making four sensor objects and initializing each to one of the four I2C addresses is remarkably easy for anyone with moderate familiarity with C++), and code was written to send a gate (key down) signal to the Werkstatt, and to write a binary representation of the pressed key (low note priority) to an Arduino port connected to a precision R-2R ladder to generate the voltage for the VCO exponential input.

The capacitive touch sensors can be used to make a touch keyboard with any configuration, not just the Janko. With these sensors it's remarkably easy to make a functioning electronic musical keyboard, as no mechanical switches or moving parts are needed. The feeling is at least as responsive as a "real" keyboard, as response to touch and release feels instant as far as I can tell. If anything, there's a "problem" in that if you accidentally, even slightly, touch a key it will sound, whereas with a mechanical keyboard you have to "accidentally" press a key down for it to sound.

A traditional seven-natural-and-five-sharp-keys layout would have been just as easy, but less "interesting." I chose the Janko layout after having read about it for many years (see Paul Vandervoot's piano video "Demonstration of 4-Row Janko Keyboard" - he describes the layout at 4:06). The Janko has, from left to right, six whole steps per octave, thus is one less key wide per octave than the traditional keyboard, so with the same key spacings the Janko octave is a shorter distance. Going up or down diagonally is a half step, so a chromatic scale of all 12 notes is a zig-zag pattern. A major scale is the first three notes in a line (whole steps), diagonally up or down to the next key (a half step), this and the next three keys across (whole steps), and then diagonally again (a half step) to get to the octave key. You can start on any key and the major scale is the same description. This is the remarkable property of the Janko layout, there are very few patterns to memorize for the different scales and chords.

(End text from the doobly doo)

I used an Arduino Mega 2560 (actually the Inland brand compatible board from Micro Center), because I thought I would use more I/O pins than on an Uno. This project can be done on an Uno, but the direct write to the Mega DDRC and PORTC registers (and perhaps other I/O pin assignments) may need to be changed for the Uno. If you don't know how to use the AVR port registers directly, you may be better off just using a Mega 2560 rather than trying to change the code for an Uno.

No direct work for this project was done at Freeside Atlanta (nor at Georgia Tech's Invention Studio - I cut these pieces of wood to size at home using a circular saw just before going to the hackathon, then hot-glued everything together at the hackathon), but I did some preliminary work done at Freeside. I had been wanting to make some sort of Janko keyboard for a while, and in recent months I've 3d-printed a couple of rounded-rectangle "keys" to help get the feel of what I wanted. (The short time of a one-weekend build kept me from using anything other than a rectangle shape on this project, and even then I only had one octave done by 5PM Sunday.) I decided on key spacing the same as "standard" piano keys, which are about about 165mm (6.5 inches) per octave. Since the Janko layout has six (whole-step) keys per octave instead of the traditional seven (major scale) keys, this octave is about 141.4mm or 5.57 inches wide. The distance from one row of keys to the next above it is 1.8 inches, and each row up is 0.53 inches (the approximate heigth of a sharp note on a standard keyboard) higher than the previous. These numbers are mostly just "good guesses" as to what the dimensions of such a keyboard should be for good ergonomics. If you make one of these, feel free to make whatever changes you like, even a traditional key layout or something totally different.

The keys are made of brass strips. I had a brass sheet, dimensioned 6 inches by 24 inches by 0.004 inches. I cut this into rectangles of 1.5 inches by 0.75 inches. I soldered wires to one side and glued the soldered side down to a plywood board with hot glue. Each vertical pair arranged (first-and-third row, or second-and-fourth row) were connected together and connected to a sensor input on the MPR121 breakout board.

For greater versatility, each key could be connected to a separate sensor input (doubling the number of sensor inputs required). This would allow the vertical pairs to be "wired together" in software for the Janko layout, or for each key to generate a different note. This would be ideal for generating microtonal scales such as 24 notes per octave.

The current code implements a monophonic keyboard for a single voice analog synthesizer. The keyboard priority is for the lowest note played, and retriggering is off (you have to lift off all keys and press a key again to get a new gate signal). Many enhancements can be done, such as highest or last note priority, retriggering, and sending polyphonic MIDI data, and adding adding modulation wheels on the left side for pitch bend, LFO modulation amount, and other possible performance parameters (I think there should be at least three such wheels, with the third one changing the filter cutoff frequency). These are, as always, left as an exercise for the student.

Blatant Blurb for Synthesizer Class

This Tuesday, February 21 2017, I'll be putting on a class at Freeside:
"Introduion to Electronic Musical Instruments."
I'll cover analog music synthesizers, and have this Janko keyboard instrument and others in the Synth Petting Zoo after the class. There is a $10 charge, this covers the time and cost of setting up and of using Freeside to put on this class. Sign up here:

Schematic (power supply connections for Werkstatt and Arduino not shown):

Arduino code:

// tkey - read capacitive touch keys and control Werkstatt
// Ben Bradley Feb. 11-12, 2017
// for Moog Hackathon

// substantial code taken from the MPR121test program from the
// Adafruit library.

// From other keyscan program for the Mega2560:

// AVRpin AVR name   Arduino name
//   1    PG5         D4
//   2    PE0         D0
//   3    PE1         D1
//   4    PE2
//   5    PE3         D5
//   6    PE4         D2
//   7    PE5         D3
//   8    PE6
//   9    PE7
//  12-18 PH0-PH6     D17-D16,X,D6-D9
//  19-26 PB0-PB7     D52-D50,D10-D13
//  27    PH7
//  28-29 PG3-PG4
//  35-42 PL0-PL7     D49-D42                   // out to r-2r ladder
//  43-50 PD0-PD7     D21-D18,X,X,X,D38
//  51-52 PG0-PG1     D40-D41
//  53-60 PC0-PC7     D37-D30             ***  Voltage control output, port C
//  63-69 PJ0-PJ6     D15-D14,X,X,X,X,X
//  70    PG2         D39
//  71-78 PA7-PA0     D29-D22             ***
//  79    PJ7
//  82-89 PK7-PK0     A15-A8
//  90-97 PF7-PF0     A7-A0
//  98    AREF

This is a library for the MPR121 12-channel Capacitive touch sensor

Designed specifically to work with the MPR121 Breakout in the Adafruit shop
  ----> https://www.adafruit.com/products/

These sensors use I2C communicate, at least 2 pins are required
to interface

Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries. 
BSD license, all text above must be included in any redistribution

#include <Wire.h>
#include "Adafruit_MPR121.h"

// You can have up to 4 on one i2c bus but one is enough for testing!
Adafruit_MPR121 chip1 = Adafruit_MPR121();
Adafruit_MPR121 chip2 = Adafruit_MPR121();
Adafruit_MPR121 chip3 = Adafruit_MPR121();
Adafruit_MPR121 chip4 = Adafruit_MPR121();

// Keeps track of the last pins touched
// so we know when buttons are 'released'
uint16_t lasttouched1 = 0;
uint16_t currtouched1 = 0;
uint16_t lasttouched2 = 0;
uint16_t currtouched2 = 0;
uint16_t lasttouched3 = 0;
uint16_t currtouched3 = 0;
uint16_t lasttouched4 = 0;
uint16_t currtouched4 = 0;

const int GateOut = 48;   // Mega digital output

void setup()

  while (!Serial) { // needed to keep leonardo/micro from starting too fast!
//  Serial.println("Adafruit MPR121 Capacitive Touch sensor test");

//   The MPR121 ADDR pin is pulled to ground and has a default I2C address of 0x5A
// You can adjust the I2C address by connecting ADDR to other pins:
// ADDR not connected: 0x5A
// ADDR tied to 3V: 0x5B
// ADDR tied to SDA: 0x5C
// ADDR tied to SCL: 0x5D

  // Default address is 0x5A, if tied to 3.3V its 0x5B
  // If tied to SDA its 0x5C and if SCL then 0x5D
  if (!chip1.begin(0x5A))
    Serial.println("MPR121 chip1 not found, check wiring?");
    while (1);
//  Serial.println("MPR121 chip1 found!");

  if (!chip2.begin(0x5B))
    Serial.println("MPR121 chip2 not found, check wiring?");
    while (1);
//  Serial.println("MPR121 chip2 found!");

  if (!chip3.begin(0x5C))
    Serial.println("MPR121 chip3 not found, check wiring?");
    while (1);
//  Serial.println("MPR121 chip3 found!");

  if (!chip4.begin(0x5D))
    Serial.println("MPR121 chip4 not found, check wiring?");
    while (1);
//  Serial.println("MPR121 chip4 found!");

  Serial.println("All chips found.");

  DDRC = 0xff;
  PORTC = 0;
  pinMode (GateOut, OUTPUT);
  digitalWrite(GateOut, 0);
} // void setup()

void loop()

  int notepressed = -1;
  // Get the currently touched pads
  currtouched1 = chip1.touched();
#ifdef __print_touched_
  for (uint8_t i=0; i<12; i++) {
   // it if *is* touched and *wasnt* touched before, alert!

    if ((currtouched1 & _BV(i)) && !(lasttouched1 & _BV(i)) )
      Serial.print("c1 "); Serial.print(i); Serial.println(" touched");
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched1 & _BV(i)) && (lasttouched1 & _BV(i)) )
      Serial.print("c1 "); Serial.print(i); Serial.println(" released");
#endif #ifdef __print_touched_

  currtouched2 = chip2.touched();
#ifdef __print_touched_
  for (uint8_t i=0; i<12; i++)
    // it if *is* touched and *wasnt* touched before, alert!
    if ((currtouched2 & _BV(i)) && !(lasttouched2 & _BV(i)) ) {
      Serial.print("c2 "); Serial.print(i); Serial.println(" touched");
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched2 & _BV(i)) && (lasttouched2 & _BV(i)) )
      Serial.print("c2 "); Serial.print(i); Serial.println(" released");
#endif #ifdef __print_touched_

  currtouched3 = chip3.touched();
#ifdef __print_touched_
  for (uint8_t i=0; i<12; i++)
    // it if *is* touched and *wasnt* touched before, alert!
    if ((currtouched3 & _BV(i)) && !(lasttouched3 & _BV(i)) ) {
      Serial.print("c3 "); Serial.print(i); Serial.println(" touched");
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched3 & _BV(i)) && (lasttouched3 & _BV(i)) )
      Serial.print("c3 "); Serial.print(i); Serial.println(" released");
#endif #ifdef __print_touched_

  currtouched4 = chip4.touched();
  for (uint8_t i=0; i<12; i++)
    // it if *is* touched and *wasnt* touched before, alert!
    if ((currtouched4 & _BV(i)) && !(lasttouched4 & _BV(i)) ) {
      Serial.print("c4 "); Serial.print(i); Serial.println(" touched");
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched4 & _BV(i)) && (lasttouched4 & _BV(i)) )
      Serial.print("c4 "); Serial.print(i); Serial.println(" released");

  if ((lasttouched1 != currtouched1) ||
      (lasttouched2 != currtouched2) ||
      (lasttouched3 != currtouched3) ||
      (lasttouched4 != currtouched4))
    // find lowest note.

    if (currtouched1)
      for (int8_t i=11; i>=0; i--)
        if (currtouched1 & _BV(i))
          notepressed = i;
    if (currtouched2)
      for (int8_t i=11; i>=0; i--)
        if (currtouched2 & _BV(i))
          notepressed = 12 + i;
    if (currtouched3)
      for (int8_t i=11; i>=0; i--)
        if (currtouched3 & _BV(i))
          notepressed = 24 + i;
    if (currtouched4 & 0x01)
      notepressed = 36;     // highest key
//    Serial.print("lowest note ");
    if (notepressed != -1)
      PORTC = 37 - notepressed; // invert bits for negative sum
      Serial.print (' ');
    if (currtouched1 | currtouched2 | currtouched3 | currtouched4)
      digitalWrite(GateOut, 1);
      digitalWrite(GateOut, 0);
  } // if ((lasttouched1 != // note changed

  // reset our state
  lasttouched1 = currtouched1;
  lasttouched2 = currtouched2;
  lasttouched3 = currtouched3;
  lasttouched4 = currtouched4;

} // void loop()

What to Do With a Stack of Picture Frames?

When You Have Too Much Free Stuff!

Our newest member Raul got his hands on a stack of about 40 picture frames that were being junked. On a general note Freeside tends to discourage large piles of objects randomly appearing as it tends to collect in corners. Raul got permission from our projects team with a time limit of a few weeks. In this case unnecessary, as the membership more or less attacked the pile of boxes and rapidly rendered them into things.

Unfortunately starting off all the frames looked something like this:

Not terribly useful. We don't even have any idea who these guys are. After a few passes through the planer, however, we get something like this:

A perfectly good picture frame useful for stuff. First idea was to push a couple of these through a the laser cutter. Concept good, aim.... Aim was a little off. Also we had just rebuilt the laser computer and electronics so there were a couple of kinks to work out in CamBam's post processor:


Instead of getting distracted by that rabbit hole of troubleshooting, though, Nathan, in a process pioneered at Freeside by Mr. Ferguson, took a few frames and burnt some Lichtenberg figures. The actual process is pretty straightforward. Soak some wood in saltwater, hook a microwave oven transformer to the wall up backward, and poke the scary ends into the wood. There's some insulation and other safety jazz that I'll leave to: Google.

The raw frames come out a little (a lot) sooty and salty and need cleaned up:

Sanding and staining, or painting, plus a layer of polyurethane gives these:

But Wait. there's More!

Before the rest of the membership got ahold of those picture frames, Raul had intended on making a stool. We actually had a broken branded stool lying around to use for parts. The next day he was working on putting the stool together. After some disassembly, sanding, nails and whatnot:

A wild stool appears!

The Final Product

Rebuilding The Kraken

"The Kraken" is one of Freeside's 3D printers, designed and built by a former member. It is the light blue printer sitting off to the side on most photos of our 3D printing zone - sadly, the machine has never printed quite right and it's been down for repairs more often than it's been usable. It's design had some major flaws, particularly in the frame that was fairly unstable. When it did print it would make great looking parts, but the bed leveling was fickle and imprecise. With the AO-100 and more recently the Mini, there wasn't a lot of reason for our members to use it.

So I decided to rectify that and rebuild it completely from the ground up into a RepRap "Wilson", a popular design reworked from the Prusa i3. I chose this particular build because there are a lot of information available and a great set of info and instructions on both the RepRap wiki page about it, and the github page for the parts. It's a well known RepRap and has been tried and true by a lot of people.

The other reason I chose it was because I could build the Wilson utilizing 100% of parts salvaged from the old Kraken. The goal for the rebuild was to recycle every nut and bolt and try to keep the total cost as close to zero as possible.

From start to finish, the rebuild took about 3 months working off and on a few hours a week. The initial tear down took a couple of hours at the end of November 2015, where everything was counted and bagged and boxed up. At that point I ordered some new ABS to print the frame parts, and a couple weeks printing things on both the Mini, and my personal 3D printers at home. In trying to keep with the look of the old machine, I printed in "Sky Blue" ABS. The final product is actually really nice to look at!

While I was in the process of building The Kraken, I decided to go ahead and build my own Wilson from parts from a failed RepRap build of my own last year. So in a lot of these photos you will see an identical looking black Wilson. For my own, I bought some "hidden" corner brackets to help with the structural rigidity of the machine, as well as some corner braces I had from my previous build attempt, and used the spares for The Kraken. I definitely recommend this for anyone building a Wilson as it greatly improves the strength of the frame.

Some time ago, The Kraken's original J-Head hotend was replaced with a Budaschnozzle 2.0, since that is what we already have installed on our LulzBot AO-100, and having the same hotends allows us to keep fewer type of replacement parts on hand. We bought a replacement PTFE tube to convert it from 1.75mm to 3mm filament to be consistent with our other 2 printers - again, so we don't have to keep two types of filament on hand - and the nozzle was cleaned of old filament. It was left soaking in acetone overnight, then scrubbed with a fine wire brush.

We bought a new aluminum Y carriage to replace the old acrylic one. The aluminum carriage is lighter and more sturdy than acrylic, which has a tendency to flex and torque, so the new design will be able to print at much higher speeds than before. We kept the same heated bed, but replaced the glass print surface with an aluminum plate covered in PEI. Aluminum is a good bed surface as it dissipates heat more evenly, but it also lets us install and use an inductive Z probe to auto bed tramming, a stand out feature of the Mini that I have since upgraded my own printers with.

The RAMPS board had to be modified as it was missing the + voltage for the endstops, which the inductive sensor needed. Once that was added, the board was installed and the wiring was quick. I used some left over cable management from my previous 3D printer builds as well as my personal Wilson to help keep all of the stray wires in check, which the old Kraken suffered from. I also replaced the old server PSU with a more common project PSU found in Freeside's obtanium.

The machine was upgraded to the latest version of Marlin and configured to use the auto bed tramming feature. There is still some fine tuning in the firmware to be done, but overall the printer is running great. I'm really looking forward to seeing projects from our members come off of the machine!


Wilson on Thingiverse
Build log for the Kraken rebuild
Inductive sensor Z probe
Aluminum plate print bed
0.03" PEI sheet print surface
3M adhesive sheet to adhere PEI to aluminum surface

Build Out 12-5 Photo Recap

Freeside just finished our Build Out for the end of 2015 and we got a lot of work done. Let's see what all we accomplished.

Atlanta Cosplay Meetup: Group Build Update #3

It's been a while since we posted a progress report for the Atlanta Cosplay Meetup's ongoing project, and with Dragon Con right around the corner, we're nearing the finish line. Let's take a look and see what's been going on the last few months!

Check out our previous progress reports here:

Progress update #1

Progress update #2

Read on to see where we're at now...

First Annual Freeside Atlanta Robot Street Fight

Thanks everyone who came out! It was a fun event and we're already talking about next year. You've still got plenty of time to build a bot for Dragon*Con, Maker Faire, or Chattacon also.

The 12's and 30lb bots certainly faced the challenge of the post apocalyptic landscape that is the parking lot behind Freeside. Next year I expect to see some bots with modifications to handle the uneven surfaces better. Wedges built for a stage fight didn't fare too well against the cracked pavement and potholes.

1st- Algos
2nd- Death By Twinkies
3rd- Eleos

1st- Torgo
2nd- Naked Singularity

1st- Omega Force
2nd- Abrasive Personality
3rd- Hypnus

1st- Nyx
2nd- Spanky
3rd- Overthruster

Video Playlist of the fights

Videos courtesy of Near Chaos Robotics

Atlanta Cosplay Meetup: Group Build Update #2

 The Atlanta Cosplay Meetup has been making a ton of progress on our Marines & Xenos group costume. We have finished up build day #6 so let's take a look and see where things are at currently!

We've finished principal construction of the Marine torso armor and are working on finishing it currently. The cardboard masters were coated in fiberglass resin to give them strength, and we are going over them with bondo body filler to smooth them out. After a few more passes they should be smooth enough to use as vacuumforming masters, or to mold and cast in resin and fiberglass mat for strength.

We've also started building the leg armor, using the same method as the torso.

All that is left for the Marine armor is to 3D print the shoulder parts, and the helmet and various attachments. Adam purchased the same WWII helmet used in the film, which will become the base for our helmet that we will make out of cast resin and fiberglass mat.

The Pulse Rifle has been assembled and had a first pass of smoothing and cleanup done on it. The entire gun was 3D printed from a high detail model from the game Aliens: Colonial Marines. Another day or so of work and we'll be ready to mold it in silicone!

Adam Keeton lent a hand helping us lathe a test Grenade out of aluminum. This is only a first iteration, we'll need to make a few adjustments and go back and try again. So far the results are very nice looking though!

Plus, he looks like a natural holding the Pulse Rifle.

The Xeno skull has been started. We built the head using a 3D model from the game Aliens: Colonial Marines and a program called 123D Make. What this program can do is generate a 3D interlocking puzzle, sort of like the wooden dinosaur skeleton puzzles you got as a kid. We can set it to be however many vertical and horizontal slices and the program draws up plans, which we then exported to the laser cutter. 4 hours of cutting and about 60 pieces later, you get this mess.

Assembly really is a simple as finding the numbered slots and sliding them together. Once you get the first couple of pieces put together the assembly is a breeze. We took maybe an hour to put the whole thing together. Once it was assembled, we coated the whole thing in fiberglass resin to give it strength, and once that cured we filled all of the holes with expanding foam.

Once the foam cures, we will rasp all of the excess off and skin it in bondo, and use that for our sculpting base.

Valentin is working on the mechanism for the Xeno tongue. We are 3D designing and printing a rack and pinion gear under tension from a rubber band, and "cocked" with a worm gear connected to a motor. The idea is that the Xeno costumers will have a hidden button to open the mouth and shoot out the tongue via pressure from the band, and the worm gear will retract and cock the tongue to be shot out again.

Lastly, I started on the Smartgun for my own Marine costume. Every Colonial Marine group needs a Smartgunner, and I would be lying if I didn't say that Vasquez was a bit of a hero as a kid. The Smartgun and the steadicam arm will be built much the way the rest of the build has been, with several 3D printed parts and laser cut cardboard details. The steadicam arm will have a semi-working interior using custom machined aluminum parts and springs. So far the barrel has been cut and printed, with a few more parts on the way.

That's all for now. Stay tuned for more updates as we get closer to our deadline in May!

See all of our progress photos on Freeside's Facebook page here: https://www.facebook.com/media/set/?set=a.1045223078825003.1073741829.612557732091542&type=1

Be apart of the Atlanta Cosplay Meetup by keeping an eye on Freeside's Meetup calendar, or our Facebook group here: https://www.facebook.com/groups/AtlantaCosplayMeetup/

Atlanta Cosplay Meetup: Group Build Update #1

The Atlanta Cosplay Meetup is a bi-monthly-ish group of cosplayers, prop builders, and costume makers hosted at Freeside Atlanta. We have been meeting since October 2014 to share ideas and projects.

In November we began discussing an idea about making a group costume - something we could all work on, and eventually wear, together - and how we could make that into a reality. After a lot of debate (and a little help for Rachel who had already made her own Xenomorph costume!) we settled on making a Colonial Marines and Xenos group from the Aliens franchise.

We just recently wrapped up our 3rd group build, so let's recap what we've done so far.

Our first build we focused on planning and various ideas of what we wanted to do and how we wanted to get there. We decided to use Pepakura to laser cut cardboard as the rough master for our Marine's armor, and to 3D print some of the detail parts as well as their various weapons.

Pepakura is a program that takes a 3D object and lays it out into 2D faces. The example I like to use for this is creating a a paper craft cube. You can lay out the 6 faces of a cube on a sheet of paper, cut the lines, score and glue tabs, and at the end you have your cube in the real world.

This concept scales up to infinitely complex objects. Cosplayers have been using Pepakura for over 15 years now to create complex suits of armor and props. What I discovered is that Pepakura can export into a format that Freeside's laser cutter can interpret, which turns hours of cutting material into mere minutes.

For our second build, we began laser cutting parts for the Marine torso, starting with the chest. The parts were exported from Pepakura into the laser cutter's software, which was then cut out of cardboard. By dialing in different settings for "cuts" and "scores", we can complete everything in a single job. After about 20 minutes we had all of the pieces cut out and began assembling!

Assembly consists of using hot glue to glue the seams of the cut together. We glue the edges on the inside of the cardboard armor to make sure it keeps it's shape, but this creates big gaps between parts on the front. This won't be a problem for us, since we will be sculpting details and smoothing out the form later on in the project.

For our most recent build, we started applying fiberglass resin to the chest piece. This is used to strengthen the armor so that we can sculpt on it with bondo body filler. While the chest was curing, we began cutting and assembling the back armor. Adam also started 3D printing the Pulse Rifle, which should be ready to clean up and assemble at the next build day.

Rachel also brought her Xeno costume so we could brainstorm ideas on how to create the next version of that. Kevin, our other Xeno, and Rachel and I decided we will cut the Xeno skull out of cardboard stacks for the rough master, which they will harden and sculpt.

Our next build will see a lot of progress, since we are now at a point where we can have teams of people working on different smaller parts. We will cut out and assemble the leg armor, start bondo sculpting on the chest, and fiberglass and bondo the back. We'll also be working on the Pulse Rifle, and may have some of the other Marine weapons to start 3D printing. Our team of Xenos will work on the cardboard jigsaw puzzle.

See all of our progress photos on Freeside's Facebook page here: https://www.facebook.com/media/set/?set=a.1045223078825003.1073741829.612557732091542&type=1

Be apart of the Atlanta Cosplay Meetup by keeping an eye on Freeside's Meetup calendar, or our Facebook group here: https://www.facebook.com/groups/AtlantaCosplayMeetup/