Introduction: 3D Printed Skylines Based on Musical Input

Usually musical visualization techniques are used to visualize the sounds you hear to the things you see. (Think iTunes, displays at live music, etc..) In this project, we (Max Potasznick and Chris Imbriano) wanted a way to produce a physical artifact which would visualize a piece of music even after the music had finished.

Inspired by melted crayon pictures we decided to use a skyline as our medium. Every city's skyline is much like a finger and so why not create a skyline based on a piece of music?

Requirements (detailed descriptions later):

* Ruby

* Python and pandas

* OpenSCAD

* 3D printer + software (we used a MakerBot 2 with MakerWare)

"This instructable was made as part of the CS graduate course "Tangible Interactive Computing" at the University of Maryland, College Park taught by Professor Jon Froehlich. The course focused on exploring the materiality of interactive computing and, in the words of MIT Professor Hiroshii Ishii, sought to "seamlessly couple the dual worlds of bits and atoms." Please see http://cmsc838f-s14.wikispaces.com/ for more details."

Step 1: Get Your Environment Setup

In order to run our project, you'll need a few things installed.

You can install these however you feel most comfortable. Here's some tips that worked for us.

Ruby 2.0+

If you're on a Linux or Mac, check out RVM for installing Ruby. Since we don't depend on any external Ruby libraries, if you have a version of Ruby greater than 2.0 already installed, that should be sufficient.

Python 2.7.5 and pandas 0.13.1

Pandas is a data analysis library and our project code uses it to calculate statistics about music event data (MIDI).

We used virtualenvwrapper and pip to install our python dependencies but you don't have to as long as you can install pandas 0.13.1.

The nice thing about using a virtual environment (with virtualenvwrapper) is that you can run a command `workon` with the name of your environment and then install dependencies with pip into an isolated place. That means these libraries won't interfere with other things installed on your system or other dependencies you install for other projects.

OpenSCAD

Get it here. It's a solid 3D CAD (Computer Aided Deisgn) modeler.

Step 2: Download the Code for Converting From MIDI to SCAD

Clone the repository here from: skyline on GitHub

Step 3: Use the Project Code to Generate SCAD Files

All you have to do is run: `ruby run.rb <path to your midi file>`

It will create a folder in the out/ directory with the name of your midi file. In there you'll find a *.scad file which will contain the 3D model.

Note: We do something a bit naïve when we read the midi files. So not every midi file will work, even though it might be a valid midi file. Sorry!

Step 4: Prepare the STL for Printing

Open the scad file in OpenSCAD. You should see something that looks like one of these examples.

1. Compile and Render by going to the Design menu. Or just press F6.

2. Save that file somewhere convenient.

Step 5: Print It!

Open your STL file with your favorite 3D printing software. We used MakerWare.

In our experience, there is no perfect settings for 3D printers that will work for everyone, everywhere. So here are our settings where default settings are indicated . Your milage may vary.

Plastic: PLA

Resolution: Low

Raft: Not color-matched

Supports: Off

Infill: 10% (default)

Number of Shells: 2 (default)

Layer Height: 0.3 mm (default)

Extruders: 230 C (default)

Heat the build plate: Yes

Build plate: 70 C

Speed while extruding: 90 mm/s (default)

Speed while traveling: 150 mm/s (default)

Step 6: