Can someone explain Doorway to me? What will it do to my Cortex-generated ramps and shapes?
So Doorway is a KeyGenerator+Fader (or thats how I see it in my head).
KeyGenerators are just analogue comparators, that create solid shapes (without gradients) pretty much like a key hole or like a graffiti stencil
Think KeyGenerators as a way to create a hole (or wipe) between two signals. To do this try patching the diamond ramp from your cortex (H+V with mirroring) into the source and you should see a black/white diamond. With the gain control of the KeyGen you can control the size of the key/mask in this example you can control how big the diamond is, the comparator is basically matching the “threshold” value with the gradient of the diamon and then its letting it pass eith with a black (0v) or white(1v). Its very important to understand that KeyGens only produce stencils (0v or 1v) and not gradients.
The next thing will be to patch different signals into the foreground and background inputs of your doorway. Lets say you patch a horizontal range VCO into the background, and a vertical range VCO into the foreground. This will change the key output to a Shape with a diamond filled with horitonzal lines (from the vertical vco), and a background with vertical lines (from the horizontal vco).
So if you input signals into source+background/foreground you have a KeyGen+Fader if you only input signal into the source input you will only have a stencil output (0v or 1v) with a shape that will depend on the source signal and the comparator threshold value.
BTW you also have a keygenerator in the VisualCortex (you need to set the switch to + or - key) and this will wipe between chan A and chan B of the cortex using the shape you input in the key input of the cortex.
Check this example
There are many ways to use this module.
Electrically, it is a voltage controlled high gain amplifier with clipping and offset, which controls a voltage controlled crossfader. The outline function also turns it a variant on a full wave rectifier.
In video/broadcast terms, it is a key generator and a monochromatic keyer (it has a single channgel crossfader, not an RGB crossfader.) When fed ramps and gradients, this makes it a wipe generator, where the threshold controls the wipe transition like on a video mixer or console. If fed luma video as the source, it is a luma key generator.
In synthesis terms, it is a waveshaper and crossfader. It can change the shape of input waveforms in various ways, and then use those waveforms to crossfade between two sources.
In the system use case, typically you send some waveforms or mixes of them to this, and use it to generate a hard edged shape or key pattern. That pattern can then fade between two other patterns, so it lets you quickly build up complex arrangements. You then either mix those arrangements directly to RGB video (by patching them to color inputs or mixes) or use them as modulation for compositors or colorizer offsets.
I want to make sure I am understanding the Gain and Outline controls correctly! I don’t have the module, just watched vids.
Typically, any location in our key is 0 or 1, depending on if our control source is above or below the threshold. 1 would mean our foreground passes through at that location, 0 would mean our background passes through at that location.
Here though, the value of the key is continuous between [0…1], where the value controls an xfade between the bg and fg. The part I am having a little trouble understanding (electrically/mathematically, not visually) is how the value of the key is determined according to the gain control.
I think this is accurate (ignoring the actual correct voltage ranges for the xfade VCA control pins: assume 0 = bg vca open/fg vca closed), 1 = bg vca closed/fg vca open):
- If the control source is below the threshold: key = 0
- If the control source is above the threshold: key = ctrlsource*gain (and then clip output at 1).
- So if the gain is cranked to max, we essentially just turn our circuit into a typical comparator, since the moment we cross the threshold the gain boosts the key all the way up to 1.
Assuming this is the case, moving on to outline:
You say a full wave rectifier gets switched into the signal path, and also that the key value gets inverted if it goes above 1. Having a little trouble seeing what’s happening electrically… I imagine the key voltage has been shifted/inverted in such a way that the the control source for the key “crossing above 1” is actually crossing below 0. This would mean using a fullwave rectifier would achieve the desired effect of decreasing our key value after we cross the “fully fg” level.
In any case, ignoring the voltage processing to get the voltages into the right range/inversion for the rectifier and xfade VCAs, roughly what’s happening in outline mode is:
- If ctrlsource*gain > threshold and ctrlsource*gain<1, key = ctrlsource*gain (same as if outline is not engaged)
- If ctrlsource*gain > 1, key = 1-ctrlsource*gain (and then clip at 0?).
Is this about correct?
Wow! Yes! That is all correct. Much of the Expedition Series relies on various voltage algebra techniques like this to achieve its more advanced analog functions. All the circuits have precision 1.00V buffered references, so we use those a lot for level shifting tricks.
Are you adapting the concepts to software or code you’re working on?
The basic soft key function is:
((INPUT - THRESHOLD) * GAIN) + 0.5V = KEY (UNCLIPPED)
Then the outline function:
1.0V - ABS(1.0V - KEY) = OUTLINE (UNCLIPPED)
Then black/white clipping:
IF(KEY > 1.0V): KEY = 1.0V
IF(KEY < 0V): KEY = 0V
(FG * KEY) + (BG * (1.0V - KEY)) = OUT
Thanks for this!
I originally had that shift from threshold in the key but got rid of it as the interaction with the way I wrote the “if/then” stuff and the outline section seemed wrong…
Using the distance from the threshold but then centering it around 0.5 makes perfect sense!!
Really great to see it, now I can imagine how it’s implemented electrically well enough
Not working on anything in particular - been building/designing eurorack audio stuff for a while now, but been dying to get into video synthesis for ages. Don’t own anything yet, but hoping to save up enough soon for a Cortex, Staircasex2, and Doorway, and maybe some cadet stuff
Hope to eventually adapt some designs in working on into the video domain. In particular, a voltage router which is kind of like a voltage controlled switch, but with variable-width switching windows (you can control the switching thesholds)…
independently processing the windows and shifting/recombining them in tandem with changing the switching levels lets you do cool stuff depending on what you drive the switch control with - also whether the signal to slice and the control signal are the same or different plays a big role… can make it a weird wavefolder, sequencer, or just “demultiplex” one signal to 4 destinations
Fantastic! Yes, what you’re describing would make an amazing video synth module. We need more multiplexers and shifting window modules. AD8561 is a great comparator to check out, and 74HC4053 is super cheap for DPDT switching – I generally run everything internally off +/-5V rails. As always let me know how I can help.