Templated channel interface that calls overloaded functions matching the necessary channel types. Designed this way to allow for specific customization of key-channel behavior without having to reimplement swathes of boilerplate. This base interface implements common functions that do not require extended editor data.