Application written for FEZ Cobra using .NET Micro Framework and GHI's graphical library called Glide. At first my intention was to create a library to drive a buzzer for playing simple melodies, but later it turned out that it can be also an example of
a little advanced GUI.
The buzzer-related classes (which I want to be a library in the future) allows you to play melodies using buzzer (Microsoft.SPOT.Hardware.Utility.Piezo). This means you can select a note from the octaves 0-9 and some "effects": dot after note, staccato
The GUI-related part of project was to be just an example of usage the buzzer-related classes, and it allows you to create a melody using touch screen and simple interface that should be helpful if you want to play a melody and you have music sheets but you
don't know how to read notes. It is made with Glide library from GHI: http://www.ghielectronics.com/glide/
Also there are used String Extensions for NETMF (http://netmfcommonext.codeplex.com/ ).
Todos and plans for the future
Project is not complete. There are still some things to do:
- pause/stop buttons
- using events to select multiple notes in a row
- "debug" play - with highlighting the currently played note
- other "effects" for notes and things that might be useful like custom metrum (for now it is assumed that metrum is 4/4)
- drawing ligature symbol on the staff
- bigger pitch selection part in note input window
- getting some different background image and better set of note thumbnails to use with buttons and melody graphical representation
- to make GUI look better
- support more screen sizes than 320x240
- xml documentation
- it would be nice to make custom loader with logo and some information, something like Skewworks made in Pyxis 2
- after .NET MF 4.2 release I will add ToString and Parse to the melody class and USB mass storage using will be possible
And few important issues:
- to stay up to date with next releases of Glide, until it will be non-beta (there is still possible that many things will change or get improved)
- to optimise the code to make it run faster (especially windows content and melody drawing methods) and look more professional
- to optimise the code for a small device like FEZ devices - writing such program in C# made me forgot about thinking small
Also I would like to make in the future a simple sequencer and tracker library and GUI that would allow you to use buzzer to create music like in good ol' PC games.
The next step would be generating MIDI messages and playing/editing .mid files.
Maybe the final target would be to make some complete portable system for live-acts with user interface similar to imo awesome Jeskola Buzz: http://jeskola.net/buzz/
Every suggestions and help are welcome.
I have set the ad on my project site because when I will finish my training I will be without GHI devices and also my PC at home is a little bit too weak to handle VS 2010 properly, and I don't have any money that I could spend on buying this.