Thursday, 21 June 2007

The day the music died

Although I am fortunate enough to have a project room which is nearly 3m by 4m, as you can see it almost completely full of junk.

The large glass fronted MDF box on the far left next to HydraRaptor is a 400 CD jukebox that I designed and made in 1990. I used it for about 10 years until the CD player's laser wore out. At that point I ripped all the discs and stored them on my PC as mp3s. I haven't used it since but I could never bring myself to dismantle it as it is probably the best thing I have ever made. However, this week I got fed up of not having enough work space so I decided it had to go.

This is what it looked like. It had a sealed glass door on the front which is hard to photograph.

Here it is with the door open.

The discs were stacked 10 high on wooden pegs arranged in semi circles of six on seven shelves, i.e. 42 sites. The bottom shelf had a hole in it above the open CD player drawer and an empty peg used to store the next disc to be played.

That left 40 pegs of ten discs giving a maximum capacity of 400 discs. Worst case, to play a disc at the bottom of a peg, involved moving the nine discs above it to three nearest neighbours. This took about 40 seconds but as long as the playlist was not empty it would get the next disc ready and place it on the peg next to the player. It would then move the discs it had moved out of the way back onto their home pegs. Then it would hover above the player waiting for the disc being played to finish. When it did it would lift it out of the drawer and stash it on an the adjacent peg. It would then insert the new disc and while that was playing it would return the previous disc to the top of its home peg. That way the most popular discs tended to be at the top of their pegs for fast access.

The discs were moved by a robotic arm with a rubber suction cup on the end made out of a toy dart.

This was moved radially by a stepper motor with a gear box. It was attached to a trolley on steel rails which was moved vertically by a toothed timing belt driven by a large 12V DC motor with a gear box. As you can see the end of the arm has three micro switches. The left hand one was used during initialisation to find the home position of the arm. The other two were just for safety. The vertical motor is so powerful it could easily snap the arm off so I wired the limit switches in series with the motor so if the software crashed and left the motor running it would do no damage.

The arm is actually made of two pieces of perspex clamped together at the hub. When the arm descends onto a disc the top piece bends way from the bottom piece and a pair of switch contacts between them part. Again this was in series with motor for safety.

Here is a view of the electronics shelf after I removed the top :-

On the far left is a mains modem which allowed my PC upstairs to communicate with it when it was in its original home in an under stairs cupboard.

Next to that is a small switch mode PSU which powered everything.

In the middle is an aquarium pump which I used to generate the vacuum to lift the discs. I converted it from blowing to sucking by sealing the case and connecting a pipe to the air inlet underneath.

On the right is the controller :-

This is a Motorola MC6809 microprocessor with 32K battery backed RAM, 32K EPROM, a timer, a UART and two PIAs. Nowadays this would be a single chip. Here are the circuits, no free ECAD programs in those days :-

Here is a view with the electronics removed :-

Here is a close up of the mechanics :-

The vacuum pump took a while to build up pressure and release it again so I made a solenoid operated 3 way valve to turn the suction on and off quickly.

The top circuit board is an opto detector which looked at tabs on the right hand rail to know where the shelves were. The board below it is a vacuum pressure sensor to enable it to know if it had failed to pick up or dropped a disc. That only happened during development really but it was vital to detect it otherwise it would lose track of which discs were on which pegs. Originally there was just one vacuum sensor but about twice a year I had to recalibrate it. Eventually I realised this was because the change in atmospheric pressure, due to weather, was greater than the vacuum level. I fixed it by adding a second sensor and measuring the difference between the vacuum pipe and atmospheric pressure. Not a very cost effective solution as the sensors were about £13 each.

Here is a video of it moving some discs. I had to drive it manually from the test routine as it would not run without a working CD player.

You probably will have noticed that each time it picks up a disc it pauses over the peg for a while. This was because the discs tended to stick together by suction after being pressed by the weight of the ones above. This was mainly cured by putting a small circular spot label near the centre of the disc to break the seal. The delay gave time for the second disc to drop back onto the peg if it did initially lift.

So now it is no more, but perhaps I might reuse the vacuum system and the metre long axis for some sort of pick and place machine.


  1. It's a pity you chose the summer solstice to kill the music. Let's hope it died in a good cause.

  2. I didn't pick it deliberately, but it would seem that the solstice has more significance to you that it does the me :-)

  3. I notice a copy of Return to Zork in the jukebox - good taste, that man! (music and game)

  4. That is really cool, it is a shame you didn't convert it for use with DVD or Bluray instead of scrapping it.

  5. ya, you should have gone with a dvd or blueray conversion and worked on building it smaller. great job though.

  6. This could be a cool CD/DVD duplicator or automated backup device.

    Stacks of blank media could sit on some shelves, and a backup program could dump the data to a buffer, that would be burned by the machine onto DVD media. It could also be accessible to a burning program so you can make a hard copy of the latest project to bring to the office.

    A labeling system would have to be added, of course.

  7. Did you use it to automate importing your library into mp3s? That seems like the best use for that, combined with a computer script to automate the importing.

  8. Are you not going to offer it for sale?
    I bet plenty of people have the space and the cash, and skill to upgrade/refit such a setup. (I dont or I would offer)

    Betcha in the right hands it could easily be converted to operate from an arduino and use a blu-ray drive.

    I've always wanted a machine like this to play cds on (they sound better than mp3s) and to swap the multitude of cd and dvd disks (that I have to search for everytime I want to use them).

    This combined with an automated backup scheme would be particularly powerful.

    You also managed to (partially) solve the momentary pause between cds. I think I would have loaded it with two cd players and made the audio switch so there would never be ANY pause.

    Just my thoughts, and I'm kinda suprised no one has offered to buy it yet...

  9. I would be willing to buy it. I'm not sure how much to offer though. Are you even selling it?

  10. Fantastic job, the use of vacuum is great!

  11. Hey Guys,
    Thanks for all the interest. My blog got more hits in a day than it normally gets in a month!

    I did think about converting it to DVD but I don't collect videos like I do music CDs and don't play them often enough.

    I didn't use it to rip my mp3s as I reckoned the time it would take to change the interface from a music CD to a CDROM would take longer than the couple of days it took to feed the discs into my computer.

    It is not for sale as it is now a pile a pieces. I may reuse some on my current project or I might build a feeder for a CD drive to allow me to rip all my CDs again in Flac format. Two CD drives and an in and an out pile would make a pretty effcient rip or duplicate system.

    Yes it could easily have been controlled by a modern microcontroller like Arduino.

  12. You should have sold that. Replace the CD player with a MP3 cd player and wow. Really great job.

  13. its realy a shame that you have not sold it on ebay

    i would have bought it or at least tried to

  14. Hi nophead,
    Just yesterday we built a CD changer like this for our project :-), but if I had seen your blog earlier, I would definitely have preferred to buy yours instead of the effort spent in building our own. There is a little difference in our setup, we store all the discs in cd drives instead of stacking them like you do - so it is more expensive, plus we do not have the expertise with vacuum pumps :-(. So we just wired the open close switches of these drives to our controller (a Zilog Z8)and run a small pickup arm up and down a motor driven shaft to pick the the discs up and place them into the player's tray.
    Interesting to see that so many people are working on the same things :-). We could definitely help each other.


  15. Man you are my idol...This is amazing...

  16. can u tell us how to make it or give us a DIY of this product pls ?

  17. Rahul,
    Sorry but I made this 19 years ago so the design is now out of date and I have moved on to more interesting things.

  18. what sort of things have u moved onto

  19. Making self replicating 3D printers, which is what the rest of the blog is about.

  20. Nophead,

    Please contact me ASAP for a business offer.

    Thanks & regards,

  21. Great rig! I was wondering what kind of 'commands' you gave it to pickup/move the media?

    You mentioned it was on a serial port.

    I do like your design, very interesting mechanics!

  22. The serial port was connected to a mains modem so the jukebox could be controlled from a PC anywhere in the house. The commands where just the same commands that the user interface task that handled the keypad and display used: -
    * command codes from mains packets
    CMD_ADD equ 1 *add to playlist
    CMD_GET equ 2 *get from playlist
    CMD_CLEAR equ 3 *clear playlist
    CMD_RDISKS equ 4 *set random disk mode
    CMD_RTRACKS equ 5 *set random track mode
    CMD_CYCLE equ 6 *set cycle mode
    CMD_STOP equ 7 *stop player
    CMD_PAUSE equ 8 *pause player
    CMD_NEXT equ 9 *next track
    CMD_LAST equ 10 *last track
    CMD_CLEARM equ 11 *clear mode

  23. hey, buddy im loving this and am attempting to make it myself for my dvd's, i have like over 1030 dvd disks and i am going to bulild this.....

    ok my question is how did you get the arm to move up and down, and how did you program it(what language(im a programmer myself))...

    it would be great to have your email, so i can ask you these things easier.....

    PLease the help would be great

  24. The arm is mounted on a trolley that moves on rails. It is driven by a 12V DC gearmotor via a toothed belt. I got the complete vertical axis from a prototype electronic photo-booth that I worked on at work. I think it was the worlds first and appeared on the UK TV program "Tomorrow's world".

    All the code was written in 6809 assembler. It was nearly 20 years ago and I would use C nowadays.

    My email is nop dot head at gmail dot com.

  25. hey i emailed you, and it would be great for the continued help....Thanks your great

  26. i emailed you, help would be much appriciated...

  27. ok so, im starting to build my cd rack, im building the arm and am finished, i have a piece of 2ft long wood 3/4" thick, and drilled a hole in it at the end, the hoze with attatched suction cup is attached, the hoze goes up the wood and to the vaccuum, it is not mounted on anything...

    but now i have to ask, what should i do next, how do i mount the arm and be able to move it, and be able to make the vaccuum turn on and off, im not going to make the arm go up and down before i have 1 layer working....

  28. I mounted the arm on the output shaft of the gearbox I used. It was a 6mm shaft with a sturdy bearing so was able to support the arm which was quite light being made of Perspex and only about 1ft long.

    It was important that the arm could bend so that I could detect when the CD had been placed.

    I turned the vacuum on and off with a three way valve that I made from a solenoid, some perspex, some brass tubing and a rubber washer. Turning the pump on and off was far too slow.

  29. I love this project, it was very good designed and build. It is a shame you have to take it apart to have more work space. I like making thins as well, nothing sophisticated like yours but maybe you can have a look at my project and let me know what you think? Best regards.