Artemis Synthesizer Kit

The Artemis Synthesizer was created as a kit for Boston University’s Artemis Project. This project aims to teach female rising high school freshmen about computer science with hands-on activities. [Chris] based the kit on a ATMEGA328P microcontroller and a MCP4921 digital to analog converter. It can be used in a keyboard mode, where the buttons toggle various notes of the scale, or in a sequencer mode, where the buttons are used to toggle pre-programmed sequences.

[Chris] wanted the kit to be usable by the students after the workshop, so he used an optical link dubbed the “Optoloader” to program new sequences and waveforms into the device. A web based application allows for waveforms and sequences to be built in the browser, then programmed by holding a phototransistor up to a blinking square. The square flashes black and white corresponding to a Biphase Mark Code encoded message. This is decoded by the microcontroller on the synthesizer and stored in memory. As a result, no special hardware is needed to play new waveforms and sequences.

[Chris] has a thorough write up for the project, including feedback surveys from the students. He plans to add more specific information about the Optoloader in the future.

Check out a video of the kit in action after the break.


  1. Ren says:

    I was going to leave some comment about having such a tough time getting a girlfriend he’s now trying high school freshman, but then I thought the better of it…

  2. bty says:

    Very impressive project!
    I wonder how well the transfer speed could be scaled up. Limiting factor would probably be the monitor refresh rate. A native application that can wait for VSync could probably be a bit faster, but even then the max transfer rate would still be a few bytes per second.

    • willaim says:

      considering it has been around in a watch for quite sometime its apparently not feasible for large amounts of data even in a refined state but still seems a lot more convenient to me i wish more things upgraded/expanded like this… perhaps people have seizures from tech like this

    • cjwoodall says:

      So it does not scale super well with javascript. You introduce a lot of clock jitter, to the point where differentiating your transitions becomes very very difficult. However, you could go rather fast over a direct optical link, or possibly even if you had control of the display directly.

      One major application I can think of is iPhone/Android to embedded device programming/transmission. I believe the Electric Imp uses some similar technology.

      • bty says:

        For the amount of data transferred here, the javascript code is probably fast enough already. Limiting factor will stay the monitor refresh rate, which is really low.

        An Android/iPhone already has a camera, which would make other methods much more feasible.

        But for sending a little data to a mcu, it is a very good idea. It just won’t scale up well because of the monitor.

        It used to be so that a few generations back almost all laptops came with an IR port, so at least there we could reach modem-era speeds.
        But if i have to get one for my pc, i might as well just plug in the uart or usb or jtag or whatever.

    • bty says:

      Speed could go up when using multiple channels, but even with 8 photocells and a 60Hz encoding clock it would still only be a few dozen bytes per second.

      • dmcbeing says:

        Or you could use 4 or more light levels and get same speedup with one chanel.A duall chanel with 8 levels would give you ~6x the bandwidth.Maybe i should go to my bench….

  3. bty says:

    @dmcbeing: Good idea. How about two analog (intensity) channels, real and complex, and do some QAM.

    • bty says:

      thinking about it further, it’s useless, the monitor refresh rate is just too low. Even 8 channels with 4 levels will still not get you even 100 bytes / sec. Better to go with sound then as the rate is much much higher.

      • Bill Gander says:

        That was my thought as well. From an old MIDI dog, the “wav file thru mini or micro audio jack should do the jerb quite well, although I do like his blinky screen method too. Like others have pointed out, it can be a little unstable. Overall nice job on the build and hope this gets more ladies into science.

      • cjwoodall says:

        @Bill I also thought about that. My boss was really keen on the lights and I recently implemented Biphase Mark Code for a Fiber Optic Link for a CMS test rig, so I took that knowledge and tried to apply it in this cool way. I want to do more work with it, but I have been swamped.

        I have a programmable guitar pedal I want to make that I really want to use an audio jack to program it… Or interconnect pre-written blocks in cool ways, or something.

      • Bill Gander says:

        @cj Good deal. It does give it a neato factor as well as the boss thing ;)

        With the pedals, I can tell ya to keep with your current config (in a way) and go with a normal looking 1/4″ tip and have a tiny led and in the other end the receiver for an opto-isolated data line to avoid ground hum. Could be a neat overall package-guitar2.0 or some such. Again, I borrow this from midi. I dunno you may have some bluetooth dev pedal thingies- I’m just typethinking out loud :) Best to ya.

  4. draeath says:

    I love the way you handle programming. No cables required! All you need is a display and javascript.

  5. Greenaum says:

    A better way than the optical link might be to use the soundcard. Even just with a mic on board, and PC speakers, you should be able to get a few hundred bps, much faster than 60-80Hz refresh rate of a monitor.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 96,369 other followers