Clock GUI rework
- replace image for Midi IO for something more meaningfull (up and down arrows).
- use clock image for new dialog window
- create new dialog window for clock settings
- local vs net switch
- if local : bpm spinner.
- if net : master vs slave switch
- if net + master : bpm spinner + latency slider
- if net + slave : row of buttons for tempo multiplicators + latency slider.
This still an open topic. So, here is my opinion for each features :
Modes
Local and Master modes are nearly the same. In an automatic discovery context (zero conf), master don't know he's a "master" while slaves register to him. Local mode is just Master mode without slaves. So the only 2 modes to be technically distinguished are Master mode and Slave mode.
Tempo multiplicator/divider
This control may be interserting even in local/master mode. Some use cases :
- in local mode, it allow user to slow down (half tempo) a bit and go back to original tempo.
- in master mode, master app would need to be twice common tempo. If master could only change common BPM, all slaves have to adapt their speed, and that's not always what master want ...
- in slave mode, since slaves can't modify BPM, it's mandatory to have this control.
This control can be considered as "live" control, so it need to be directly accessible.
BPM spinner
This control only have sense in Master mode since slaves can't change it. In slave mode, this control could be replaced by a tempo feedback sensor calculated in real-time by ticks reception.
Play/stop/pause/resume controls follows the same rules. In slave mode, all these controls could be in unmutable state, reflecting Master's state (pause button when master pause, ...etc).
latency settings
Any mode need latency settings. For instance, beat visualization (via bang or any blink, animation) need to be delayed to have perfect audio/display sync.
Latency is per device, set once and will be the same for all PdPublisher apps. Shared preferences (http://developer.android.com/guide/topics/data/data-storage.html#pref) is well suited for that.
Since latency is in general set once, this setting don't need to be directly accessible. Settings window may host this slider.
MIDI settings
For now only midi clock is implemented but latter, midi controls / notes and maybe SysEx could be implemented. Maybe dialog settings is a Midi dialog (even if Midi communication is made by network, it could be made via USB). So an accurate icon could be a Midi icon (din ? original MIDI icon ?)
What do you think ?
ERRATUM for latency settings :
i made a confusion between audio latency and network latency. This subject is maybe out of this topic scope.
Major part of GUI rework has been made. It still some enhancement to have a better GUI but it's work has it is. So changes are scheduled to a futur version.