Thanks for the comments!
I've just seen that it's on
BoingBoing as well...
@yipyop:
I will put together a proper blog post about it quite soon because it took quite a while to set up so it will take some explaining but...
I started with measuring out the discs that came with our player, they're injection moulded and all seem to have quite close tolerances which gave me a great interest in getting the right size for my model.
Once I worked out that it might be possible I moved on to setting up the notes so I could work out a tune. I spent quite a long time with a tone generator and a toothpick (driving my wife half crazy in the process) until I had worked out the frequencies of the notes that the music box part of the player could make. I made the tone generator in Processing using the
Beads library.
I found that, although there are 22 separate notes on the music box there are only 16 unique notes, 6 are doubles. I've assumed that this is so that the notes can be played more quickly - due to the mechanism in the player 'tone arm' there's a risk of a missed note or jam if only one track is used and the pips (knobs? dots?) are too close together.
Once I had this information I made Processing sketches (Beads again) to make up new tunes and also check that I had the right notes by playing back one of the existing discs (good job I checked since I had two notes wrong...) with note positions copied from a photo of the disc.
Working out the new tune was complicated since there isn't a full chromatic scale available so some tunes simply can't be played even if you shift the key up and down, I wasn't able to get the rest of the 'Still Alive' tune, for example. The tune repeats twice around the disc and wraps so it keeps playing (for as long as the spring lasts)
Once the tune was done I had to transform from linear note positions which I'd used to work out the tune (the sketch looks like a music stave but with each line being a note on the available scale) into polar coordinates around the disc and verify the dimensions.
I create a blank disc by 'lathing' the vertex-by-vertex profile I measured using vernier calipers (analog technology FTW) around an axis in Processing and exporting it for later use.
The notes are added onto the blank disc by compositing some boxes that I generate in Processing from the notes with the pre-rendered disc which is stored as an STL file - here I used the
Unlekker library for both export and import/combine/re-export.
Once this is done it can be uploaded directly in Processing to Shapeways.
...and believe it or not that's the short form and entirely skips my (mis)adventures in Blender, Autodesk 123D, Solidworks... I nearly got desperate enough to ask someone at work to set it up in CATIA for me
Chris