use session stripable selection API
[ardour.git] / libs / surfaces / mackie / TODO
1 * implement handle_port_inactive properly
2 * two bcf doesn't work
3 * remappable buttons (OSC or Surfax?)
4 * 7/1 configurable to 8
5 * need an object that can encapsulate different port types, ie BCF vs MCU. Not at the surface level.
6 * finish button implementations.
7 * concurrency for bank switching? And make sure "old" events aren't sent to "new" faders
8 * TODOs in code
9 * removal of a route results in a strip that isn't dead, but doesn't have any effect on the session
10 * use i18n. see string_compose
11
12 MCU
13 ---
14 * if mackie wheel moves too fast, it's ignored.
15 * gain/panner display in second line
16 * metering on second line
17 * per-strip signal led
18 * midi bandwidth?
19 * Zoom buttons, from Jean-Martin Barbut. In fact I'm a bit desappointed with those functions, because I was used
20         to use the 4 "N-E-S-W" buttons to zoom in and out with horizontal
21         buttons and zoom in/out on track height with vertical buttons. That is
22         with the zoom button in. with the zoom button off, it selects tracks
23         with vertical buttons and selects regions with horizontal buttons. This
24         was quite useful. The fact that the zoom button switches the wheel to
25         zoom is fine, but it would be great to also have the track/region
26         selection and the track height available from those buttons. I.e : you
27         select a track with the vertical arrows and you increase/decrease the
28         eight of the track with the zoom btn on. This combined with the region
29         selection allows to zoom in a region (vertical and horizontal zoom) very
30         easily.
31
32
33 Later
34 -----
35 * how long can UI signal callbacks take to execute? What happens if they block?
36   where ENSURE_CORRECT_THREAD is a macro that is modelled on ENSURE_GUI_THREAD
37   if the handler is not called in the "correct thread", it will use a pseudo-RT-safe-enough technique to get the correct thread to recall "handler" later on, and return.
38 * alsa/sequencer ports unstable. possibly problems with use of ::poll
39 * use glib::Timer instead of mine. Actually don't because it's not very useable.
40 * crash when mmc port set to mcu?
41 * remove commented couts
42 * Perhaps MackieControlProtocol shouldn't implement MackieButtonHandler
43 * Need a HostAdapter class to encapsulate ardour calls
44 * talk to route plugins
45 * check for excessiveness (ie too many events making other subsystems work too hard)
46 * Queueing of writes?
47 * Generic surface code to common location
48 * bulk remote id changes cause too many surface updates. use Config->remote_model.
49 * which bank switching - overlap or dead faders? Option?
50 * signals for buttons?
51 * MackieControlProtocol in namespace Mackie?
52 * power-cycling of surface. fd_midiport doesn't close.
53 * mix busses and/or a "bus-only" bank/mode
54 * what about surfaces like Mackie C4 and BCR2000?
55
56 UI integration
57 --------------
58
59 * maybe use current snap state for jog wheel and ffwd/rew
60 * Some indication on the UI of currently bank-switched-in routes?
61   Useful for surfaces that don't have a scribble strip.
62
63 Bugs
64 ----
65 * when using alsa/sequencer, some midi events intended for mcu port end up being
66   read by the seq port.
67 * MIDI::Port::type() returns _type, which is undefined. It might be in the descriptor
68 * auditioner doesn't connect to master 1 and master 2 - it loses the spaces.