Overview
vsynth is a (planned) new Tiliqua bitstream which emulates the architecture of an analog video synthesizer, with a few digital oddities. I might change the architecture a bit as this gets closer to being done, but I figured it might be fun to play with in its current form. Specs are:
- 2 video oscillators (sine with 'fold' shaping)
- 1 video feedback path with rotation / scale / translate
- 1 'beam' (stroke-raster converter)
- 2 video mixers
- 2 intensity / color keying stages
- 1 colorizer (whole chain is grayscale, palette colorizes it at the end)
These are hooked up as follows:
Osc A ──┐
├──▶ Mixer 1 ──▶ Key 1 ──┐
Osc B ──┘ │
├──▶ Mixer 2 ──▶ Key 2 ──▶ Colorizer ──▶ OUT
│ │
Feedback ─────────────────▶─┘ │
(rot/zoom/translate) │
▲ │
└──────── reads from framebuffer ────────────────┘
▲
└ BEAM (stroke-raster: writes to feedback buffer)
Each component can be tweaked in the UI to create generative graphics. Some examples:
I/O
- Tiliqua input 0 and 1 are 'x' and 'y' inputs into the BEAM rasterizer, for plotting vectorscope traces onto the screen.
- Tiliqua input 2 and 3 are 'morph' x and y inputs, these are CV controls which can be used to morph between different graphic presets.
- Basically you can save 4 'presets', each preset becomes the edge of a square, and you can use these x and y inputs to select a preset or morph anywhere inbetween.
- Tiliqua outputs 0-3 are CV outputs sampled from the intensity of 4 places on the screen -- meaning the generated shapes can also be used for CV-controlling other moduleds.
Quickstart
The quickest way to get started is:
- Head over to the
PRESET page, select a preset to save your graphics PRESET->slot: usr0/usr1/...
- Hit the 'PRESET->random' button a bunch of times until you end up with something close to what you want.
- Adjust the parameters manually until it's closer to what you want.
- Switch to a different preset
PRESET->slot: usr0/usr1/usr2 -- you'll see the display change, but your settings have been saved in the previous slot (in RAM, not in flash). You can always recall it by switching back to it.
- Once you have set up 4 presets, you can:
- Save all to flash using
PRESET->save-all on the PRESET page.
- Switch on
PRESET->morph to turn on 4-way CV-morphing from inputs 2 and 3
- Note: when
PRESET->morph: Y, you can't manually tweak the video settings any more, you'll instead see all the values changing according to the current CV inputs morph.
- At any time, you can
BEAM->enable the beam rasterizer, which writes vector inputs from input 0 and 1 to the feedback buffer. Note: the BEAM settings are not saved in user presets, they are global.
Flashing
Bitstream archives are attached below. Note: they may take a few seconds to boot, if you previously saved options in that slot. After the first boot and first PRESET->save-all, it should be much faster to boot.
Flashing instructions are here, use the webflasher or the CLI, whatever you like.
NOTE: these bitstreams are pushing the memory clock to the edge in the interests of maximizing framerate. It's possible it won't boot on some devices, although I haven't seen this. If this bitstream doesn't boot on your device, let me know and I'll attach another one with slower clocks.
TODO (not done yet)
- Some kind of 'preset copy' mechanism to copy existing presets into different slots. This will be useful for doing morphs between specific parameters instead of completely different presets.
- Make the colorizer gradually morph between pallettes instead of hard cut.
- Preset 'scenes', so we can store a number of 4-preset scenes, instead of just one.
- MIDI control of all parameters and morphing
- Code: not release yet, as it is not up to the rest of the repository's standards. It touches a lot of other components in the repository which could break other bitstreams, so I need to figure out how to refactor things for a clean merge. Maybe even
vsynth could live out-of-tree (i.e still open source but in its own repository), given how much stuff it touches. I need to figure this out.
Comments
If you are having any trouble with this bitstream or have any ideas, feel free to comment below! Eventually I'd like to promote it to one of the factory bitstreams.
Overview
vsynthis a (planned) new Tiliqua bitstream which emulates the architecture of an analog video synthesizer, with a few digital oddities. I might change the architecture a bit as this gets closer to being done, but I figured it might be fun to play with in its current form. Specs are:These are hooked up as follows:
Each component can be tweaked in the UI to create generative graphics. Some examples:
I/O
Quickstart
The quickest way to get started is:
PRESETpage, select a preset to save your graphicsPRESET->slot: usr0/usr1/...PRESET->slot: usr0/usr1/usr2-- you'll see the display change, but your settings have been saved in the previous slot (in RAM, not in flash). You can always recall it by switching back to it.PRESET->save-allon the PRESET page.PRESET->morphto turn on 4-way CV-morphing from inputs 2 and 3PRESET->morph: Y, you can't manually tweak the video settings any more, you'll instead see all the values changing according to the current CV inputs morph.BEAM->enablethe beam rasterizer, which writes vector inputs from input 0 and 1 to the feedback buffer. Note: the BEAM settings are not saved in user presets, they are global.Flashing
Bitstream archives are attached below. Note: they may take a few seconds to boot, if you previously saved options in that slot. After the first boot and first
PRESET->save-all, it should be much faster to boot.vsynthfor Tiliqua R5: vsynth-4e7b72a3-r5.tar.gzvsynthfor Tiliqua R4: vsynth-4e7b72a3-r4.tar.gzFlashing instructions are here, use the webflasher or the CLI, whatever you like.
NOTE: these bitstreams are pushing the memory clock to the edge in the interests of maximizing framerate. It's possible it won't boot on some devices, although I haven't seen this. If this bitstream doesn't boot on your device, let me know and I'll attach another one with slower clocks.
TODO (not done yet)
vsynthcould live out-of-tree (i.e still open source but in its own repository), given how much stuff it touches. I need to figure this out.Comments
If you are having any trouble with this bitstream or have any ideas, feel free to comment below! Eventually I'd like to promote it to one of the factory bitstreams.