My friend recently sent me this video of an oscilloscope playing a video.
I immediately wanted to do the same, but it's a huge project if done properly. It has an ILDA interface/driver, high-speed custom DACs, etc.
Instead, I tried a simple alternative - creating a raster monitor from an oscilloscope.
Here is what I did:
1. Put oscilloscope to the X-Y mode.
2. Take a standard composite video (from a DVD player in my case).
3. Separate horizontal and vertical sync signals from the composite video.
4. Use these sync signals to generate two saw-tooth signals for raster. A Vertical sawtooth (frame signal) scans top-bottom and a sawtooth (line signal) scans left-right.
5. With these two signals I should get a raster/white screen on the scope.
6. Assuming that I'll be fine without gray shades, just a black and white image appears.
7. Keep a raster running all the time, but when the beam is supposed to be passing over the black area quickly change the horizontal (or vertical?) signal to the constant voltage. Be sure to choose this voltage to cause the beam to jump to the outside of the scope screen. This will form a dark spot.
This sounds simple and could be done without microcontrollers, using just a handful of analog ICs. The only tricky part would be to separate sync signals from the composite video. I used to repair TVs a long time ago and vaguely remembered that there was a specialized IC to do exactly that. Sure enough, Google remembers it better than me: LM1881 Video Sync Separator.
Here is the adapter schematic:
The horizontal sawtooth signal is generated by R1, D1, C2 and buffed by the U1. The signal is turned on/off by the analog switch U2A.
The vertical sawtooth signal is generated by the R6, D2, C5. It is inverted by the U2B, so it actually becomes an inverted sawtooth. This is because in the oscilloscope world, higher voltage causes the beam to move up, but a TV scans top-bottom.
U4 is a comparator to decide when it is time to turn the beam off (based on the brightness). Actually it's not a "turning the beam off", but instead it disconnects the horizontal sawtooth signal from the scope input, which is equivalent to applying 0V to the input. This causes the beam to move to the left, beyond the scope screen, so the beam is not visible.
The alternative solution would be to use scope's blanking input (z-axis) to turn the beam off, but I thought that it would be too much like a standard TV.
Here are a few pictures/oscillograms to illustrate how it works. The source videos were paused at this frame:
Below I am displaying both channels in standard scope mode (not X-Y).
The bottom sawtooth is vertical channel. I am triggering on the falling edge of this signal (vertical retrace).
The lame picture above the vertical signal is my horizontal trace.
The bright line just above the vertical trace signal is where my horizontal trace parks for the "beam off" period.
This is the same as above, just zoomed into the highlighted area (head).
This is the result, playing the same video as the original project (Touhou - "Bad Apple")
Note: It looks like the video is losing frames around 0:30, but this is from the original video and has nothing to do with my adapter.