Things I've Made Nancy Yi Liang

Blog | Twitter | Instagram | LinkedIn | Email

Recipes Library (Work In Progress)

...

...

Lapharp Music Maker

A simple website to generate music for the lapharp. The lapharp is a trapezoidal harp. You print out the music, put it under the harp and the notes tell you exactly where to pluck. It's an easy way to get beginners started with music.

With this tool, you can write out a small tune using ABC notation, see a preview of the music in staff format, and print out the trapezoidal lap harp. You can customize the print out based on the size of your lapharp since different manufacturer might have different dimensions.

Technical Details: Using abc.js for text to musical notation preview, using fabric.js for lap harp music render.

Github Repo

Jian Zi Pu (减字谱) Font and Compiler

JianZiPu is a way to write notation for Guqin (古琴) music. Guqin music is traditionally written using a character based system, but the character set isn't really found in any known languages. It looks like Chinese characters, and has components of Chinese characters, but it's unlikely you'll find most of these characters in the Chinese unicode system.

The core of this font is a series of components (think, letters in word) that overlaps to form characters. These letters are represented by unicode characters. To determine which unicode characters to use, we will need to compile a shorthand developed for this font. So a string like 6ks(9) would signify

  • 6 -- 6th string
  • k -- gou (pluck inward with the right middle finger)
  • s -- press the string with left hand 4th finger on...
  • (9) -- hui position 9

I use k because that's where the middle finger on the right hand rests on a QWERTY keyboard and s because (you guessed it) that's where the left hand 4th finger lie on the QWERTY keyboard.

Technical detals: Using the Javascript compiler (see link below), the output will result in a series of unicode "characters" that overlaps in ways to make a character. The font using these character components are custom developed using FontForge and Vector editors (Sketch, Figma).

Github Repo

NL Tabs for Guqin

Create Guqin music with the NLTabs (Numeric Linear Tablature) system. This creates Guqin music with a simple, text-based entry method. Guqin Notation traditionally has been a bit tricky to read. It's efficient in that it compresses a bunch of playing instructions into characters. However, it has a rather steep learning curve, and more importantly I could not find a way to write scores in the traditional notation on a computer. I don't really own paper anymore, so..... I created my own system for writing Guqin music!

NLTabs basically converts the finger positions into a more visual schema, using lines to represent lines (crazy!) of the Guqin, and numbers to represent which position along the line to press or touch. The text above the 7 line tabs represent what you do with your right hand and which finger to use, and the text below represent what you do with your left.

Technical details: music is rendered using Lilypond (including some Scheme based plugins), Javascript converts the user into into a LilyPond file which renders into PDFs.

Github Repo

Alexa Scripts

Write a simple Alexa Skill similar to how you would write a movie script. Based on the customer's response, you can redirect your skill to execute different parts of the script.

If you can write English, you can write an Alexa Skill.

This was created in 2017, no guarantee it's still working with Alexa API.

Technical details: created using serverless infrastructure built on top of AWS (Lambda + S3).

BitBucket Repo

Mixee Labs

Mixee Labs is a platform for designers to create customizable products and sell them online. We manufacture these customized goods on-demand using 3D printing. With our JavaScript Platform, developers can program 3D objects using JavaScript. They can set parameters that others can use to tweak the object.

In 2014 Mixee Labs partnered with Amazon to launch their 3D printing store. Our software drove their customizable product experience. In 2015, Amazon bought Mixee Labs' technology, and our team joined Amazon full time.

Made with Ruby on Rails, WebGL/Three.js, X3DOM, Fabric.js, other libaries

Founders: Nancy Yi Liang, Aaron Barnet

Mixee Popper

Online 3D modeling tool based on 2D image extrusion. Users can move shapes around, scale, rotate, and combine with other shapes. User can also control the bevel or convert their shape(s) into extruded outline. Models are downloadable as STL files.

This tool enables people to take 2D graphics and extrude them to form 3D models. Manipulating meshes and vertices can be challenging and 3D model libraries are limited, but most people have access to 2D graphics searches and libraries (e.g., Google image search, Noun Project). This tool was made after noticing (during laser sintering) how the cross sections of 3D models are often made up of extruded 2D shapes (e.g., circles, rectangles).

Made with Three.js/WebGL, ImageMagick

Shape-Morphing Blender Plugin

Using ShapeKeys in Blender, users can create morph targets to modify models along a spectrum (e.g., using sliders to change ring size). This plugin takes the models and morph targets from Blender and converts it into a Web App where users can use sliders to morph their 3D models and generate 3D printable models. This plugin was originally conceived at a hackathon by Mary Huang and Nancy Liang. It is a way to give CAD modelers and apparel designers an easy way to make web apps for customizable products.

Made with Python (Blender plugin), Javascript

Collaborators: Nancy Liang, Mary Huang

Apparel CAD (Blender Plugin)

User can import their 2D clothing patterns, select seam pairings, and see a simulation of the sewn garment. Uses Blender, Python, cloth simulation. Plugin will generate images and videos.

The goal of this project was to use 3D renders to visualize how clothing patterns will look once sewn. This type of visualization can cut down iteration cycles, since designers currently sew sample garments by hand. It can also help all stakeholders in the apparel production process get in sync on the designer's intent.

Made with Python and Blender.

Laser Cut Apparel

Experimenting with technology to make apparel. I used Blender to model a skirt in 3D. Using animation tools (unwrapping the "skin" of the skirt), I was able to extract a 2D pattern for sewing. I cleaned up the pattern in InkScape (vector drawing tool) and added some geometric graphic design to make it more interesting. I used a laser cutter to cut the fabric, and sewed by hand.

The goal of this project was to test different technology that can make designing apparel easier and automate apparel production for custom-made products.

Patterns made through Blender and InkScape. Cut with a Full Spectrum laser cutter

Laser Cut Bag with lights

A nice looking bag that doesn't require fumbling around in the dark looking for keys or zippers.

This prints on this bag are made with laser cut fabric. The light turns on when the magnetic clasp is opened, disconnecting a circuit that feeds into a transistor NOT gate.

Patterns made through Blender and InkScape. Cut with a Full Spectrum laser cutter

IOT Treat Dispenser (Bad Wolf)

The goal of this project was to use positive reinforcement to treat dogs with separation anxiety. Positive reinforcement is the idea of giving treats for good behavior.

With separation anxiety, the humans cannot be present when puppies are behaving correctly (being calm and quiet). This allows humans to give treats remotely. Dog owners can view real time video & audio of their pet, push a button to give a treat to their pets.

Hardware made with 3D Printed case, custom PCB design, Raspberry Pi (latest version not shown here is based on ESP8266 Wifi Chip and ATtiny85), stepper motor (with L293D motor driver). Software uses Arduino code, Python, Node.js. Audio/Visual uses motion, LAME, Firebase (the local device takes images in real time and uploads the image to Firebase as a DataURL. Hack, I know. But it provides close to real time streaming, which is crucial for dog training.)

Read More or Visit Github Page

Collaborators: Nancy Liang, Aaron Barnet

Mixee Bag

Modular system for creating 3D printed bags and wallets of various sizes. The glossiness is made because the bag is printed on a heated glass build plate, which creates a shiny surface. Small hinges are 3D printed in place. Larger hinges are assembled with 3D printed parts. The only non-3D printed parts in this product are the magnetic clasps.

Made with Blender, Ultimaker 3D printer

Pop It Game

Snood-like shooter game made entirely through Javascript and graphics through CSS (divs, divs, divs!). Also includes a two-player mode where players can send bubbles to one another in a battle scenario.

Made as a challenge to create a game using only CSS and Javascript to animate the graphics using (basic) physics.

Made with Javascript, CSS, and Firebase (for real-time multiplayer action)

Try it Out

Vizzit (Reddit Visualizer)

Vizzit is a way to compare top mentioned words in Reddit threads. In this example, the user is looking for the best modeling program within the 3D printing subreddit. A chart shows the top comments with mention of 3D printers, and the user can browse the comments themselves as well.

This was inspired by seeing a thread every other day on "what's the best X" in multiple subreddits. This takes all those threads and compiles them into a simple chart.

Made with JavaScript

MedSnap

This device won first prize at the MIT 2014 Hacking Medicine hackathon. It's an attachment to otoscopes and ophthalmoscope (devices to see in ears and eyes). It allows the doctor to see through as usual, and take a photo by sliding a tiny camera in front of the eye piece.

Currently, doctors explain to patients and other doctors what they see through verbal or written communication. This can lead to errors or miscommunication, which can be life-threatening. Some doctors take photos with their phones and email themselves, but this is not compliant with healthcare privacy laws. This device enables doctors to take close up photos using tools they are already familiar with. It stores the data on a local device to comply with privacy laws.

Made with Raspberry Pi (raspistill, mjpg_streamer), camera module, 3D printer

Collaborators: Nancy Liang, Dr. Nupur Garg.

Notable Scores

Notable Scores is a way for musicians to collaborate remotely. Musicians can make notes on sheet music, annotate sections of music, and respond/converse with others. They can jump navigate sheet music by measure numbers and generate images of sheet music clips to share online.

Made with Ruby on Rails

Variations 1645

Composition exercise. Variations on the chord progression: I-vi-IV-V. This chord progression contracts and expands and interweaves two themes (introduced measures 1-4, and 5-8).

The piece starts out in 4/4 time with the first theme, which each measure representing one chord. In measure 13, the second theme speeds up where the chords progress once every 3rd beat in 3/4 time. In measure 24, the chord progression accerlates and progress once every 2nd beat in 2/2 time. In measure 43, the chord progresses once every 1/16 note. In measure 47, the left hand moves the chord back once every 4th note (expanding the progression) while the right hand changes the chord every 1/16th note (contracting the progression). After this section, the progression expands out. It ends by overlaying both themes, echoing the beginning and coming full circle.

Listen