Panel Design

Please see visual PDF manual attached. The Panel features 2 oscillators with shape control, feedback, colorizer and much more. There is also a modulation matrix if the buttons are held allowing you to feed oscillators into the feedback scan and each other.



Hypno Is essentially a fancy Pi Zero Hat. It uses Rasbian as its operating system and the pi zero GPIO to interface with an OpenGL Engine.


Hypno utilizes a common MCP3008 ADC via SPI to take in control voltages (scaled from -5 to 5v to a more acceptable 0 to 5V)


Knobs are taken into a single channel of the MCP3008 through a multiplexer. The knob values are offset in software based on the CV inputs.


The system is written with C++ & GLSL. This part is open source: Im especially excited to see how people will implement NDI into digital video hardware.


The Engine runs on a basic engine with one plane in OpenGL where it draws the output of a GLSL shader. CVs + Knob values are fed into shader uniforms which are used in the engine to change things. 

GLSL Shaders

The Shader system is inspired by analog video synthesis, every shape has a simulated "scan" over the screen and a function is mapped to it. This function can be rotated and the scan smoothly transformed into polar coordinates.


WiringPi is used for GPIO interactions because Arduino is fun and Im used to it already.


While this is not currently supported on the panel. The device sends Its video feed over NDI which means it can easily be used with existing VJ software like Resolume.



I used Lemur to prototype the panel before committing to panel layout. This lets you go through quick panel design iterations without sinking your paycheck into china. Some layouts are provided in the repo (but aren't guaranteed to work). The basic mapping is "/vidos/N" controlls "N"th CV. So to control cv 0 you would send a float value to "/vidos/0"


The codebase receives midi and logs it but doesn't current have a mapping to the Shader uniforms.