The TV MAN is a micro controller based system to generate a black and white analog video, and an audio signal. It consists of a custom designed PCB and a software library to program the micro controller. The idea is to have a low-cost environment for conducting experiments in the field of creative coding and generative art. It can be used for creating sound and video installations, but can also be a good foundation for teaching the basic principles of computer graphics. You might be asking yourself: It's 2021, why analog video? Well, first of all it is for aesthetic reasons. Analog video, especially presented on old CRT screens has its very own charm. Just think of the slightly blurry pixels, the vibrant buzzing and fuzzing, the imperfections and aberrations. Secondly, CRT screens became an obsolete technology over the past two decades. With TV MAN these abandoned devices might get a second chance by upgrading them to interactive installations and artworks. And Finally, it is also a very pragmatic and technical decision: generating an anlog video signal with an eight-bit micro controller isn't easy, but it is by far more doable than trying to connect to modern digital screens.


When designing the circuit board, I had two goals in mind. It should capture the retro aspect of the whole project, and also go beyond the usual boring standards of PCB design. Therefor I decided to use only through hole components, as they were already around when the first CRTs were built. And also the selection of the color yellow emphasizes the retro aspect, since this is how basically all circuit boards used to look back then. The unusual board outline, but also many graphical elements on the different layers give it a unique look, that totally stands out compared to 'normal' PCBs. Also the placement of the components and lanes in different weird orientations breaks with the common rules, and thus sticks out to the observer.



The TV MAN is built around the iconic ATmega328P micro controller, a very common chip that is also used for the Arduino Uno. This eases the process of programming, because there is a ready made toolchain already provided.
To generate the analog voltages for the video signal some kind of digital to analog converter is needed. The simplest, yet most effective solution is using a so called 'R2R resistor network'. This is a method where a cascade of resistor voltage dividers is driven by a bunch of digital outputs, in the case of TV MAN there are four outputs. Basically each output relates to one bit, so with four outputs we can achieve 16 different voltages, thus 16 different brightness levels. Besides being the cheapest solution, a R2R network also has the least overhead from a software perspective.
The way the audio signal is generated is more of a faux analog output. To be more precise a one-bit digital to analog converter is used, making use of one of the PWM outputs of the ATmega. By lowpass filtering the high frequency PWM wave a seemingly analog voltage can be produced. To improve the audio quality, and also to protect the micro controller from getting fried by higher loads, an op-amp buffer is added to the audio signal path. All remaining pins from the micro controller are also broken out to headers, so buttons, sensors, and other components can be added easily to enhance the functionality of the circuit. Additionally there is already a push button, as well as a led on the board to provide some very basic interface. The TV MAN doesn't have its own power supply, instead it can be powered via USB. For further understanding a schematic diagram can be downloaded at the bottom of this page.



For programming the TV MAN I created a software library for the arduino environment. This library handles the process of generating the video signal, but also provides a collection of high level methods for drawing to the screen. Besides the possibility to manipulate single pixels in the grid, there are also functions for drawing text, as well as simple geometries like squares, circles and lines.
Since generating analog video signals requires very precise timing to work properly, crucial parts of the library were written in the AVR assembler language to obtain control over every CPU cycle.


So far I conducted a series of experiments exploring ways to create audiovisual compositions. Visual patterns are generated algorithmically and change over the course of time until they might repeat, or evolve endlessly. To get a strong correlation between the visual and the acoustic layer, image data is used to influence the sound synthesis. During experimentation I stumbled on ways to create circular patterns relatively simple, what inspired me to try and create an animated eye. I later used this to build a robotic head from cardboard, with two very small CRTs (salvaged from the viewfinders of old camcorders) as eyes.


Additional resources

Arduino library
code for the TV MAN