diff --git a/Catalogue/phyllotaxis.html b/Catalogue/phyllotaxis.html
index 457e0d1..da37d12 100644
--- a/Catalogue/phyllotaxis.html
+++ b/Catalogue/phyllotaxis.html
@@ -14,7 +14,7 @@
 
 
     let deg_per_sec = 30/5000;
-    let time = 120;
+    let time = 0.1;
     let fps = 60;
 
     centerX = ctx.canvas.width / 2;
@@ -31,7 +31,8 @@
           render();
           render_clear();
 
-          Draw_Phyllotaxis(rotation + 3.1);
+          // Draw_Phyllotaxis(rotation + 3.1);
+          Draw_Phyllotaxis(rotation + 1.5);
           console.log(rotation + 3.1)
           // Draw_Phyllotaxis(rotation/5000);
 
@@ -46,8 +47,10 @@
     render();
 
     function Draw_Phyllotaxis(angle) {
-      colour1 = [255, 170, 0];
-      colour2 = [255, 0, 221];
+      // colour1 = [255, 170, 0];
+      // colour2 = [255, 0, 221];
+      colour1 = [45, 129, 252];
+      colour2 = [252, 3, 98];
 
       var c = 24; //something to do with width. but not width
 
@@ -59,7 +62,7 @@
         var y = r * Math.sin(a) + centerY;
 
         ctx.beginPath();
-        ctx.arc(x, y, 4, 0, 2 * Math.PI);
+        ctx.arc(x, y, 8, 0, 2 * Math.PI);
         ctx.fillStyle = colourToText(ncolour);
         ctx.fill();
 
diff --git a/tomp4_test/fresh.html b/tomp4_test/fresh.html
new file mode 100644
index 0000000..f712d36
--- /dev/null
+++ b/tomp4_test/fresh.html
@@ -0,0 +1,185 @@
+<!-- <script src="https://unpkg.com/@ffmpeg/ffmpeg@0.8.1/dist/ffmpeg.min.js"></script> -->
+<script src="https://unpkg.com/@ffmpeg/ffmpeg@0.10.0/dist/ffmpeg.min.js"></script>
+
+<canvas id="canvas" style="height: 900px; width: 900px"></canvas>
+
+<video id="myVideo" controls="controls"></video>
+<video id="output-video" controls="controls"></video>
+
+<a id="dl" href="" download="download.mp4"></a>
+
+<div id="message"></div>
+
+<script>
+  let c = document.getElementById("canvas");
+  let ctx = c.getContext("2d");
+  //   ctx.canvas.width = window.innerWidth;
+  //   ctx.canvas.height = window.innerHeight;
+  ctx.canvas.width = 900;
+  ctx.canvas.height = 900;
+
+  centerX = ctx.canvas.width / 2;
+  centerY = ctx.canvas.height / 2;
+
+  let deg_per_sec = 30 / 5000;
+  let timeLimit = 10;
+  let fps = 60;
+
+  rotation = 0; //was = j = angle
+  currentFrame = 0; //was = i
+
+  const { createFFmpeg } = FFmpeg;
+  const ffmpeg = createFFmpeg({
+    log: true,
+  });
+
+  const transcode = async (webcamData) => {
+    const message = document.getElementById("message");
+    const name = "record.webm";
+    await ffmpeg.load();
+    message.innerHTML = "Start transcoding";
+    await ffmpeg.write(name, webcamData);
+    await ffmpeg.transcode(name, "output.mp4");
+    message.innerHTML = "Complete transcoding";
+    const data = ffmpeg.read("output.mp4");
+
+    const video = document.getElementById("output-video");
+    video.src = URL.createObjectURL(
+      new Blob([data.buffer], { type: "video/mp4" })
+    );
+    dl.href = video.src;
+    dl.innerHTML = "download mp4";
+  };
+
+  fn().then(async ({ url, blob }) => {
+    transcode(new Uint8Array(await blob.arrayBuffer()));
+  });
+
+  function fn() {
+    var recordedChunks = [];
+
+    var time = 0;
+    var canvas = document.getElementById("canvas");
+
+    return new Promise(function (res, rej) {
+      var stream = canvas.captureStream(60);
+
+      mediaRecorder = new MediaRecorder(stream, {
+        mimeType: "video/webm; codecs=vp9",
+      });
+
+      mediaRecorder.start(time);
+
+      mediaRecorder.ondataavailable = function (e) {
+        recordedChunks.push(event.data);
+        // for demo, removed stop() call to capture more than one frame
+      };
+
+      mediaRecorder.onstop = function (event) {
+        var blob = new Blob(recordedChunks, {
+          type: "video/webm",
+        });
+        var url = URL.createObjectURL(blob);
+        res({ url, blob }); // resolve both blob and url in an object
+
+        myVideo.src = url;
+        // removed data url conversion for brevity
+      };
+      
+      // for demo, draw random lines and then stop recording
+    //   var i = 0,
+    //   tid = setInterval(() => {
+    //       if (currentFrame > timeLimit / (1 / fps)) {
+    //           // draw 20 lines
+    //           clearInterval(tid);
+    //           mediaRecorder.stop();
+    //       }
+    //       //   let canvas = document.querySelector("canvas");
+    //       //   let cx = canvas.getContext("2d");
+    //       //   cx.beginPath();
+    //       //   cx.strokeStyle = "green";
+    //       //   cx.moveTo(Math.random() * 600, Math.random() * 600);
+    //       //   cx.lineTo(Math.random() * 600, Math.random() * 600);
+    //       //   cx.stroke();
+
+    //       render_clear();
+    //       // Draw_Phyllotaxis(rotation + 3.1);
+    //       Draw_Phyllotaxis(rotation + 1.5);
+
+    //       rotation += deg_per_sec / fps; // was = j = angle, now = rotation
+    //       currentFrame += 1; // was = i
+    //     }, 1000 / fps);
+    function render() {
+        if (currentFrame < timeLimit / (1 / fps)) {
+          setTimeout(() => {
+            render();
+            render_clear();
+
+            // Draw_Phyllotaxis(rotation + 3.1);
+            Draw_Phyllotaxis(rotation + 1.5);
+            console.log(rotation + 3.1);
+            // Draw_Phyllotaxis(rotation/5000);
+
+            // Draw_center(); //Debugging
+            // DrawBorder();
+          }, 1000 / fps);
+          rotation += deg_per_sec / fps; // was = j = angle, now = rotation
+          currentFrame += 1; // was = i
+        }
+        else{
+            mediaRecorder.stop();
+        }
+      }
+
+      render();
+
+    });
+  }
+
+  function Draw_Phyllotaxis(angle) {
+    // colour1 = [255, 170, 0];
+    // colour2 = [255, 0, 221];
+    colour1 = [45, 129, 252];
+    colour2 = [252, 3, 98];
+
+    var c = 24; //something to do with width. but not width
+
+    for (let n = 0; n < 300; n += 1) {
+      ncolour = LerpRGB(colour1, colour2, Math.cos(rad(n / 2)));
+      var a = n * angle; //137.5;
+      var r = c * Math.sqrt(n);
+      var x = r * Math.cos(a) + centerX;
+      var y = r * Math.sin(a) + centerY;
+
+      ctx.beginPath();
+      ctx.arc(x, y, 8, 0, 2 * Math.PI);
+      ctx.fillStyle = colourToText(ncolour);
+      ctx.fill();
+    }
+  }
+  function rad(degrees) {
+    var pi = Math.PI;
+    return degrees * (pi / 180);
+  }
+
+  function LerpRGB(a, b, t) {
+    if (t < 0) {
+      t *= -1;
+    }
+    var newColor = [0, 0, 0];
+    newColor[0] = a[0] + (b[0] - a[0]) * t;
+    newColor[1] = a[1] + (b[1] - a[1]) * t;
+    newColor[2] = a[2] + (b[2] - a[2]) * t;
+    return newColor;
+  }
+
+  function colourToText(colour) {
+    return "rgb(" + colour[0] + "," + colour[1] + "," + colour[2] + ")";
+  }
+
+  function render_clear() {
+    ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
+    ctx.fillStyle = "black";
+    ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
+  }
+</script>
diff --git a/tomp4_test/phyllotaxis.html b/tomp4_test/phyllotaxis.html
new file mode 100644
index 0000000..a90db86
--- /dev/null
+++ b/tomp4_test/phyllotaxis.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html>
+<html>
+  <!-- ahhh -->
+
+  <body style="margin: 0; overflow: hidden">
+    <canvas
+      id="myCanvas"
+      width="10"
+      height="10"
+      style="display: block; box-sizing: border-box"
+    >
+      Your browser does not support the HTML5 canvas tag.</canvas
+    >
+    <script src="https://unpkg.com/@ffmpeg/ffmpeg@0.10.0/dist/ffmpeg.min.js"></script>
+    <script>
+      const { createFFmpeg } = FFmpeg;
+      const ffmpeg = createFFmpeg({
+        log: true,
+      });
+
+      const transcode = async (webcamData) => {
+        const message = document.getElementById("message");
+        const name = "record.webm";
+        await ffmpeg.load();
+        message.innerHTML = "Start transcoding";
+        await ffmpeg.write(name, webcamData);
+        await ffmpeg.transcode(name, "output.mp4");
+        message.innerHTML = "Complete transcoding";
+        const data = ffmpeg.read("output.mp4");
+
+        const video = document.getElementById("output-video");
+        video.src = URL.createObjectURL(
+          new Blob([data.buffer], { type: "video/mp4" })
+        );
+        dl.href = video.src;
+        dl.innerHTML = "download mp4";
+      };
+
+      fn().then(async ({ url, blob }) => {
+        transcode(new Uint8Array(await blob.arrayBuffer()));
+      });
+
+      function fn() {
+        var recordedChunks = [];
+
+        var time = 0;
+        var canvas = document.getElementById("canvas");
+
+        return new Promise(function (res, rej) {
+          var stream = canvas.captureStream(60);
+
+          mediaRecorder = new MediaRecorder(stream, {
+            mimeType: "video/webm; codecs=vp9",
+          });
+
+          mediaRecorder.start(time);
+
+          mediaRecorder.ondataavailable = function (e) {
+            recordedChunks.push(event.data);
+            // for demo, removed stop() call to capture more than one frame
+          };
+
+          mediaRecorder.onstop = function (event) {
+            var blob = new Blob(recordedChunks, {
+              type: "video/webm",
+            });
+            var url = URL.createObjectURL(blob);
+            res({ url, blob }); // resolve both blob and url in an object
+
+            myVideo.src = url;
+            // removed data url conversion for brevity
+          };
+
+          // for demo, draw random lines and then stop recording
+          var i = 0,
+            tid = setInterval(() => {
+              if (i++ > 20) {
+                // draw 20 lines
+                clearInterval(tid);
+                mediaRecorder.stop();
+              }
+              let canvas = document.querySelector("canvas");
+              let cx = canvas.getContext("2d");
+              cx.beginPath();
+              cx.strokeStyle = "green";
+              cx.moveTo(Math.random() * 100, Math.random() * 100);
+              cx.lineTo(Math.random() * 100, Math.random() * 100);
+              cx.stroke();
+            }, 200);
+        });
+      }
+
+      let c = document.getElementById("myCanvas");
+      let ctx = c.getContext("2d");
+      ctx.canvas.width = window.innerWidth;
+      ctx.canvas.height = window.innerHeight;
+
+      let deg_per_sec = 30 / 5000;
+      let time = 0.1;
+      let fps = 60;
+
+      centerX = ctx.canvas.width / 2;
+      centerY = ctx.canvas.height / 2;
+
+      rotation = 0; //was = j = angle
+      currentFrame = 0; //was = i
+
+      function render() {
+        if (currentFrame < time / (1 / fps)) {
+          setTimeout(() => {
+            render();
+            render_clear();
+
+            // Draw_Phyllotaxis(rotation + 3.1);
+            Draw_Phyllotaxis(rotation + 1.5);
+            console.log(rotation + 3.1);
+            // Draw_Phyllotaxis(rotation/5000);
+
+            // Draw_center(); //Debugging
+            // DrawBorder();
+          }, 1000 / fps);
+          rotation += deg_per_sec / fps; // was = j = angle, now = rotation
+          currentFrame += 1; // was = i
+        }
+      }
+
+      render();
+
+      function Draw_Phyllotaxis(angle) {
+        // colour1 = [255, 170, 0];
+        // colour2 = [255, 0, 221];
+        colour1 = [45, 129, 252];
+        colour2 = [252, 3, 98];
+
+        var c = 24; //something to do with width. but not width
+
+        for (let n = 0; n < 300; n += 1) {
+          ncolour = LerpRGB(colour1, colour2, Math.cos(rad(n / 2)));
+          var a = n * angle; //137.5;
+          var r = c * Math.sqrt(n);
+          var x = r * Math.cos(a) + centerX;
+          var y = r * Math.sin(a) + centerY;
+
+          ctx.beginPath();
+          ctx.arc(x, y, 8, 0, 2 * Math.PI);
+          ctx.fillStyle = colourToText(ncolour);
+          ctx.fill();
+        }
+      }
+      function rad(degrees) {
+        var pi = Math.PI;
+        return degrees * (pi / 180);
+      }
+
+      function LerpRGB(a, b, t) {
+        if (t < 0) {
+          t *= -1;
+        }
+        var newColor = [0, 0, 0];
+        newColor[0] = a[0] + (b[0] - a[0]) * t;
+        newColor[1] = a[1] + (b[1] - a[1]) * t;
+        newColor[2] = a[2] + (b[2] - a[2]) * t;
+        return newColor;
+      }
+
+      function colourToText(colour) {
+        return "rgb(" + colour[0] + "," + colour[1] + "," + colour[2] + ")";
+      }
+
+      function render_clear() {
+        ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
+        ctx.fillStyle = "black";
+        ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
+      }
+    </script>
+  </body>
+</html>