Merge pull request #3 from seako/master

update the instructions for installing from source
Restricted haskell-src-exts version

The haskell-src-exts package was recently updated (to 1.14.0) and is no
longer backwards compatible (causing problems with ArrowWrap.hs).  I'm
not really sure what ArrowWrap does or why we need it, so a long term
fix would be to figure that out and update appropriately, but for now,
I've simply restricted the version to the last working one (1.13.5) in
the cabal file.
Updated ReadMe

I've updated the readme to reflect that the repository is owned by the
Euterpea organization rather than on my personal github account.
Update to haskell-src-exts-1.14.0, fix #4
remnants of CPSC431
Merge pull request #5 from rnons/master

Update to haskell-src-exts-1.14.0, fix #4
EventBuffer update

eventBuffer's type has changed slightly, and new features (SkipAhead,
AddDataToEnd, Tempo) have been added.
midiOutB's default behavior is now AddDataToEnd (rather than AddData)
Fixed excessive redrawing in textbox and listBox widgets.
Widget Graphic boundaries and Resizing

Widgets can now no longer draw graphics outside of their supplied
contexts.
Resizing the MUI window no longer causes a delay and lag issue.
Adjustments to midi widgets

Remove unnecessary unsafePerformIO calls from midiInM and midiOutM.
Changed midiInM and midiOutM to use ArrowChoice recursion.
(Experimental) MidiIO.pollMidi now uses lists of MIDI messages instead
of multiple individual messages for its callback
Fixed Chan Warnings in MUI.SOE

MUI.SOE was using isEmptyChan, which has been deprecated.  This commit
updates the file to use TChans instead of Chans as the warning suggests.
Made time internal to UISF

UISF now instantiates ArrowTime, which provides time :: UISF () Time.
Although a time function was available before, with this new structure,
we guarantee that even if time is used in multiple places within a UISF,
it will always return the same value for the same frame.  This allows
timers and delays to be free of an input time parameter.
Added async function

The async function allows an SF to run asynchronously within an MSF.  It
will commonly be used to perform a costly function that only needs to be
run occasionally from within a UISF.
Added instrument widgets to Euterpea

Instrument widgets piano and guitar are now included by default, as well
as the songPlayer widget, which is useful on its own (perhaps it should
be moved out of InstrumentBase).

An example program was added to Euterpea.Examples, but needs more in the
way of documentation (should be literate, but isn't right now)
Modified UISF/Widget internals

MidiEvents are now no longer part of the Input in a UISF or in the
UIMonad.  Instead, midi messages are treated as regular streaming
values.  This cleans up some code.

Euterpea.IO.MUI.UISF.initialIOAction was added to allow widgets to
perform one-time initialization actions, removing the need for
unsafePerformIO in widgets.
Keyboard event handling now emits all key events

Now, instead of Key and SKey events, we have Character and Key events.
The Character events are fired when a character is pressed down, and at
no other time. This is in keeping with the current version of GLFW.

The Key event sends the GLFW.Key that fired it, as well as whether it
was pressed or released, and which modifier keys were down at the time.
The modifier keys are currently implemented as a tuple of three Bools
for Shift, Control, and Alt, respectively. At this time, the Key event
does not discern between left and right modifier keys for the final
argument. Users who need this level of precision should watch for their
individual events.

All of the widgets dependent on the raw events have been updated to work
with the new system. All of the included examples still function as
expected.

To make the instrument widgets work, I extended Data.Char's toUpper
function to include "uppercase" versions of numbers and symbols on a
standard US keyboard. This is just a temporary fix. The keymap structure
should really be built on keyboard keys, rather than characters.
Removed debugging code from Guitar.
MUI type, name, and namespace refactoring

Graphics.UI.GLFW should no longer need to be imported separately from
SOE (SOE exports everything necessary).
SOE.Event is now SOE.UIEvent to prevent namespace issues.
UIMonad.Input no longer exists (it was just a wrapper for SOE.UIEvent,
so we just use UIEvent now).
Some widgets have been refactored to be more stylistically consistent.
Added MidiWidgets

Moved all of the MIDI stuff from MUI.Widget to a new file
MUI.MidiWidgets.  Now, the core UISF stuff (SOE, UIMonad, UISF, Widget)
are basically MIDI free.
Added a kill message to midiOutB

Added a set of kill messages (Donya explained how in an email) to
midiOutB that gets activated on a Clear or SkipAhead input to prevent
hanging Midi notes.
Added documentation to the instrument files