Regular .h files *should* be self-contained and independent of previous
includes and guarded to only include once. Make it clear which files
that *doesn't* apply for at all.
* reserve "probe" to actually probe for devices
* use separate probe for libusb and MIDI port devices
* use "available" to check if surface can be used
* allow both methods to be NULL
* remove unused ControlProtocolDescriptor* argument
Most surface just return `true` for available.
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
This makes "sequential" more or less mean an octave vertical interval,
but only for in-key mode. For chromatic mode, "sequential" is still just a
naive wrap-around layout for every note.
This juggles the implementation slightly in a way that's more resilient to
mistakes: the representation of pads in the surfaces is always fully reset
before setting up the grid, and a state message is sent for every single pad
once after the scale algorithm sets things up.
This means that scale algorithms don't need to deal with hairy edge cases like
running off the end of the scale or the valid range of MIDI notes.
"Mostly" because there are still some issues with horizontal overlap between
entries, but I think that's something that needs to be addressed separately.
Like earlier issues, this was caused by using a screen-derived or default
cairo/pango context. I also tinkered with some constants to make things look
sensible to me, and hopefully everywhere since it should always look the same
with the context fix.
Found via `codespell -q 3 -S *.po,./.git,./share/patchfiles,./libs,./msvc_extra_headers,./share/web_surfaces,*.patch -L ba,buss,busses,discreet,doubleclick,hsi,ontop,ro,scrollin,seh,siz,sord,sur,te,trough,ue`
In some cases old and/or conflicting port names were saved
with the session (e.g. "Faderport" for FP1,8). Loading old sessions
then merges this state into the config, which could lead to
port-registration failure when the surfaces was enabled.
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible