Since you guys were talking about open source firmware, I wanted to shed some light on alternative ways to connect the Spectrum to the creative people out there like e.g. the maker community. Namely, by allowing automatic control of the Spectrum, to control features which are already controllable through the on-screen menu anyway, but allow to do it through a port or an API.
The maker community might seem like a niche, but all the gadgets and tools that will be created around the Spectrum will be potentially available to the people outside of the maker community, which in turn increases the value of the Spectrum for all community members who want customizations. The Spectrum might even be used as a teaching tool. It’s a win-win for everyone, and it would make the Spectrum a very unique community oriented product, which nicely integrates with the common theme here I think .
Let’s start with the “Why”. Possible use cases. Projects that might use this port are for example all sorts of macro keyboard functions to switch modes with a single press of a button, for example:
- To switch picture-in-picture modes and position, allowing you to quickly check another video source while in game. Or to move the inner picture out-of-the-way.
- To quickly switch between two PCs you might have plugged into the Spectrum, similar to a KVM switch, without having reach for the monitor every time.
- To switch the scaling algorithm for low-resolution video input, or turn off scaling entirely to see how something looks like from afar. (Useful for developers)
Some non macro-keyboard related project ideas:
- Adjusting the brightness and tint of the screen based on the lighting in the room. (like Apple’s “True Tone”)
- Shutting down the Spectrum into standby and waking it up again based on events like whether you’re sitting in front of your PC.
- Creating a wake-up alarm where the monitor turns on in the morning to wake you up softly.
- Automatically switching interpolation modes to linear when you’re watching a movie.
These are all potential features that the community potentially gets for free, if such a port existed.
Let’s talk about “How” such a port might be implemented. Here are some thoughts:
An honorable mention is a UART/SPI/I2C port. They might be industry standards but they expose the spectrum to external voltages and electrostatic discharges (ESD) that might fry the electronics of the spectrum. Not a good idea to expose something like this to the maker community on an expensive device like the Spectrum, it’s basically an accident waiting for a place to happen. UNLESS you add some galvanic separation into the port, which in turn will increase the production cost of the spectrum, considering it’s a feature that most people won’t use anyway.
API support. Offer a .dll exposing an API which allows us to control the firmware from our PC. The good thing is it’s an all-software solution. The bad thing is, the manufacturer will have to integrate the API into the drivers for at least windows and linux for this to be worth it… and the API will always be restricted to the operating system for which such drivers were implemented. This is a LOT more work (read: cost) than the feature is worth.
And why should the ability to control the Spectrum depend on the operating system anyway? Your on-screen display is independent of the operating system, and so should be this. Also, if the firmware goes open-source, this option might actually be implemented at some point by the community. Moving on.
- Infrared port. Solves both of the above problems and then some. An infrared diode does not require an electrical connection to third party electronics, so there is no danger. And it does not depend on the operating system you have installed on your PC. It just works, it’s cheap, and easy to control even by an Arduino if the protocol is slow and easy to understand. (E.g. UART over infrared + a long checksum to filter out the noise. Implementing that in firmware should be child’s play for Spectrum’s manufacturer.)
The additional production cost is ridiculously low, the infrared diode and the few extra components are as cheap as is the hole in the housing to let the light through to the diode. And the documentation doesn’t need to be long to be understandable. Sounds perfect.
Let’s get the placement of the diode out of the way. There’s the option to place the diode in the back, or in the front.
The only reason why I mention the front is the maker community might be able to create all sorts of remotes for the Spectrum. But the front diode will also need to be tested in the QA stage of production of the Spectrum. This just unnecessarily complicates things, so unless you are actually planning to release your own remote, let’s keep it simple. Also, that community is resourceful enough and will be able to create a remote extension if they need it, regardless of where you place the port.
In the back, the diode can be directly placed on the mainboard at no additional cost. The good thing about the back is that you don’t need to cut the plastic and to cover it with a transparent shield. It can be literally just a hole in the metal where the diode will be looking out from, right next to one of the other ports. This way, the community can attach extensions to the Spectrum without these extensions being an eye-sore (DIY, afterall), hidden behind the device.
This resulting feature is easy to test in the QA stage of your production pipeline. All the manufacturer has to test is that the signal reaches the processor. You don’t even need to insert any connectors since it’s infrared, all you have to do is place an infrared LED in the correct position on your test stand and the test should be done in less than a second.
Implementing this feature in the firmware should also be very easy, since most of what needs to be implemented should already have been implemented. Conceptually speaking:
I’m not pushing for this feature, especially at this late stage in the game. I want my Spectrum to ship on time . This might be something for the Spectrum v2. I don’t know. I was just always wondering… if this is so easy to do, why hasn’t anyone done it? Simply to boost the popularity and flexibility of a product? I’m just calling it as I see it. And if there’s one monitor in the whole world that might be interested in having this sort of community oriented feature, it might be a community driven monitor like the Spectrum.