Introduction: Spoken Word Chess Pieces

Picture of Spoken Word Chess Pieces

I made some very personal chess pieces using my voice. Each piece is based on the shape of the sound I made while saying its name. It’s not a complete set, since the other side should be done the same way, but with the voice of my opponent.

This is just a simple project to show how to import SVG files into Fusion 360, and use them to create solid bodies.

It's not the easiest workflow, but it should be easy to replicate.

The software I used:

This project was inspired by: Guto Requena's Era Uma Vez vases, and Matthew Epler's Grand Old Party plugs.

Step 1: Audio Recording

Picture of Audio Recording

I started by recording myself saying the name of the pieces using Audacity, and saving each section of the sound as a separate file using the File -> Export Selection command.

Step 2: Processing

Picture of Processing

Then, I use a simple Processing script to generate images from the sound waves. The code is on github.

It will read any mp3 file in its data/ directory and turn it into a png.

Step 3: Making SVGs With GIMP

Picture of Making SVGs With GIMP

To generate the SVGs, I open each image file in GIMP, and use the Fuzzy Select Tool (with a high threshold value) to select the white area of my image. Then, I make a path using the Select -> To Path menu option, and export the path by right-clicking on the path under the Paths sidebar.

Step 4: Fusion (import SVG)

Picture of Fusion (import SVG)

A weird thing in Fusion 360 right now is that some commands are only available if you turn off the History Timeline feature. I find the Timeline useful, and like to keep it around, but it’s a bummer when you need to do certain things, like, scale a sketch.

Here’s how to get around that.

Before creating a sketch, start a Base Feature, with the Create Base Feature option, under the Create menu. Notice that a ‘Finish Base Feature’ button shows up at the top menu.

Now, start a sketch, pick a plane, and select the Import SVG option under the Sketch menu. Pick a file, and specify the start position of the SVG path.

Step 5: Fusion (Measure, Scale, Scale)

Picture of Fusion (Measure, Scale, Scale)

Once the SVG has loaded and the sketch is finalized, I measured one of the sides of the sketch to see how big it came in (I think Fusion imports SVGs at 1mm per pixel).

Then, I chose Scale, under the Modify menu, select the sketch, and enter a Scale Factor to make the 1024mm sketch about 40mm long (so a factor of 0.04). Once I’ve checked that it’s about the size that I want, I can click on Finish Base Feature.

Step 6: Fusion (Revolve)

Picture of Fusion (Revolve)

Now I can use the Revolve command under the Create menu to make a solid body from this sketch. Boom!

I made a short video that shows all of these steps.

Step 7: Clean Up and Print

Picture of Clean Up and Print

Once I have a solid body, it's easy to rotate it up, and crop it a little bit, to make sure I have a flat base for the piece.

Rinse, and repeat.

Export the STL and Print.

My own personal set of custom chess pieces.

Comments

Novacia (author)2017-01-25

Hi, I'm currently trying to do this project using your steps, but I'm having some trouble at the second step. I'm using the code you had on github, but for whatever reason, the resulting .png doesn't get filled in the way yours look in the instructions, and I'm not sure why. I've attached the .png of my bishop.mp3 file so you can see what I mean.

Any thoughts on why this might be happening?

thiagohersan (author)Novacia2017-01-26

Hello.

Try commenting out line 57 of the code:
https://github.com/thiagohersan/Ctrl/blob/master/P...

It draws black ellipses inside the white ones to get the outline effect.

Goossens2016 (author)2017-01-03

Cool idea!

Thanks for sharing...

dls02010 (author)2014-06-06

Question about your code: what does spp stand for and can you explain what you are doing in the for loop after defining spp? Thanks!

Also, I LOVE this project :)

thiagohersan (author)dls020102014-06-06

Hi !

spp is "samples per pixel". Because I'm creating an image that is 1280 pixels in length from an audio with millions of samples, I use that for loop to average out spp samples for each pixel value.

I'm guessing audio editing tools might do something similar when they draw a zoomed out wave, but I'm not sure (do they average? pick the max? something else?).

There might be another way of doing this, where you create an image that is millions of pixels in length, then sample it down.... but this was my quick and easy solution.

Hope it helps

dls02010 (author)thiagohersan2014-06-10

Yes I do understand what you are saying now. Thank you for your response! Sorry but a few more programming questions (just so I totally can wrap my head around your code): what does ys stand for? And a question about the nested for loops in 'analyzeUsingAudioSample': I see that you are sampling leftChannel every 1280 pixels, which makes sense. Then you go into another for loop where you loop over the length of spp (which is also 1280). It looks like you are taking the value of sum and adding a new value to it, whose value is designated by the pixel location [i*spp+j]. So is ys like your x-coordinate and the spp at j like your y-coordinate? Thanks!

thiagohersan (author)dls020102014-06-11

ys are the y values for the line along the width of the screen/sketch. So ys has as many values as the screen's width, and specifies how far down the screen the line should be drawn at any given pixel.

Since I'm only drawing 1280 values, but leftChannel array has millions of values, I have to turn those millions of values into 1280 values (the ys).

Let's say my audio has 128000 samples. That means each pixel on screen will represent 100 samples of audio (spp = 128000/1280 = 100).

The nested loops read the audio samples in groups of 100 at a time. The inner loop calculates the average of these groups of 100 and puts them into the ys array. The outer loop specifies that I should do that 1280 times.

Imagine counting to 100, 1280 times. That's what the nested loops are doing.

ys are the y-coordinates. The x-coordinates are implicit, since I have one y for each pixel in width. For example ys[23] gives the y-coordinate for the point to be drawn at x-coordinate 23.

Hope this helps.

dls02010 (author)thiagohersan2014-06-11

Also!! I'm making an instructable based on this design but with earings. I've been asking you all these questions so I really know what's going on in the code. I'm additionally using modelmakerMk2 to try and skip all the steps between creating the audio file and making the 3D model in fusion. I can send you the code if you like! It's almost working!

thiagohersan (author)dls020102014-06-11

yeah! Sounds awesome! Anything else I can help with... just let me know.

Fusion has a python interface, that's kind of hidden, and undocumented, but in theory it could also be used to create the 3D shape directly : )

I just haven't had time to look into it.

dls02010 (author)thiagohersan2014-06-11

Hurray! That makes wayyyy more sense. Thanks a lot for your help!

thehbird (author)2014-04-13

Nice very Harry potter esqe

Five Cell (author)2014-04-12

This sounds like a good idea.

cupquake (author)2014-04-11

What an artistic design good job no two are the same

Kiteman (author)2014-04-10

That's cool.

What would be even cooler is if you could somehow play them back...

kakashibatosi (author)Kiteman2014-04-11

That's an interesting concept. perhaps print them like old wax cylinders?

Mielameri (author)2014-04-10

Really interesting concept