WARNING Work in progress. Not ready for use. Stay tuned.
PX Stream (
/pΙͺkΛstriΛm/, as in pix + extreme) is a visual performance toolkit of 30+ compact devices for Max for Live, featuring:
- audio and MIDI-reactive extended Interactive Shader Format visuals
- multichannel mixing and routing system
- effects, generators, and utilities
- 90+ transitions
- text rendering
- Syphon/Spout output streaming
- user-editable ISF shaders, mini shaders, GL sketches and transitions
- Prerequisites: Ableton Live 12.2 Suite or Ableton Live 12.2 Standard with Max for Live (bundled Max version 9.0.7, and up to 9.0.9 should work, the latest 9.1.0 might have breaking changes)
- Download the latest release
- Follow official instructions on Using third-party Packs
Windows users need to install two additional Max packages (VIDDLL and ISF) in the package manager
Open the package manager:
- Open the [...] menu on a max device, for example
PX World, and clickEdit in Max - In Max >
Filemenu, clickShow Package Manager
In Max package manager:
- Select
Remote packagesand search for the packageVIDDLL - Open the package and click install
- Repeat step 4 for the
ISFpackage - Restart Live
Optimization (may help some Windows 11 users):
- Windows Settings -> System -> Display -> Graphics -> Ableton:
- GPU Preference = High performance,
- Optimization for windowed games = On
- Restart computer
- Check used renderer in Max -> Options -> OpenGL Status
π§ͺ DEV_NOTE Preview in the Mix View device seems to be problematic on Windows, moving it to own track or collapsing and using only pop window instead may help. Alternatively you could use something like SpoutReceiver.exe if there is a problem with the pop window as well.
- File an issue or vote on an existing one
- Join the PX Stream Discord Server and share your videos, shaders, presets and thoughts.
The first 5 guides are available as Live sessions in the /Demo folder of the installed pack
- Insert PX World device. Exactly one
Worlddevice is needed per Live set. - Insert PX Mix View device
- Insert GEN Mini Shader device
- Select channel number 1 in the
channel selectorat the bottom of the last inserted device
β¨ TIP All devices start with PX, so you can quickly select a device with the sequence Command+F + px wo + Down + Enter
- Select P (Pass) in the
channel selectorin theGEN Mini Shaderdevice from the previous guide - Insert FX Kaleidoscope device
- Insert PX Mix Channel device
- Select 1 in the
channel selectorat the bottom of the last inserted device - Adjust FX Kaleidoscope parameters as you like
- Insert IN SVG device before the
Mix Channeldevice and selectPX Stream logo - Insert PX Mix Dry before the
Mix Channeldevice - Experiment with parameters in the
Mix Drydevice
β¨ TIP Dry selector -1 to -4 in the PX Mix Dry device selects which of the previous devices is used as the dry one
β¨ TIP With PX Mix Channel and PX Mix Dry, you can create complex multichannel non-linear processing structures in a single track
π NOTE Tracks and groups have no effect on rendering. The only thing that is taken into account is the order of devices across the whole Live set.
β¨ TIP Replace the Mix Dry device with PX Mix Transition and try experimenting with that
- Insert Route MIDI device before PX Shader
- Select a MIDI source. Expand
Typeson the Shader device - you should see incoming MIDI signal dot indicators blinking on both devices as shown in the screenshot below. - Select a MIDI-powered shader (name begins with M.1, M.2, ...)
- Add a one-frame delayed signal using IN Channel with the same channel number to the chain
- Mix the delayed and original signals with the Mix Dry device
- Insert effects between devices like FX Blur and FX Color or FX Transform to add more movement
- Pick XY sound source (we used this one for animation bellow)
- Insert PX Shader and select an XY shader (those begin with X.1, X.2, ...)
- Add some FX Pass bloom goodness
- Expand the PX Mix View device using the
[>]button - Select Mix OUT stream A β this will allow you to select the stream in a Syphon (Mac) or Spout (Windows) client as
[Live] PX Stream A
π NOTE Mix OUT has dual purpose, not only it turns the Syphon/Spout output on, but it also can be consumed with the IN Mix device for further (post)processing
Most of the parameters in the toolkit can be automated in the standard way with a few exceptions:
- File and font menus in devices loading dynamic assets operate on two ways
- when you only select a single value without automation, the session will restore the value based on the selected name
- when you automate, for example the
File / File Automationparameter in IN SVG, the automation is based on the order of items and will break if you change the content of the loaded folder, for exampleAssets/svg
- Cam and Stream (Syphon/Spout) input selection cannot be automated
- Color wheels in FX Color β see π§²
AUTOMATIONnote in the device documentation
- Devices and assets are designed to be mostly lightweight and run at 60 to 120 FPS on a MacBook M1 Pro.
- Power status, energy saving options and floating/fullscreen preview window status may affect real FPS.
- Most of the processing is done with OpenGL on the GPU, so it should not affect Ableton's CPU-based sound processing.
- Optimizing resources loaded from assets is recommended: smaller dimensions for images and smaller format (WEBP), and smaller dimensions and CPU-friendly codec (HAP) for videos
- Some devices, especially postprocessing ones like FX Pass, are better to use only once β before the final output
- Some devices, especially GEN Sketching, seem to have noticeably worse performance on Windows
β¨ TIP To guess the impact of a device on performance, select 0 FPS in PX World and turn on the Show FPS switch in the extended ([>] button) PX Mix View device
β¨ TIP If you notice a significant drop in performance, don't use the effect (or embrace the glitch goodness), or sample parts of the performance to video β there is the PX Rec recording device or instant video sampling hotkeys in the Mix View device available.
| PX Core | IN (inputs) | GEN (generators) | FX (effects) | DEV (utilities) |
|---|---|---|---|---|
|
|
|
|
|
|
Categories:
Core
Utility
Source
Chain (receives texture from previous device and/or sends texture to next device or selected channel)
Multichain (receives 2 textures from previous devices and sends one texture to next device or selected channel)
FX
Essential rendering context. You need exactly one per Live set. More would be mad.
β¨ TIP Enable parameter turns off all rendering completely (disabling the device does the same)
π NOTE Mac only: FPS parameter set to 0 will use the maximum available FPS with displaylink turned on. On Windows this has no effect.
Multichannel mixing, preview and stream output
β¨ TIP Mix output selected in expanded section can be consumed by IN Mix device and Syphon or Spout clients.
β¨ TIP Click on preview to open floating window with fullscreen option and channel toggle buttons
β¨ TIP On Mac the floating window is hidden when Live is out of focus. You can use this fork of Simple-Syphon-Client modified to be always on top β see Syphon/Spout streaming guide.
β¨ TIP Use Live key mapping on Pop toggle for quick show/hide
π NOTE You can use as many Mix View devices as you want, including their popup windows.
π NOTE The preview inside the device is limited to 25 accelerated FPS on Mac and on Windows to non-accelerated 8 FPS.
π NOTE Preview inside device is rendered only when the track is active and the device is not collapsed to save resources, so you may see a glitch when switching back to that track.
- Shift+Click for instant screenshot stored in
Assets/images. It will be available in IN Image device as a PNG file. - Control+Click for instant video recording (while holding the mouse button) stored in
Assets/video, encoded withh264codec. It will be available in IN Video device as a MOV file. For more options and automation, use PX Rec device instead.
Send texture to selected channel. Alternative to individual channel selectors on each device.
Dry/wet mix from two previous devices
β¨ TIP Dry parameter selects which of the previous devices (-1 to -4) is used as dry signal
β¨ TIP With PX Mix Channel and PX Mix Dry you can create complex multichannel non-linear processing structures in a single track
π NOTE Swap parameter has no effect on commutative blending methods
Transition between two previous devices powered by 90+ transitions from gl-transitions.com
π NOTE From selection works the same way as the Dry parameter in Mix Dry device
β¨ TIP Transitions are user editable shaders in JXS file format and some of them include additional parameters. For example Angular.jxs has <param name="startingAngle" type="float" default="90"/> where you can adjust the default value.
Merging multiple channels into split screen view
Interactive Shader Format (ISF) host for generators and effects
π§² AUTOMATION To automate selected shader file find File / File Automation parameter in automation lane
β¨ TIP To reset a shader parameter to its default value, click the parameter label
π NOTE Due to the dynamic nature of parameter controls, the underlying parameter slider uses a range of 0 to 10 (it is also the range you can see on Push), and has invisible text with a scaled value placed on top of that β which unfortunately makes typing in values pretty suboptimal.
| Name | Type | Description | |
|---|---|---|---|
| WAVE | waveImage | audio | standard ISF, channel per image row |
| WAVU | wavuImage | audio | channel per image color, Red = Left, Green = Right |
| FFT | fftImage | audioFFT | standard ISF, channel per image row |
| FFTU | fftuImage | audioFFT | channel per image color |
| XY | xyImage | audio | X = Left, Y = Right, dots |
| XYC | xycImage | audio | X = Left, Y = Right, connected lines |
| XYD | xydImage | audio | X = Left, Y = Right, skipping distant lines |
| XYE | xyeImage | audio | electron beam emulation, ported to Jitter shader by Rob Ramirez here |
| MIDI | midiImage | audio | R: [x, y, value] = [note, channel, velocity], G: [x, y, value] = [CC number, channel, value], B: [x, y, value] = [0, 0, voices], [voice, 0, note] |
| IN | inputImage | image | automatic, from previous device in the chain |
Envelope follower based video rate ADSR modulation with step sequencer
Beat sync video rate ADSR modulation with step sequencer
Video recording and screenshotting
π NOTE On Windows the only supported video codec is h264. On Mac there are additionally prores4444 and prores442 available.
β¨ TIP Recorded files are stored under Assets/video as MOV files and directly available in IN Video device. Screenshots are PNG files in Assets/images and available in IN Image device.
Route audio from any track in the Live set
Send MIDI from selected track to next device
π NOTE Works only with PX Shader device and MIDI-enabled shaders. See the Using MIDI guide.
Live input from connected video devices
Syphon or Spout input for sharing visuals between applications.
Image input. Supports JPG, WEBP and PNG formats.
π§² AUTOMATION To automate selected image file find File / File Automation parameter in automation lane
Vector graphics input with resolution-independent scaling in SVG file format
π§² AUTOMATION To automate selected SVG file find File / File Automation parameter in automation lane
π NOTE SVG internal dimensions must be whole numbers to fully fit into the screen.
β¨ TIP There is free Inkscape SVG editor available
Video playback. Supports MP4, AVI, MOV (including HAP codecs).
π§² AUTOMATION To automate selected video file find File / File Automation parameter in automation lane
Use texture from Mix Channel as input
β¨ TIP Creates feedback when combined with Mix Dry on the same channel. See Using Feedback guide.
Use channel mix from Mix View device as input texture.
Procedural patterns with cosine palettes popularized by Inigo Quilez
Shaders in twigl.app geekest (300 es) format.
β¨ TIP To use real time, set Offset parameter to β1Β ms
π§² AUTOMATION To automate selected mini shader find File / File Automation parameter in automation lane
GLSL files are stored in the data/mini-shaders folder. Temporary JXS files are stored under data/mini-shaders/.temp.jxs.
Learn more about Modeling the World in 280 Characters.
| Name | Type | Description |
|---|---|---|
| FC | vec4 | gl_FragCoord |
| r | vec2 | resolution |
| m | vec2 | mouse |
| t | float | time |
| f | float | frame |
| b | sampler2D | backbuffer (unused) |
| o | vec4 | output |
Dynamically included when referenced in mini shader GLSL.
- Noise:
F4,mod289,permute,taylorInvSqrt,snoise2D,snoise3D,grad4,snoise4D,fsnoise,fsnoiseDigits - Color:
hsv - Rotation:
rotate2D,rotate3D - Constants:
PI,PI2 - Compatibility:
tanh(#define tanh(x) tanh(clamp(x, -10.,10.)))
Learn more in twigl documentation.
Custom OpenGL primitives scripting with JavaScript, slightly compatible with openprocessing.org
π§² AUTOMATION To automate selected sketch find File / File Automation parameter in automation lane
π§ͺ DEV_NOTE This device is very limited, and due to the underlying tech JS/jit.gl.sketch, it will likely develop into its own thing rather than a processing.js compatible environment
Text generation from session/clip names, custom text, or dynamic musical data (beat, bar.beat, time)
π NOTE Arrangement clip text is cached. In order to refresh the cache, disable and enable the device (or switch mode to Session and back).
π§² AUTOMATION To automate selected font find Font / Font Automation parameter in automation lane
Alpha channel tools: chroma key, mapping, inversion, smoothing, removal, etc.
Four blur Max/Jitter stock shaders
Color grading and adjustment tools
π§² AUTOMATION For color wheel automation, find Dark X, Dark Y, Light X, ... parameters in automation lane
β¨ TIP To reset a color wheel to its default value, click its label (Dark, Light, ...)
Two/tri tone colorization with various mapping methods
Texture format conversion including OKLAB and normalized OKLAB aka NOKLAB
β¨ TIP To get even weirder colors, use two FX Convert devices with different formats
Frame-based texture delay
β¨ TIP To see the dry and delayed signals at the same time, put a Mix Dry device after the delay one
Kaleidoscope patterns based on Brewster designs plus one stock Max/Jitter shader
Postprocessing shaders from Max/Jitter library. See Max documentation.
β¨ TIP Everything looks better with Bloom effect, especially if you are into the neon glowing aesthetics.
β¨ TIP To adjust the Bloom effect, find the right Threshold first and then set the Bloom amount
Multi-shape pixelization: rectangular, circular, honeycomb, hexagonal, triangular grids
β¨ TIP To make gaps between pixels, lower the Shape % value
β¨ TIP To make the image less pixelated, adjust the Smooth parameter
β¨ TIP For an LED-like glowing effect, use Fading
Geometric transformations: scale, shift, rotation (around axis or vector)
Shows texture, channel and chain info for development purposes
Enables detailed Max console output for development and debugging. β DO NOT USE IN PRODUCTION!
Max for Live
- VIZZable 2 (free)
- V-Module (free)
- Geometrum 02 (free)
- Zwobot
- EboSuite
Max for Live + Companion App
Plugin / Standalone App
- alpha testing (volunteers needed)
- more shaders, presets
- beta testing (public)
- more shaders, presets
- example demo track
- 1.0 release
- gumroad for donations?
- more shaders, presets
- 2.0?
- simple/instant audio/MIDI based modulation
- geometry/scene based devices?
- more GENs, FXs, shaders, presets
- device template / SDK, dev doc?
- all devices poster
- logo (transparent, needs dark background)
- icon PNG, SVG
This project is dual-licensed under MIT or CC-BY (your choice).
You may use, modify, and distribute this work under either license.
For licensing of dynamically loaded assets, see assets/LICENSE.md
.webp)





.webp)



.webp)


.webp)
.webp)



.webp)




.webp)






.webp)
.webp)




.webp)








.png)











.webp)































