Skip to content

darosh/px-stream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,164 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PX Stream

License: MIT or CC BY Discord Version Downloads

⚠️ 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



Install

  1. 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)
  2. Download the latest release
  3. Follow official instructions on Using third-party Packs

Windows specific additional installation steps

Windows users need to install two additional Max packages (VIDDLL and ISF) in the package manager

Open the package manager:

  1. Open the [...] menu on a max device, for example PX World, and click Edit in Max
  2. In Max > File menu, click Show Package Manager

In Max package manager:

  1. Select Remote packages and search for the package VIDDLL
  2. Open the package and click install
  3. Repeat step 4 for the ISF package
  4. Restart Live

Optimization (may help some Windows 11 users):

  1. Windows Settings -> System -> Display -> Graphics -> Ableton:
    • GPU Preference = High performance,
    • Optimization for windowed games = On
  2. Restart computer
  3. 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.


Troubleshooting and feedback


Guide

The first 5 guides are available as Live sessions in the /Demo folder of the installed pack

Guide β€” Minimal patch

  1. Insert PX World device. Exactly one World device is needed per Live set.
  2. Insert PX Mix View device
  3. Insert GEN Mini Shader device
  4. Select channel number 1 in the channel selector at 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


Guide β€” Adding FX

  1. Select P (Pass) in the channel selector in the GEN Mini Shader device from the previous guide
  2. Insert FX Kaleidoscope device
  3. Insert PX Mix Channel device
  4. Select 1 in the channel selector at the bottom of the last inserted device
  5. Adjust FX Kaleidoscope parameters as you like


Guide β€” Using Mix Dry

  1. Insert IN SVG device before the Mix Channel device and select PX Stream logo
  2. Insert PX Mix Dry before the Mix Channel device
  3. Experiment with parameters in the Mix Dry device

✨ 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


Guide β€” Using MIDI

  1. Insert Route MIDI device before PX Shader
  2. Select a MIDI source. Expand Types on the Shader device - you should see incoming MIDI signal dot indicators blinking on both devices as shown in the screenshot below.
  3. Select a MIDI-powered shader (name begins with M.1, M.2, ...)


Guide β€” Using Feedback

  1. Add a one-frame delayed signal using IN Channel with the same channel number to the chain
  2. Mix the delayed and original signals with the Mix Dry device
  3. Insert effects between devices like FX Blur and FX Color or FX Transform to add more movement


Guide β€” Using XY Oscilloscope

  1. Pick XY sound source (we used this one for animation bellow)
  2. Insert PX Shader and select an XY shader (those begin with X.1, X.2, ...)
  3. Add some FX Pass bloom goodness


Guide β€” Syphon/Spout streaming

  1. Expand the PX Mix View device using the [>] button
  2. 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


Guide β€” Automation

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
    1. when you only select a single value without automation, the session will restore the value based on the selected name
    2. when you automate, for example the File / File Automation parameter 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 example Assets/svg
  • Cam and Stream (Syphon/Spout) input selection cannot be automated
  • Color wheels in FX Color β€” see 🧲 AUTOMATION note in the device documentation

Guide β€” Performance

  • 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.


Devices

PX Core IN (inputs) GEN (generators) FX (effects) DEV (utilities)
Core category World
Core category Mix View
Core category Chain category Mix Channel
Multichain category Mix Dry
Multichain category Mix Transition
Source category Chain category Mix Grid
Source category Chain category FX category Shader
Utility category Follow
Utility category Sync
Utility category Chain category Rec
Utility category Route Audio
Utility category Route MIDI
Source category Chain category IN Cam
Source category Chain category IN Stream

Source category Chain category IN Image
Source category Chain category IN Video
Source category Chain category IN SVG

Source category Chain category IN Channel
Source category Chain category IN Mix
Source category Chain category GEN Cos Pattern
Source category Chain category GEN Mini Shader
Source category Chain category GEN Sketching
Source category Chain category GEN Text
Chain category FX category FX Alpha
Chain category FX category FX Blur
Chain category FX category FX Color
Chain category FX category FX Colorize
Chain category FX category FX Convert
Chain category FX category FX Delay
Chain category FX category FX Kaleidoscope
Chain category FX category FX Pass
Chain category FX category FX Pixelization
Chain category FX category FX Transform
Utility category Chain category DEV Info
Utility category DEV Console

Categories:
Core category Core
Utility category Utility
Source category Source
Chain category Chain (receives texture from previous device and/or sends texture to next device or selected channel)
Multichain category Multichain (receives 2 textures from previous devices and sends one texture to next device or selected channel)
FX category FX


PX World

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.




PX Mix View

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.


PX Mix View β€” Hotkeys

  • 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 with h264 codec. It will be available in IN Video device as a MOV file. For more options and automation, use PX Rec device instead.



PX Mix Channel

Send texture to selected channel. Alternative to individual channel selectors on each device.




PX Mix Dry

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




PX Mix Transition

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.


PX Mix Grid

Merging multiple channels into split screen view




PX Shader

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.


PX Shader β€” Audio types

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



PX Follow

Envelope follower based video rate ADSR modulation with step sequencer




PX Sync

Beat sync video rate ADSR modulation with step sequencer




PX Rec

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.




PX Route Audio

Route audio from any track in the Live set




PX Route MIDI

Send MIDI from selected track to next device

πŸ“’ NOTE Works only with PX Shader device and MIDI-enabled shaders. See the Using MIDI guide.




IN Cam

Live input from connected video devices




IN Stream

Syphon or Spout input for sharing visuals between applications.




IN Image

Image input. Supports JPG, WEBP and PNG formats.

🧲 AUTOMATION To automate selected image file find File / File Automation parameter in automation lane




IN SVG

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




IN Video

Video playback. Supports MP4, AVI, MOV (including HAP codecs).

🧲 AUTOMATION To automate selected video file find File / File Automation parameter in automation lane




IN Channel

Use texture from Mix Channel as input

✨ TIP Creates feedback when combined with Mix Dry on the same channel. See Using Feedback guide.




IN Mix

Use channel mix from Mix View device as input texture.




GEN Cos Pattern

Procedural patterns with cosine palettes popularized by Inigo Quilez




GEN Mini Shader

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


GEN Mini Shader β€” Shader files

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.


GEN Mini Shader β€” Variables

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

GEN Mini Shader β€” Utilities

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.




GEN Sketching

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




GEN Text

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




FX Alpha

Alpha channel tools: chroma key, mapping, inversion, smoothing, removal, etc.




FX Blur

Four blur Max/Jitter stock shaders




FX Color

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, ...)




FX Colorize

Two/tri tone colorization with various mapping methods




FX Convert

Texture format conversion including OKLAB and normalized OKLAB aka NOKLAB

✨ TIP To get even weirder colors, use two FX Convert devices with different formats




FX Delay

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




FX Kaleidoscope

Kaleidoscope patterns based on Brewster designs plus one stock Max/Jitter shader




FX Pass

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




FX Pixelization

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




FX Transform

Geometric transformations: scale, shift, rotation (around axis or vector)




DEV Info

Shows texture, channel and chain info for development purposes




DEV Console

Enables detailed Max console output for development and debugging. ⚠ DO NOT USE IN PRODUCTION!


Alternatives

Max for Live

Max for Live + Companion App

Plugin / Standalone App


Roadmap

  • 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?

Media


License

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

About

Visual performance toolkit for Max for Live with audio and MIDI-reactive extended ISF shader support and more

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors