Viz by Echobit: Live Performance Music Visualization

VST, AU, AAX, CLAP, etc. Plugin Virtual Effects Discussion
RELATED
PRODUCTS

Post

Useful shaders site
http://glslsandbox.com

Fun and affordable Visualiser
https://magicmusicvisuals.com
Amazon: why not use an alternative

Post

Thanks VariKusBrainZ,

That glslsandbox site is especially cool, some great examples there definitely. And for anyone unable
to figure it out, they 'do' work in Viz, although they may need some minor fixes first.

-Cheers

Post

I so wish I had the ability to do, anything, with this. Sadly I don't get it. I was really hoping this would be a basic filmclip solution for dummies like me.
Intel Core i7 8700K, 16gb, Windows 10 Pro, Focusrite Scarlet 6i6

Post

It's definitely not a matter of intelligence or lack thereof, most people naturally tend to over complicate
things they don't immediately understand. This makes things unnecessarily difficult so they give up quickly.
Really, the only thing you need is a strong interest, keep at it and give your brain time to make sense of it.
Because thats all it is, you are failing to see that this is not so different from what you already know.
People often perceive too great of a distance between light and sound, when in fact they
are nearly identical. Especially when it comes to describing them mathematically.

Its no accident that using a DAW to create music is very similar to using a video editor to create a film.

-Cheers

Post

Well it is a long way from anything I've ever tried to do before and I'm time poor. But based on what you said I reinstalled the demo and will keep tinkering. Code for me is like my cat looking at a calculator. Hopefully I'm smarter than my cat but I'm not betting on it.

Is there a way to get audio into the standalone and if not what is the purpose of it?
Intel Core i7 8700K, 16gb, Windows 10 Pro, Focusrite Scarlet 6i6

Post

morelia wrote:I so wish I had the ability to do, anything, with this. Sadly I don't get it. I was really hoping this would be a basic filmclip solution for dummies like me.
Maybe this?

http://www.raxntrax.com/pixys/
Amazon: why not use an alternative

Post

That looks like it could be useful for sure. Thank you.
Intel Core i7 8700K, 16gb, Windows 10 Pro, Focusrite Scarlet 6i6

Post

This thing is the tits!! Is anybody else experiencing the following behavior:

Set up a region to loop while you teach yourself rudimentary GLSL, then when the loop starts over the step sequencers stop and won't move again until you rest the transport?

Especially since I'm teaching myself the coding, it would be ideal to just have a loop going while trying everything out.

Also is there a manual, with some very basics about the coding language and the way the plugin handles it? There are some potentially really cool things that I'd like to try out but I don't even know if they are possible in the context of the plugin. Also a simple list of the names "in the code" of all the buttons sliders and sequencer stuff. I've figured out most by trial and error, but that would seem like a handy reference for folks starting out with GLSL. Maybe pop up tips on each bit of the interface that say what it does, output range, proper way to reference in code etc.

Anyway. Love this thing. Can anybody point me toward the official bug reporting place for it? Is it on their website somewhere?
Don't F**K with Mr. Zero.

Post

I don't think there is a manual as yet, I haven't seen one anyway. And yeah, the sequencer
will not reset with a loop in your DAW, unless you set it to onset. Not sure if thats intended
or not. No specific, bug report avenue in place that I've noticed.

Anyway, here is one of the shaders from the GLSL Sandbox, hacked for Viz. Maybe interesting to
see what I very quickly changed. E.g. not much thought in the changes, nor have I explained them heh.
I will when I got some time to think about making more meaningful changes, or just write a new one.
It uses the parameters, slider 1 and seq1 so you can play with them. The audio amplitude changes
some stuff as well. Its kinda neat. 8)

Have fun...

Of course I did not write this. etc...

Code: Select all

#ifdef GL_ES
precision mediump float;
#endif

#extension GL_OES_standard_derivatives : enable

uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;
  
    const int octaves = 8;
    const float seed = 43758.5453123;
    const float seed2 = 73156.8473192;
  
    float random(float val) {
      return fract(sin(val) * seed);
    }
  
    vec2 random2(vec2 st, float seed){
        st = vec2( dot(st,vec2(127.1,311.7)),
                  dot(st,vec2(269.5,183.3)) );
        return -1.0 + 2.0*fract(sin(st)*seed);
    }
  
    float random2d(vec2 uv) {
      return fract(
                sin(
                  dot( uv.xy, vec2(12.9898, 78.233) )
                ) * seed);
    }
  
    // Value Noise by Inigo Quilez - iq/2013
    // https://www.shadertoy.com/view/lsf3WH
    float v_noise(vec2 st, float seed) {
        vec2 i = floor(st);
        vec2 f = fract(st);

        vec2 u = f*f*(3.0-2.0*f);

        return mix( mix( dot( random2(i + vec2(0.0,0.0), seed ), f - vec2(0.0,0.0) ), 
                         dot( random2(i + vec2(1.0,0.0), seed ), f - vec2(1.0,0.0) ), u.x),
                    mix( dot( random2(i + vec2(0.0,1.0), seed ), f - vec2(0.0,1.0) ), 
                         dot( random2(i + vec2(1.0,1.0), seed ), f - vec2(1.0,1.0) ), u.x), u.y);
    }
  // Simplex 2D v_noise
  //
  vec3 permute(vec3 x) { return mod(((x*34.0)+1.0)*x, 289.0); }

  float sv_noise(vec2 v){
    const vec4 C = vec4(0.211324865405187, 0.366025403784439,
             -0.577350269189626, 0.024390243902439);
    vec2 i  = floor(v + dot(v, C.yy) );
    vec2 x0 = v -   i + dot(i, C.xx);
    vec2 i1;
    i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
    vec4 x12 = x0.xyxy + C.xxzz;
    x12.xy -= i1;
    i = mod(i, 289.0);
    vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))
    + i.x + vec3(0.0, i1.x, 1.0 ));
    vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy),
      dot(x12.zw,x12.zw)), 0.0);
    m = m*m ;
    m = m*m ;
    vec3 x = 2.0 * fract(p * C.www) - 1.0;
    vec3 h = abs(x) - 0.5;
    vec3 ox = floor(x + 0.5);
    vec3 a0 = x - ox;
    m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );
    vec3 g;
    g.x  = a0.x  * x0.x  + h.x  * x0.y;
    g.yz = a0.yz * x12.xz + h.yz * x12.yw;
    return 130.0 * dot(m, g);
  }
  
    vec3 plotCircle(vec2 pos, vec2 uv, float size) {
      return vec3(smoothstep(size, size + 0.05, length(uv - pos)));
    }
  
    float fbm (in vec2 st, float seed) {
      // Initial values
      float value = 0.0;
      float amplitude = amp;
      float frequency = freq;
      //
      // Loop of octaves
      for (int i = octaves; i > 0; i--) {
          value += amplitude * abs(v_noise(st, seed));
          st *= 2.;
          amplitude *= 1.;
      }
      return value;
  }
    float fbm1(in vec2 _st, float seed) {
      float v = 0.0;
      float a = 0.5;
      vec2 shift = vec2(100.0);
      // Rotate to reduce axial bias
      mat2 rot = mat2(cos(0.5), sin(0.5),
                      -sin(0.5), cos(0.50));
      for (int i = 0; i < octaves; ++i) {
          v += a * v_noise(_st, seed);
          _st = rot * _st * 2.0 + shift;
          a *= 0.4;
      }
      return v;
  }
  
  float pattern(vec2 uv, float seed, float time, inout vec2 q, inout vec2 r) {
    
    q = vec2( fbm1( uv + vec2(0.0,0.0), seed ),
                   fbm1( uv + vec2(5.2,1.3), seed ) );

    r = vec2( fbm1( uv + 4.0*q + vec2(1.7 - time / 2.,9.2), seed ),
                   fbm1( uv + 4.0*q + vec2(8.3 - time / 2.,2.8), seed ) );

    vec2 s = vec2( fbm1( uv + 4.0*r + vec2(21.7 - time / 2.,90.2), seed ),
                   fbm1( uv + 4.0*r + vec2(80.3 - time / 2.,20.8), seed ) );

    vec2 t = vec2( fbm1( uv + 4.0*s + vec2(121.7 - time / 2.,90.2), seed ),
                   fbm1( uv + 4.0*s + vec2(180.3 - time / 2.,20.8), seed ) );
    
    float rtn = fbm1( uv + 4.0*t, seed );
    
   rtn = clamp(rtn, 0., .5); // This shit is magic!
    
    return rtn;
  }
  
  vec3 hsv2rgb(vec3 c) {
    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
    vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
    return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
  }

    void main() {
      vec2 uv = (gl_FragCoord.xy - 0.7 * resolution.xy) / resolution.y;
      uv *= 1. + dot(uv, uv)*.3;
    
     
      mat2 rot = mat2(cos(time), sin(time),
                      -sin(time), cos(time));
      uv = rot * uv;
      uv *= 1.4 + sin(time) * .3;
      uv.x -= amp;
      
      vec2 q = vec2(0.,0.);
      vec2 r = vec2(0.,0.);
      
      vec3 colour = vec3(pattern(uv, seed, time, q, r));
      float QR = clamp(dot(q, r), -1., 1.);
      colour += vec3(
        (q.x + q.y) + QR * 10., 
        QR * 15., 
        r.x * r.y + QR * 5.
      );
      colour /= slider1;
      colour.r += brightness;
	  colour.g += noise;
	  colour.b += freq;
      colour = clamp(colour, amp, 1.);
      gl_FragColor = vec4(colour + (log(colour) * seq1), 1.);
    }

Post

plexuss wrote:Well here is my first attempt without knowing anything about what I was doing.
This is amazing plexuss! We're so happy to see users actually creating full videos with this thing. That's exactly what we intended. And great track by the way. We'll definitely post this on our channels.

There's currently not a great way to get audio into the standalone version. We're working on that feature- need to add proper routing. Personally I like to do everything in the DAW so the plugin probably got a bit more attention. We'll fix that. Adding Syphon/Spout support is also high on the list.
dreamvoid wrote:Questions - can't find answers about this on the Echobit web site:
- are video export functions included? or streaming to disk?
- if yes, are exports in 720p, 1080p possible? and in which formats?
Video export isn't currently supported. We usually use third party software to capture everything. We plan to add proper recording in the future, although personally I'd almost rather add Unity/Unreal Viz plugins first- speaking of, since the audio metrics and all interface parameters are output via OSC you could already theoretically build hooks into Jitter/Unity/Whatever and control that through Viz. I plan to make it so that even the shader programs are broadcast through OSC though that might not be useful considering you'd still need to pass uniforms and whatnot on the other end... Syphon might be the way to go for now. We're still considering what's possible and useful for the user so feedback is also welcome as we decide on these features. Thanks for all of the notes so far.
lnikj wrote:Any chance of this making it to VCVRack?
Ha! Possibly. I was actually planning to release a video where I'm playing with VCV and Viz. Through Unfiltered Audio we've released three VCV modules and have a few more in the pipeline (one rhymes with Joko) so I'm familiar with the format and believe Viz could work in that format.

pekbro wrote:In case anyone's interested, here is a simple compositing example.
The gl_FragColor variable refers to the OpenGL Fragment Shader
being employed here.

https://www.khronos.org/opengl/wiki/Fragment_Shader

Anyway, I just commented the code rather than explain it with
a wall of text.
...
-Cheers
Awesome shader! This thing looks great. Really happy to see that you guys are getting the workflow and what makes it unique- I'd also love to make a portal on our site so that it's fast to share presets and shader code. Ironically we could really use a web version exactly like shadertoy but with our variables and whatnot so that you could just demo these things in action... hopefully we'll get to that sooner than later. :)

Manual and more demo videos are on their way.
Josh, Co-Founder of Unfiltered Audio:
http://www.unfilteredaudio.com

Post

Thanks Josh, all excellent news :tu:

Post

an installation / set-up video would be helpful ...
Image

Post

Does the plugin pass on any clock information to the code? If the tempo and song position can be plugged into the code there are worlds of cool things that can be done. Also some definitions of what exactly variables like "time" actually mean so they can be properly utilized would be handy. I'm getting my head around lots of the simpler GLSL stuff and mangling my own pictures.

What is the deal with the step sequencers not resetting? Is this something that can be fixed or perhaps coded? Also this plugin is not saving its settings with a project in any of my hosts? Some simple "getting started" style documentation would be useful if they would explain how the file structure is meant to work and so forth. The coolest thing I've made is saved, but I can't figure out at all how to reload it and as I say the settings aren't properly recalled with the session. This is true in cubase 5, 8, 8 and Bitwig as well.
Don't F**K with Mr. Zero.

Post

Anybody else having issues with saving and loading files? I'm putting all my stuff on a notepad document for now. None of the save methods works in any of my hosts.
Don't F**K with Mr. Zero.

Post

Yeah there seems to be some issues under windows at least. You have to place the frag files in the factory directory with the rest for them to work. Maybe try making a User directory, as I assume it’s supposed to make one but doesn’t. Anyway, the factory directory thing works, I haven’t tried making a user directory yet.

-cheers

Post Reply

Return to “Effects”