Week 18 - May 16th 2012 - Invention, Intellectual Property and Business Models

Weekly Assignment - Final Project Development

  • Progress so far?

Things are coming along quite well with my final project; I have completed the first couple of phases of the design cycle laid out last week. So far I have:

  • - Implimented the V-USB on a tiny44 microcontroller and ensured that is recognised as a MIDI device, and is correctly receiving MIDI instructions, in a manner similar to the system I built for my networking assignment.
  • - Networked this to a second board that uses a modified version of the 4bitsynth code (which was originally developed for the ATMega48 microcontroller) which generates audio from the MIDI instructions.
  • - Built and added to the network a third board that displays the MIDI instructions in readable format on an LCD screen, using code adapted from examples here and here.
  • - Begun work on the design for the case. So far I am testing out the 'dragon claws' method of joining sections of 3mm plywood at 90 degrees. The exact sizing for the notches, and the depth of the cut that provides flexibility in the joint need to be determined through experimentation to take into account the rigidity of the material.

I think that this has been good progress but am still keen to continue adding more functionality to the project.

  • What questions need to be resolved? What tasks need to be completed?

I still need to develop the subsystem for detecting and transmitting button presses (and releases - keyUp and keyDown are two different MIDI events). I also need to transfer the electronics, which are currently on prototyping boards that I fabricated in order to develop ATTiny45 applications in a breadboarding environment, to individual fabricated circuit boards. Lastly I need to develop the case design to enclose the whole project. If time allows, I also want to write some example applications in the puredata programming environment that will allow for demonstration of the capabilities of my project.

  • What has worked? What hasn't?

Thankfully networking the various modules together has worked well using the method we saw in the networking week, once I had defined a data packet that would be sent; 3 bytes are transmitted at a time, giving the target microcontroller ID, the MIDI note and the MIDI instruction.

I have started to prototype the module that will detect button presses, but it has proven difficult to integrate the button detection with the microcontroller running the V-USB application, as using interrupts will disrupt the asynchronous bus network and continually polling the input system causes incoming MIDI messages to be missed. I think that I will have to include a switch that sets the system into 'synth' or 'trigger' mode so that the hub is only receiving or sending MIDI messages at any one time.

  • What will happen when?

Hopefully all of these remaining tasks will be completed in the next couple of weeks.

  • Project dissemination?

Given that many aspects of the programming have come from open-source projects, it stands to reason that the complete source package for this project also be released to help people trying to use these techniques in the future. Likewise, the inspiration from the case came from a case that is available for purchase (the svg plans are also available for download here), so I will share the plans when they are finalised.

<<< Week 17

Week 19 >>>