Articles

Starting Points in Max - High-Contrast Graphics

How do you get started when you begin a project in Max? Ever wondered how people create those striking high-contrast visuals you see on Instagram and at shows? For this edition of Starting Points in Max we specifically reached out to 3 artists who are all working with Jitter to produce high-contrast, generative visuals and asked them to share their personal starting points. The results are each a unique view into Max patching…

Ferenc Fabian / Ferko

@ferkohyeah
Ferko: The patch is an exploration of the possibilities of procedural basis functions on surfaces, utilizing two jit.gl.bfg objects as texture generators. In this example, we have a 3D shape that can be modulated by our first texture, while a second "shape," a plane, is generated by a jit.gl.videoplane object, receiving the same texture from the first bfg object.A jit.gl.pbr is connected to both 3D shapes, one to a jit.gl.mesh and one to a jit.gl.videoplane. This setup allows for experimentation with lights, reflections, and colors simultaneously, giving the scene a more organic and realistic appearance. It creates a unified virtual space that interacts with our lighting provided by a jit.gl.light object.The first bfg texture is responsible for the colors, while the second bfg texture provides the roughness and height maps. Both textures can function as environment maps, allowing the sending of a frame to jit.gl.pbr to overwrite the existing map. The patch also incorporates a simple mod matrix with one "LFO" generated by a jit.mo.time object, which can introduce additional movements. The LFO manipulates the "time" parameters of the two BFG textures, creating pseudo-random movements, and it can also modulate the X, Y, and Z axis of rotation of the single light included in the patch, providing hemisphere lighting.

Ferko

Follow @ferkoyeah on Instagram

Starting Point - Ferenc Fabian.zip
zip
Ferko's Starting Points patch

Marta Verde Baqueiro

@martaverdebaqueiro
MVB: This patch has been designed as a starting point for crafting generative visuals in striking black and white, fusing audio input and noise functions to create a dynamic, ever-evolving visual experience.
At the core of the patch is the use of BFGENER8R from the Vizzie toolkit, combined with jit.gl.mesh and jit.gl.gridshape, laying the groundwork for a mesmerizing 3D environment. The primary visual element, a mesh shaped by jit.gl.gridshape, undergoes artistic transformation through BFGENER8R's procedural functions. These algorithms adapt in real-time to the audio's amplitude, fostering an engaging interplay between sound and visual form.
A pivotal enhancement to this patch is the integration of jit.gl.node, which captures the rendered visuals as a texture. This addition opens up a new realm of possibilities, allowing for the application of various effects and filters from the Vizzie toolkit to modify the generated graphics. One notable effect is SLIDR, which offers the capability to temporally blend or smear the visuals, adding a fluid and dynamic quality to the imagery.
The patch offers extensive customization options. Users can render the mesh in various forms – points, lines, or a full mesh – and jit.gl.gridshape provides a selection of basic 3D shapes like spheres, cubes, or planes, each with adjustable resolutions. Future enhancements include integrating more shapes, using jit.gl.multiple for content replication in various modes, and applying frequency band analysis for more accurate audio-visual correlations. The potential addition of jit.gl.camera is also envisioned, offering enhanced control over visual perspectives and compositions.
Ideal for sound artists, visual designers, and performance artists, this patch is a gateway to a world of creative possibilities. Step into this realm where sound and sight harmoniously converge, and let it inspire your artistic expression in live settings and beyond.

Marta Verde Baqueiro

Follow @martaverdebaqueiro on Instagram

mVerde_patch.maxpat.zip
zip
Marta's Starting Points patch

Aaron Myles Pereira

@aaronmylespereira

AMP: In this patch I explore the use of the multiple instancing techniques creatively along with jitter expressions to give dynamic movement to shapes all synced to the global transport. There are 3 scenes with certain user adjustable parameters to perform each scene.

Scene 1: Using a plane gridshape along with the jit.gl.mesh to draw it as a line and multiple to create copies of it. The animation matrices are calculated using a [jit.expr] and plain matrices. The positional matrix’s z-axis can be animated using a matrix computed via [jit.expr]. The scale can also be animated and offsets can be added, the same with the rotational matrix. To make the final output polished I’m using a bloom-hq shader through jit.gl.pass. Since I tend to create multiple scenes in a single rendering context, I use [jit.gl.node] to separate each scene, use the [capture 1] attribute and send the sub-rendering context to a jit.gl.layer or to a syphon server to use with Resolume Arena. To further explore the scene, change the [drawmode] of the mesh, the [gridshape] and add vizzie effects between the [jit.gl.node] and [jit.gl.layer]

Scene 2: This is a more traditional use of the multiple instancing technique, I create a sphere gridshape and make multiple copies of it. Then create multiple masks using jit.expr, dimmap, and concat to create dynamic masks and feed them into the scale matrix of the multiple to give the multiple instancing movement. There is the use of an audio to matrix FFT algorithm too, to feed in live audio. Have used the same [jit.gl.node] trick to separate the scenes rendering. To further explore this patch add vizzie effect modules between [jit.gl.node] and [jit.gl.layer]

Scene 3: Trying to create abstract strobe shapes from two matrices, where I bang the matrix which the value 1 and then after a short delay 0 to create a strobe. Send these two matrices to a [jit.glue] with 3 rows and 3 columns but rearrange the matrices in a way to make an interesting shape. To dynamically change this shape I send it to a [jit.rubix] where I can reorder the columns and rows by sending them random numbers. This creates an interesting strobed shape that is tempo synced. I add a vizzie fractalizer to blend the edges of the shape, and send this to the topmost layer using the [jit.gl.node] and [jit.gl.layer] system. I can set the blendmode of this layer between screen and multiply. In screen blend mode, the strobed shapes appear above the previous two scenes, but if in multiply mode, the shapes act as a luma mask for the previous two scenes to make it even more dynamic and powerful.

Hope you’ll mess with this patch and explore the techniques used!

Aaron Myles Pereira

Follow @aaronmylespereira on Instagram

StartingPoint_MYLES.maxpat.zip
zip
Aaron's Starting Points patch

by Andrew Benson on December 18, 2023

Creative Commons License
bdc's icon

Link to the Ferenc Fabian starting point patch is broken.

Andrew Benson's icon

@BDC should be fixed now. Thanks for catching that.