npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

p5.createloop

v0.3.1

Published

Create animation loops with noise and GIF exports in one line of code.

Downloads

758

Readme

p5.createLoop

Create animation loops with noise and GIF exports in one line of code.

Features include:

  • GIF image rendering
  • noise loops

Usage

html:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/p5.js"></script>
<script src="https://unpkg.com/[email protected]/dist/p5.createloop.js"></script>

javascript:

function setup() {
    createCanvas(400, 400)
    fill(0)
    frameRate(30)
    createLoop({duration:3, gif:true})
}

function draw() {
    background(255)
    translate(width / 2, height / 2)
    const radius = height / 3
    const x = cos(animLoop.theta) * radius
    const y = sin(animLoop.theta) * radius
    ellipse(x, y, 50, 50)
}

Note Currently the only supported method is with script tags. require and import will not work.

Examples

Noise Loop

  • makes use of animLoop.noise()

Noise Loop 2x

  • two noise seeds, one for x and one for y

Noise Loop 1D

  • a noise value for each x position

Noise Loop 2D

  • a noise value for each x and y position

also works in instance mode

Documentation

When a sketch is initialized the following are attatched to it:

  • createLoop()
    • a function to be called in setup()
  • animLoop
    • an object containing helpful properties and methods for draw()

createLoop()

This function can be called in three ways:

createLoop() //defaults to three second duration
createLoop(options)
createLoop(duration,options)

createLoop options

| Name | Default | Description | | ----------------- | --------- | ----------------------------------------------------------------------------------------------- | | duration | 3 | sets the duration in seconds of the loop. | | framesPerSecond | 30 | approximate fps of the loop. This is the same as calling frameRate() | | noise | options | See noise options | | gif | false | can also accept true or options to be passed to GIF module. See gif options |

Options can be passed as an object:

createLoop({
    noise:{
        radius:3,
        seed:99
    }
})

or as camelCase:

createLoop({
        noiseRadius:3,
        noiseSeed:99
    })

noise options

These can be passed in createLoop and also overridden each time animLoop.noise() is called. See this Coding Train explanation of how noise loops work.

| Name | Default | Description | | -------- | ----------------- | -------------------------------------------------------------------------------------------------------- | | radius | 1 | radius of the circle in a noise field to query. Similar to the concept of frequency | | seed | random(0,99999) | noise field offset | | theta | animLoop.theta | By defalt is angular progress of the loop. This can be set in animLoop.noise() but not in createLoop |

gif options

some notes on making GIF images:

  • The built in p5 frameRate() function will also set the delay between GIF frames
  • The GIF encoder gif.js uses web workers to render the GIF asynchronously

| Name | Default | Description | | ---------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- | | render | true | render the GIF image alongside the sketch. Clicking on the image will begin downloading the GIF | | open | false | open the gif image in a new tab or window | | download | false | download the gif automatically | | fileName | image.gif | name of the downloaded GIF file | | startLoop | 0 | loop index to begin recording the GIF | | endLoop | 1 | loop index to end recording the GIF | | canvas | <canvas> | the canvas to render. By default this is the sketch canvas | | onFinishRender | undefined | callback when rendering is complete, containing a blob of the rendered gif | | options | {} | options to pass to gif.js encoder. see gif.js documentation |

animLoop

Because the aim here is to get loopin asap, this object provides some valuable properties and methods for animating loops. See documentation on Loop Instance for further details.

| Name | Description | | ---------------------- | -------------------------------------------------------------------------------------- | | progress | linear progress of the loop with a range of 0 to 1 | | theta | angular progress of the loop in radians with range 0 to TWO_PI | | noise(options) | returns a noise value between -1 and 1. See noise options | | noise1D(x,options) | Same as above also accepting an x value, providing a 1D line of noise for each frame | | noise2D(x,y,options) | Same as above also accepting a y value, providing a 2D plane of noise | | noiseSeed() | set the noise seed. See noise options | | noiseRadius() | set the noise radius. See noise options |

Read more

Contributions

Climb aboard! Make an issue or pull request on the gitHub page

To do

  • add easing functions
  • set GIF size to reflect pixel density
  • add draw option to stay in sync with GIF loop

patch notes

  • 0.3.0 - 04/02/2023
    • merge p5.createLoop and createLoop packages
    • add onFinishRender callback
    • update webpack
  • 0.2.0 - 27/12/2020
    • fixed warning in p5 1.2 "p5 had problems creating the global function..."
  • 0.1.1 - 30/04/2019
    • added codepen examples
  • 0.1.0 - 30/04/2019
    • stable release
  • 0.0.21 - 30/04/2019
    • createLoop returns the animLoop object
    • README script tags reflect version
  • 0.0.18 - 15/04/2019
    • updated to createLoop 0.0.7
  • 0.0.17 - 15/04/2019
    • updated to createLoop 0.0.6
  • 0.0.16 - 15/04/2019
    • can handle webpack without adding p5 to global namespace
  • 0.0.15 - 15/04/2019
    • p5 must be externally required
  • 0.0.12 - 15/04/2019
    • remove full size images from package
  • 0.0.11 - 15/04/2019
    • removed p5 from bundle
    • where p5._targetFrameRate is undefined, uses p5._frameRate instead
  • 0.0.10 - 15/04/2019
    • enabled use as a package
    • added p5 as dependency
  • 0.0.6 - 15/04/2019
    • compressed example images
  • 0.0.4 - 14/04/2019
    • fixed README image bug
  • 0.0.2 - 14/04/2019
    • using script tags in examples
  • 0.0.1 - 14/04/2019
    • initial release