<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>mathew preziotte</title>
    <description>software engineering and computational artistry.</description>
    <link>https://preziotte.com/</link>
    <atom:link href="https://preziotte.com/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Sun, 10 May 2026 09:05:00 -0400</pubDate>
    <lastBuildDate>Sun, 10 May 2026 09:05:00 -0400</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title>Vector Brawl</title>
        <description>
</description>
        <pubDate>Thu, 01 Jan 2026 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/vector-brawl/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/vector-brawl/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Vizz.fm</title>
        <description>
</description>
        <pubDate>Wed, 01 Jan 2025 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/vizz-fm/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/vizz-fm/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Startup List</title>
        <description>
</description>
        <pubDate>Sun, 01 Jan 2023 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/startup-list/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/startup-list/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Postgres Monitor</title>
        <description>
</description>
        <pubDate>Sun, 01 Jan 2023 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/postgres-monitor/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/postgres-monitor/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Cryptocurrency Alerting Mobile Apps</title>
        <description>
</description>
        <pubDate>Wed, 01 Jan 2020 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/cryptocurrency-alerting-mobile/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/cryptocurrency-alerting-mobile/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>zParticle - Realtime 3D Particle Clouds from Static Images</title>
        <description>&lt;div class=&quot;gallary swap&quot;&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/05_p.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;zParticle is an app that converts arbitrary images into 3d particle clouds. It runs in the browser and leverages &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;three.js&lt;/code&gt; along with some basic shader code.  The z-coordinate of each point is based on the corresponding pixel color from the source image.  With a decent GPU, it can render at least 10 million points at 60fps right in your browser.  If the framerate is low, increase the “pixel skip” value to reduce the number of points rendered on screen.  Check it out:&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;
&lt;span class=&quot;btn&quot; style=&quot;float: none;&quot; href=&quot;/z-particle&quot;&gt;Launch zParticle&lt;/span&gt;
&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;While it’s a lot more fun to play with the app directly, I’ve included some examples of an input image (left) and their corresponding particle clouds (right).&lt;/p&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/03.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/03_p.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/04.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/04_p.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/01.jpg&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/01_p.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/02.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/02_p.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/05.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/05_p.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&quot;in-motion&quot;&gt;in motion&lt;/h2&gt;
&lt;p&gt;These gifs have rather huge file sizes.  Hang in there.&lt;/p&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/01.gif&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/02.gif&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/03.gif&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/zparticle/04.gif&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;All the images on this page use original artwork that I’ve previously made.  There’s a certain satisfaction in remixing my own content.  Within the app, however, I’ve also included images from a number of other digital artists to demonstrate how different visual styles manifest under this technique.  Credit goes to
&lt;a href=&quot;https://x.com/mattmillsart&quot; target=&quot;_blank&quot;&gt;Matt Mills&lt;/a&gt;,
&lt;a href=&quot;https://x.com/mattdesl&quot; target=&quot;_blank&quot;&gt;Matt Desl&lt;/a&gt;,
&lt;a href=&quot;https://www.instagram.com/rikoostenbroek/&quot; target=&quot;_blank&quot;&gt;Rik Oostenbroek&lt;/a&gt;,
&lt;a href=&quot;https://x.com/sasj_nl&quot; target=&quot;_blank&quot;&gt;Saskia Freeke&lt;/a&gt;,
&lt;a href=&quot;https://www.instagram.com/uon.visuals/&quot; target=&quot;_blank&quot;&gt;Uon Visuals&lt;/a&gt;,
&lt;a href=&quot;https://x.com/hyper_glu&quot; target=&quot;_blank&quot;&gt;Hyperglu&lt;/a&gt;,
&lt;a href=&quot;https://www.instagram.com/hoodass&quot; target=&quot;_blank&quot;&gt;Hoodass&lt;/a&gt;, and
&lt;a href=&quot;https://x.com/algomystic&quot; target=&quot;_blank&quot;&gt;Peder Norrby&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To those interested, I explain how to implement the effect below.&lt;/p&gt;

&lt;h2 id=&quot;extracting-pixel-data&quot;&gt;extracting pixel data&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;var image = document.createElement(&quot;img&quot;);
var canvas = document.createElement(&quot;canvas&quot;);
var context = canvas.getContext(&quot;2d&quot;);
var imageWidth, imageHeight, imageData;

image.src = &quot;path/to/image&quot;;
image.crossOrigin = &quot;Anonymous&quot;;
image.onload = function() {
  imageWidth = canvas.width = image.width;
  imageHeight = canvas.height = image.height;

  context.fillStyle = context.createPattern(image, &apos;no-repeat&apos;);
  context.fillRect(0, 0, imageWidth, imageHeight);

  // this is your raw image data
  imageData = context.getImageData(0, 0, imageWidth, imageHeight).data;

  pixelsToGeometry();
  createPointCloud();
  window.requestAnimationFrame(update);
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;transforming-pixel-data&quot;&gt;transforming pixel data&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;var pixels, vertices, colors;

function pixelsToGeometry() {

  pixels = imageWidth*imageHeight;
  vertices = new Float32Array( pixels * 3 );
  colors = new Float32Array( pixels * 3 );

  var color = new THREE.Color();
  var x = imageWidth * -0.5;
  var y = imageHeight * 0.5;
  var loc = 0, c = 0;

  for (var i = 0; i &amp;lt; imageHeight; i++) {
    for (var j = 0; j &amp;lt; imageWidth; j++) {

      color.setRGB(imageData[c] / 255, imageData[c + 1] / 255, imageData[c + 2] / 255);

      var weight = color.r * 0.33 + color.g * 0.33 + color.b * 0.33;

      vertices[loc]     = x;
      vertices[loc + 1] = y;
      vertices[loc + 2] = (100 * -0.5) + (100 * weight);

      colors[loc]     = color.r;
      colors[loc + 1] = color.g;
      colors[loc + 2] = color.b;

      loc+=3;
      c += 4;
      x++;
    }

    x = imageWidth * -0.5;
    y--;
  }

}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;creating-a-point-cloud-with-threejs&quot;&gt;creating a point cloud with three.js&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function createPointCloud() {

  var container = document.getElementById(&apos;container&apos;);
  var scene = new THREE.Scene();
  var camera = new THREE.PerspectiveCamera(20, window.innerWidth / window.innerHeight, 1, 100000);
  camera.position.z = 4000;
  camera.lookAt(scene.position);

  var renderer = new THREE.WebGLRenderer({ antialias: true });
  renderer.setSize(window.innerWidth, window.innerHeight);
  container.appendChild(renderer.domElement);

  shaderUniforms = {amplitude: { type: &quot;f&quot;, value: 0.5 }};

  var shaderMaterial = new THREE.ShaderMaterial({
    transparent: true,
    opacity: 0.8,
    uniforms: shaderUniforms,
    vertexShader: document.getElementById(&quot;vertexShader&quot;).textContent,
    fragmentShader: document.getElementById(&quot;fragmentShader&quot;).textContent
  })

  geometry = new THREE.BufferGeometry();
  geometry.addAttribute( &apos;position&apos;, new THREE.BufferAttribute( vertices, 3 ) );
  geometry.addAttribute( &apos;vertexColor&apos;, new THREE.BufferAttribute( colors, 3 ) );

  geometry.attributes.position.needsUpdate = true;
  geometry.verticesNeedUpdate = true;

  particleSystem = new THREE.Points(geometry, shaderMaterial);
  scene.add(particleSystem);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;animating-it&quot;&gt;animating it&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function update() {
  window.requestAnimationFrame(update);

  shaderUniforms.amplitude.value = amplitude;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;shader-code&quot;&gt;shader code&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;script type=&quot;x-shader/x-vertex&quot; id=&quot;vertexShader&quot;&amp;gt;
  uniform float amplitude;
  varying vec4 varColor;
  attribute vec3 vertexColor;

  void main() {
    varColor = vec4(vertexColor, 1.0);

    vec4 pos = vec4(position , 1.0);
    pos.z *= amplitude;

    vec4 mvPosition = modelViewMatrix * pos;

    gl_Position = projectionMatrix * mvPosition;
  }
&amp;lt;/script&amp;gt;

&amp;lt;script type=&quot;x-shader/x-fragment&quot; id=&quot;fragmentShader&quot;&amp;gt;
  varying vec4 varColor;

  void main() {
    gl_FragColor = varColor;
  }
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I certainly didn’t invent this technique, but I do think it’s under utilized.  I hope this project can help get the word out.&lt;/p&gt;

</description>
        <pubDate>Wed, 28 Nov 2018 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/z-particle/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/z-particle/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Cryptocurrency Alerting</title>
        <description>
</description>
        <pubDate>Mon, 01 Jan 2018 00:00:00 -0500</pubDate>
        <link>https://preziotte.com/blog/cryptocurrency-alerting/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/cryptocurrency-alerting/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>A look at Harmonic Resonance found in Polar Equations</title>
        <description>&lt;div class=&quot;gallary swap&quot;&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/04.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;
&lt;!--more--&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/06.gif&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/harmonic_instability.gif&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&quot;concepts--techniques&quot;&gt;concepts &amp;amp; techniques&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The examples on this page are derived from rather simple polar equations, such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Rose_(mathematics)&quot; target=&quot;_blank&quot;&gt;Rose Curves&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Cardioid&quot; target=&quot;_blank&quot;&gt;Cardioids&lt;/a&gt;.  I’m simply graphing polar equations.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray&quot; target=&quot;_blank&quot;&gt;Stroke-dasharray&lt;/a&gt; and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset&quot; target=&quot;_blank&quot;&gt;stroke-dashoffset&lt;/a&gt; are SVG properties that are incredibly fun to play with.  They let you control and animate gaps along a given stroke path.  I noticed that certain specific combinations of these properties appear to resonate into rather spectacular patterns that look surprisingly different from a plainly drawn curve.  I re-implemented this in the &lt;a href=&quot;https://processing.org&quot; target=&quot;_blank&quot;&gt;Processing&lt;/a&gt; programming language in order to create frame-stable exportable renders.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.dictionary.com/browse/interpolate&quot; target=&quot;_blank&quot;&gt;Interpolation&lt;/a&gt; (aka &lt;a href=&quot;https://en.wikipedia.org/wiki/Inbetweening&quot; target=&quot;_blank&quot;&gt;Tweening&lt;/a&gt; aka &lt;a href=&quot;https://processing.org/reference/lerp_.html&quot; target=&quot;_blank&quot;&gt;Lerping&lt;/a&gt;) of the coordinates with their former selves (where they stood last frame) creates some very fluid animations that further distance their appearance from a plain old polar curve.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://processing.org/reference/noise_.html&quot; target=&quot;_blank&quot;&gt;Noise&lt;/a&gt;.  A bit of controlled randomness makes everything appear more organic.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;!-- https://anitachowdry.wordpress.com/2014/10/06/ingenious-machines-for-drawing-curves-the-archives/ --&gt;
&lt;!-- https://www.pinterest.com/pin/31314159887434294/ --&gt;

&lt;h2 id=&quot;close-ups&quot;&gt;close-ups&lt;/h2&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/01.gif&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/02.gif&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/03.gif&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&quot;set-to-music&quot;&gt;set to music&lt;/h2&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/lAaBMYI8KFY?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/R-NFqckyLUc?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/WS8I3MRiTK8?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/2_nsZIoeBYQ?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/FM0mFyMh5ag?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/vqxRprztvVk?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/NM1Fk8D2e3g?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/uMbGI3yBx60?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;iframe width=&quot;240&quot; height=&quot;240&quot; src=&quot;https://www.youtube.com/embed/8HnhYip_ea4?rel=0&amp;amp;showinfo=1&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;

&lt;!-- https://www.youtube.com/watch?v=fr_5F_xK-nI --&gt;
&lt;!-- https://www.youtube.com/watch?v=viICMfCY8Fk --&gt;
&lt;h2 id=&quot;stills&quot;&gt;stills&lt;/h2&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/09.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/07.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/08.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure style=&quot;width: auto; float: none;&quot;&gt;
    &lt;img data-src=&quot;https://preziotte.com/assets/harmonic/05.png&quot; /&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&quot;lots-more&quot;&gt;lots more&lt;/h2&gt;

&lt;p class=&quot;center&quot;&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://instagram.com/preziotte&quot;&gt;
    &lt;span class=&quot;btn icon-post-big&quot;&gt;&lt;span class=&quot;icon-instagram&quot;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;/a&gt;

  &lt;a target=&quot;_blank&quot; href=&quot;http://x.com/preziotte&quot;&gt;
    &lt;span class=&quot;btn icon-post-big&quot;&gt;&lt;span class=&quot;icon-twitter&quot;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;/a&gt;

  &lt;a target=&quot;_blank&quot; href=&quot;https://www.youtube.com/playlist?list=PLZVqsFc1Eo8RMMMmgzFqfsAY_er2e8cym&quot;&gt;
    &lt;span style=&quot;margin-right: -26px;&quot; class=&quot;btn icon-post-big&quot;&gt;&lt;span class=&quot;icon-youtube&quot;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;/a&gt;
&lt;/p&gt;

</description>
        <pubDate>Fri, 22 Apr 2016 00:00:00 -0400</pubDate>
        <link>https://preziotte.com/blog/harmonic-resonance/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/harmonic-resonance/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Absurd Music Visualizations</title>
        <description>&lt;p&gt;I’ve begun a series of audio reactive music visualizations.  They look like this:&lt;/p&gt;

&lt;div class=&quot;posts grid absurd&quot;&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BDCgxAluAbX/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/0_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BE335FkuAae/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/11_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BD4xzESuAZv/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/2_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BEu8dM2uARz/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/3_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BIHHhPiDolo/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/5_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BFN1sNNuAUB/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/7_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BG3Z57NuAXH/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/15_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
  &lt;div class=&quot;gallery&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;
    &lt;figure class=&quot;square&quot; style=&quot;float: left;&quot;&gt;
      &lt;a target=&quot;_blank&quot; href=&quot;https://www.instagram.com/p/BDBzX9wuAch/&quot;&gt;
        &lt;img style=&quot;min-width: 200px;&quot; data-src=&quot;https://preziotte.com/assets/absurd/processed/12_small.gif&quot; /&gt;
      &lt;/a&gt;
    &lt;/figure&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Each entry uses audio data to help inform procedurally generated visuals in different (and hopefully novel) ways.  Most computational artwork relies heavily on elements of randomness, such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Perlin_noise&quot; target=&quot;_blank&quot;&gt;perlin noise&lt;/a&gt;.  I find that sampling audio data is a nice form of structured randomness.  I hope you enjoy my synesthesia playground.&lt;/p&gt;

&lt;p&gt;If you’re interested in collaborating &lt;a target=&quot;_blank&quot; href=&quot;mailto:mat.preziotte@gmail.com&quot;&gt;lemme know&lt;/a&gt;!&lt;/p&gt;

&lt;h3 id=&quot;how-to-watch&quot;&gt;how to watch&lt;/h3&gt;

&lt;p class=&quot;center&quot;&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://instagram.com/preziotte&quot;&gt;
    &lt;span class=&quot;btn icon-post-big&quot;&gt;&lt;span class=&quot;icon-instagram&quot;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;/a&gt;

  &lt;a target=&quot;_blank&quot; href=&quot;http://x.com/preziotte&quot;&gt;
    &lt;span class=&quot;btn icon-post-big&quot;&gt;&lt;span class=&quot;icon-twitter&quot;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;/a&gt;

  &lt;a target=&quot;_blank&quot; href=&quot;https://www.youtube.com/playlist?list=PLZVqsFc1Eo8RMMMmgzFqfsAY_er2e8cym&quot;&gt;
    &lt;span style=&quot;margin-right: -26px;&quot; class=&quot;btn icon-post-big&quot;&gt;&lt;span class=&quot;icon-youtube&quot;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;!--more--&gt;

&lt;h3 id=&quot;some-tools-im-using&quot;&gt;some tools i’m using&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;a href=&quot;http://processing.org&quot;&gt;Processing&lt;/a&gt; programming language
(+&lt;a href=&quot;https://github.com/ddf/Minim&quot;&gt;minim&lt;/a&gt; for audio data).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://threejs.org/&quot;&gt;Three.js&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://en.wikipedia.org/wiki/OpenGL_Shading_Language&quot;&gt;GLSL&lt;/a&gt; along with &lt;a href=&quot;https://github.com/spite/ccapture.js&quot;&gt;CCapture&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ffmpeg.org&quot;&gt;FFmpeg&lt;/a&gt; to stitch together frames and audio.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.lcdf.org/gifsicle/&quot;&gt;Gifsicle&lt;/a&gt; for batch GIF resizing.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://gramblr.com/&quot;&gt;Gramblr&lt;/a&gt; to upload videos to Instagram from my PC.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;a-few-stills-ive-captured&quot;&gt;a few stills i’ve captured&lt;/h3&gt;

&lt;div class=&quot;gallery swap&quot;&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000637.png&quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000765.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000764.png&quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/001004.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/002493.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: 46%; float: left&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/002615.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/022402.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/002888.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000668.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000517.png &quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: 46%; float: right;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000438.png&quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: 46%; float: left;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000446.jpg&quot; /&gt;
&lt;/figure&gt;
&lt;figure style=&quot;width: auto; float: none;&quot;&gt;
  &lt;img data-src=&quot;https://preziotte.com/assets/absurd/stills/000812.png &quot; /&gt;
&lt;/figure&gt;
&lt;/div&gt;

</description>
        <pubDate>Sun, 27 Mar 2016 00:00:00 -0400</pubDate>
        <link>https://preziotte.com/blog/absurd-music-visualizers/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/absurd-music-visualizers/</guid>
        
        
        <category>post</category>
        
        <category>cv</category>
        
      </item>
    
      <item>
        <title>Splat Operator</title>
        <description>&lt;div class=&quot;gallery swap&quot;&gt;
&lt;figure class=&quot;wide&quot; style=&quot;background: #000000;&quot;&gt;
  &lt;img height=&quot;432&quot; data-src=&quot;https://preziotte.com/assets/gifs/processed/splat-operator.gif&quot; /&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

</description>
        <pubDate>Fri, 25 Mar 2016 00:00:00 -0400</pubDate>
        <link>https://preziotte.com/blog/splat-operator/</link>
        <guid isPermaLink="true">https://preziotte.com/blog/splat-operator/</guid>
        
        
        <category>post</category>
        
      </item>
    
  </channel>
</rss>
