Eurorack RGB controller for composite signal path

Hey Everyone,

I’ve been lurking on the LZX forums a little for over a year while gradually dipping my toes into video synthesis/glitch. I also started getting into PCB design for my job over the past year or so and I’ve been looking into designing some simple eurorack video modules based around a composite video signal path in my free time. Long story short I’ve successfully made a couple passive utility boards and am now nearing the end of a project where I cram Syntonie’s CV001, an upgraded Archer Video Enhancer circuit, into 10HP (Shoutout Syntonie for making their stuff open source). Well . . . by ending I mean ordering the boards and waiting until they show up to find out where I messed up (if they work I’ll post the details).

I’m scoping out the start of a new project to occupy my time while the boards are made and I really want a way to control the RGB colors of a composite signal. The current idea is to use a composite to RGB conversion circuit, run R, G, and B into 1K potentiometers with horizontal and vertical sync untouched, then convert everything back into composite for the output. I’m looking to use the Composite to RGB circuit found in the second post here and the RGB to Composite circuit found found in the " Building Your Own RGB To Composite Converter" section here.

I’m looking for any advice here that y’all are willing to give in regards to my choice of circuits, how to make things simpler/cheaper, and how best to make everything open source. I’ve been tinkering with electronics for a while now but mostly for my career and not for the open source DIY world.

I really enjoy the back and forth here on the LZX forums (especially everything surrounding Gen3), I appreciate the technical know-how and creative touches I’ve seen on here. I hope to add some info and flair myself as my projects develop.

Thanks!
FH

2 Likes

Chroma decoding is a tall order, and that will be your biggest challenge in a circuit like this. There aren’t any off the shelf ICs for decoding like there are for encoding (like AD724), and it’s a complex, multi-part process involving regeneration of a genlocked subcarrier, demodulation of that subcarrier into UV components, and then YUV to RGB conversion. These days usually this is all done in embedded systems with ICs like TVP5150AM1 or ADV7181C (this is what we use to decode composite in the TBC2 module and Chromagnon frontend.)

CVBS decoding all analog is not impossible of course! Just not the easiest place to dive in, with CVBS circuits (on the contrary, probably the hardest.)

Maybe start with trying to separate Luma/Chroma so you can manipulate them separately, then recombine them. Once you have that kind of infrastructure, there’s a lot of CVBS-specific trickery you could get going. And it’s a good step towards a color decoder design.

3 Likes

Separating luma and Chroma is a great idea!
Naturally I’m looking to start small and build up, my inspiration for the RGB control came from LoFi future’s GBS-8100 circuit bend which I was able to do earlier this year but I’ve burned out 4 of the five boards I’ve tried this bend on (I’ve always had very shaky hands). I was hoping the MC1377 IC would be sufficient but if needed I may be able to get the TVP5150AM1 working.

1 Like

The MC1377 or AD724 or similar would work for converting RGB to Composite as long as it is already blanked and black/white level clipped, and you have separate sync signals to supply. (Check out Cadet II schematics as an example implementation, with blanking and clipping, and the Cadet I schematic as blanking generator.)

But it is an encoder IC, not a decoder IC, so won’t help you go from Composite back to RGB. That’s the hard part.

Implementing TVP5150AM1 will require integration with a BT.656 stream receiver of some kind – such as an FPGA – and then some kind of encoder IC (like ADV7393 or similar) to turn that back into analogue. That’s quite a project, involving high pin count TQFP parts. But some of those encoders/decoders are meant to be back-to-back as a stream. (Still likely will need some sort of MCU to configure the parts over I2C bus.)

Point being, decoding and then encoding is a huge amount of costly infrastructure for one device or module – but modifying the color channels of the composite signal? That’s possible a lot more directly, by modifying the Luma / Chroma of the CVBS signal directly (phase shift/amplitude for Chroma, and contrast/brightness for Luma.)

2 Likes

Ahhh I see, I was misinterpreting the CPC composite Video Converter schematic I found. I thought it was a decoder IC, my brain must be going fuzzy from too much time spent in the lab!

Thank so much for the tips, I’m glad I reached out before I got started on this!

I’ll take your advice and make a module with some potentiometers tied to Luma/Chroma and see where that takes me.

2 Likes

After sleeping on it, I realized there are other tricks beyond encoding to think about too!

A technique Dave Jones used with his colorizer was IIRC to generate Red, Green, and Blue static colors as source images (their own composite video signals.) By mixing those with another image, you have another way to modify RGB – but without having to resort to any CVBS encoding/decoding.

4 Likes



I did some research over the weekend and designed RevA of a 4hp solution to exposing Chroma and Luma.
I think this should work, going to order some parts and boards this week after cleaning it up a bit. I’m a little peeved I couldn’t find a through-hole replacement for the LT6206 Op Amp (the pitch on these pins looks tiny!).

The general idea is:
The input goes to a splitter
One of the two outputs of the splitter goes through a low pass filter to get Luma, the other goes through a high pass to get Chroma
Luma and Chroma go to distinct potentiometers for attenuation control
The attenuated Luma and Chroma get recombined then sent to the output.

If this works then I’ll look into other ways to modulate luma/chroma for more interesting effects.

4 Likes

Looks like a good start! Have you simulated the circuit using SPICE or built it up on breadboard/protoboard? This circuit should be easy to simulate using something like LT SPICE.

You will probably need to add buffering on the outputs of your filters – both after the filters themselves and after the attenuation pots. You’ll also need a 75 Ohm video output buffer before your final output, driven at double normal gain. Right now all of these parts are going to interfere a lot with your filters since they are part of the same unbuffered circuit. Looking at the AC analysis of the filter and the transient analysis of the output should show you what’s going on – if you’ve never done simulation before, it’s pretty accessible and incredibly useful!

You also need to change to a notch pass / band pass topology rather than low pass / high pass architecture if you want the full signal bandwidth, but the way you’re doing it could work for a lo-fi approach. You will just be missing some sharpness that may otherwise be present in the luma edges.

3 Likes

Thanks for the tips!

I am going to order the parts and try to bread-board it, I haven’t tried using spice before.
I’ll download it and poke around.

Still pretty new to all this, by “add buffering on the outputs of your filters” do you mean a current limiting resistor or do you mean implementing something like R5 after the filters as well as before the output?
Also can you explain how to drive the output at double normal gain? am I just adding in an amplifier?

Swapping out the highpass/low pass for a notch/bandpass is a good idea, but I may keep both and put a switch in to give it a “Clean” mode and a “Lo-Fi” mode. I think I’ll need to boost this to 6HP to include the buffers anyway . . .

1 Like

If you can figure out how to draft a schematic/board layout, you will figure out SPICE fast! Think of it like having a virtual platform to test that your circuits work before you have to build them. LT SPICE is free and the most popular. We use TINA a lot here. I started with 5SPICE (free version.) Just like any layout software, they’re all a pain in the butt in different ways. Just dive in somewhere and simulate something very simple to start, like sending a triangle wave into a potentiometer and view the output.

Still pretty new to all this, by “add buffering on the outputs of your filters” do you mean a current limiting resistor or do you mean implementing something like R5 after the filters as well as before the output?

I mean a unity gain opamp buffer, like this:
image

Also can you explain how to drive the output at double normal gain? am I just adding in an amplifier?

Here’s a rough approximation, it’s easier to show a block diagram:

Thanks for the tips!

I hope I can help! LZX exists because a lot of smart folks spent a lot of time mentoring me, it’s my duty to pass that on.

Note: What I’m proposing above wouldn’t be entirely accurate for luma gain – and there’s no consideration for sync or DC restoration. This is actually a very big circuit! It’s part of the reason for the 1V RGB signal format – if you try to handle CVBS signals on a per-module basis, the circuits get giant pretty fast just for all the infrastructure that needs to be in place. Designing stuff for DC coupled 1V RGB is a bit less annoying in that way. But you should absolutely keep pursuing what you’re working on and learn as much as you can. The most important bits for your Luma/Chroma splitter is going to be the cutoff frequencies on the filters and that you can pass the full gain from input to output drivers.

2 Likes

Happy to see CBV001 schematic got you into making your own stuff, even though it is a really simple circuit and uses some crude circuit bending to achieve the effects, so probably not the best example of a composite video processor. As Lars pointed out, proper composite processing involves a great amount of support circuitry (DC restore, Y/C separation, blanking, clipping, etc…) so circuit bending is kind of a shortcut to get something happening to the signal with a reduced amount of components. In that sense, Cadets schematics shows most of the required circuitry and been really helpful in my understanding of this subject.

For Y/C separation, looks like the most straightforward way is to use filters as you did. Here is a simple notch/hi-pass configuration from Elektor UK, so cutoff frequencies are set for PAL. It uses single supply/transistors buffers so signal get AC coupled at the output, but the filters could be put in between op-amps as you did/Lars shown to avoid AC coupling. Also the op-amp stages would allow to adjust the gain of the signals that would be a bit attenuated by the filters.


(Complete article available here videomagazines/CVBS to SVHS - September 2001.pdf at main · Syntonie/videomagazines · GitHub)
I tested it and it works decently, I wasn’t really satisfied with the fact that there was still chroma left in luma, some devices were still picking colors, so would probably have asked to remove the burst too.

This made go into the digital decoder/encoder rabbit hole, as this will give a clean Y and C, with the ability to choose between different digital filters, but asks to be set in I2C using a microcontroller, and some FPGA processing to keep the output in-sync with the input, ending in a fairly complex implementation.

Then if the goal is to recombine Y and C later in the circuit/system, a not perfect filtering is less of an issue. Here is a test I did with Y going to a single comparator (converting it to a 1-bit b&w signal) and adding C afterwards, with some modulation from 2x Castle VCO of the comparator threshold. (sorry for the crappy picture extracted from an old IG story)

Old composite video processors are a good resource to look for those kind of filters, here is the Vidicraft Proc Amp (NTSC) http://soundexcellence.com/old_products/ProcAmp_5-Schematic.pdf with the filter labelled as “Chroma Trap”. It’s pretty interesting as it is all discrete, from sync extraction to actual video processing.
There was a PAL adaptation of this circuit published in Progetto Elektor (Italy) videomagazines/ProgettoElektor_1987_07-08 Color Processor.pdf at main · Syntonie/videomagazines · GitHub so filter cutoff is set for PAL subcarrier.

Anyway, awesome to see your working on composite video processing, I slowly shifted to modular/LZX 1V RGB format as it is a bit more convenient to work with, then still have a few ideas for composite processing and this kind of thread is motivating to get back to it :smiley:

7 Likes

Hey Syntonie,

Glad to get some input from you on this project.
The obvious draw to me of working with composite vs rgb is that it is a single signal and only requires one cable to patch.
I appreciate the schematics and I’ll see if they help me come to a good solution to the luma/chroma problem, I’ve been pretty busy recently but I started figuring out spice last week and should be able to put in some more time this week.

I actually just received my CBV001 and my hacked 10 hp rendition today:



Very excited to put them together tonight and debug my version using your’s.

My version includes a “Drop-In” board that does all the signal processing and a front board for the control/power interface. If this format works I’ll probably design future devices to have similar “drop-in” style boards to handle standard support circuitry.

Je suis fan de ton projet et J’apprecie ton travaille!

5 Likes

Finally got around to ordering RevA of the Luma/Chorma controller, and guess what . . . it didn’t work!

I decided to sit down and breadboard out something that could achieve what I want instead of designing complicated circuits in Altium and hoping they work when they show up (even though Altium is a lot of fun).

I made a passive lo-fi glitchy full color to grayscale doo-hickey and proto-boarded it.
It is essentially an input split to two signal paths A and B
Signal path A goes to the low pass filter from the schematic I posted earlier.
then it goes to a 1k potentiometer and into one half of a 100k potentiometer.
Signal path B goes directly to the other input of the 100K potentiometer.
The 100k potentiometer’s output goes to the output.

Some pictures below:
Color


Grayscale

Saturated

Now breadboarding out the chroma side of things, but it is not coming out as easily as the luma.

3 Likes

I ended up solving the “Composite RGB controller” as @creatorlars suggested, I convert it to VGA, expose the RGB signal paths, then convert it back to composite using some stock boards from Amazon:

I wire up some patch jacks from Thonk for the input/output.
I added in patch points for the RGB out (from the composite to VGA board) and RGB ins (from the VGA to composite board) then some added in some 1k sliders between the RGB in patch points and the VGA to Composite board (though next time I’ll use 100k sliders for complete signal extinction).

The final product looks janky, but it would fit behind a eurorack panel!


and some demo shots:


With this I can control the intensity and path of RGB signals.

Further improvements I’m thinking of for this project:

  1. Plug and play" adapter board so I don’t have to do so much hacky wiring between the boards and the frontpanel
  2. Front panel so I can mount it into a eurorack case
  3. Linking the power in from both boards to drive them in parallel
  4. feedback?

During the experimenting I did to get to this point I stumbled on a few other glitchy lo-fi circuits that make some cool effects.
I’m going to make a new thread to go over these circuits and pose some questions I’ve run into so far.

The solution I came up with is by no means original, I’ll credit LoFi Future with my approach.
I would have preferred to come up with a full through-hole component based approach, but I’m just not there yet.

I’m happy to mock up a diagram if anyone is interested, but it is fairly straight forward and you could turn to LoFi Future’s site for a similar but well documented solution:

5 Likes

Whipped up a board:




Uses the VGA to Composite/Composite to VGA boarts, sliders and patch jacks mentioned in the last post.
I also use 2x 2 pin @2.54mm pitch terminal blocks to handle the composite signals and 2x 3 pin @2.54mm pitch terminal blocks for the RGB signals

Unfortunately most VGA cables take up a lot of headroom, so I’m planning on using 2x of these to keep the package tight:

Instead of designing in barrel jack connectors to drive the boards in parallel, I’m going to use one of these:

Loose BOM is:
1 VGA to Composite, ~$16
1 Composite to VGA, ~$16
Board from OSHPark ~$17 (have to buy in sets of 3 from OSHpark, but they are pretty quick and high quality)
2x D15HD-M-BO-V1AV,~$22
3x 100k Sliders (Digikey) ~$4
8x Patch jack (Thonk) ~$5
2x 2 pin terminal block ~$4
2x 3pin terminal block ~$5
wires ~1$
2.1 barrel plug splitter ~$7
Total, ~$97

Still need to figure out a front panel, but I want to make sure the setup works as expected before designing something. It is pretty straight forward, but I wouldn’t be surprised if I made a mistake somewhere.

Edit: Found a mistake in my schematic, I swapped the labels for SGN and GND on the 2 position terminal blocks, but this doesn’t matter since I can swap the inputs on the terminal block.

2 Likes

Realized I have access to a 3D printer, so I mocked up a front panel design in solidworks:

Should be able to put everything together and test within a few weeks as parts come in and I can get them printed.
In the mean time I’ll revisit the Luma/Chroma controller, I’m gonna swap my SMD op amps for some through holes and revisit the circuit on a bread board.

1 Like