Added GUI, app settings, and saving/loading elements
for sending and receiving MIDI clock messages.
Added mouse listeners to the new components
so that the help box info stuff works for them.
Got MIDI Clock transmission working, tested with Maschine.
Sending a MIDI continue message first seems to set the
external tempo too high though. Why? Also, should I interlink
the midi clock current time with the main current time so that
I make sure that exactly 24 clock messages are sent between
each call to the processClock() function?
Set it so that a virtual MIDI input is created
on Mac/Linux when the AlphaSphere
isn't connected at launch, and can receive
MIDI messages.
Disabled the start/stop button when set to
receive MIDI clock. Set MIDI start and stop
messages to start and stop the clock when
set to receive midi clock.
Set windows users to be able to select a midi input
device when no sphere is connected. Haven't successfully
got midi data coming into AlphaLive yet though.
Started working on receiving MIDI message through HID.
Currently the bytes of a MIDI message within the HID report
are 100, 101, and 102.
Set the option to filter out 'clock' messages
when syncing to an external MIDI clock.
Implemented the MIDI Clock messages to
'drive' the global clock when requested to.
Added some local variables to GlobalClock
and AlphaLiveEngine to save the program
having to check AppSettings for values
periodically.
Set incoming clock messages to set AlphaLive's tempo.
Changed how and how often the tempo is set
when syncing to an external clock.
Added a comment describing how MIDI clock
could 'drive' sequences.
Setup the GUI and data persistence for auto midi channel mode.
This included modifying the JUCE::button class though Jules should
be making the same change in the near future.
Improved the info box text for the new buttons.
Got most of the backend of the feature working.
Still not perfect though.
Fixed a bug where setting the channel of a pressure-only
MIDI pad wouldn't work.
Got this feature working correctly now.
Changed the overall algorithm of how it determines
which channel to set a pad to, as I found bugs in the
old algorithm. Seems to be working correctly now,
though I need to change what happens when all
channels are active as described in the comments.
Changed what channel is applied to a pad
if all channels are currently active, so that it
will be set to the oldest active channel.