{"id":21890073,"url":"https://github.com/ejfox/four-seventeen","last_synced_at":"2025-10-13T23:39:49.283Z","repository":{"id":33941742,"uuid":"163327815","full_name":"ejfox/four-seventeen","owner":"ejfox","description":"NPM module for canvas-based generative art ","archived":false,"fork":false,"pushed_at":"2022-12-08T09:03:05.000Z","size":884,"stargazers_count":3,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T04:18:00.068Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ejfox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-27T19:07:50.000Z","updated_at":"2022-03-12T21:18:10.000Z","dependencies_parsed_at":"2023-01-15T03:30:01.054Z","dependency_job_id":null,"html_url":"https://github.com/ejfox/four-seventeen","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ejfox%2Ffour-seventeen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ejfox%2Ffour-seventeen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ejfox%2Ffour-seventeen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ejfox%2Ffour-seventeen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ejfox","download_url":"https://codeload.github.com/ejfox/four-seventeen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249060402,"owners_count":21206327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T11:28:39.790Z","updated_at":"2025-10-13T23:39:44.233Z","avatar_url":"https://github.com/ejfox.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![](/github/package-json/v/ejfox/four-seventeen.svg)](https://github.com/ejfox/four-seventeen)\n[![](https://img.shields.io/github/last-commit/google/skia.svg)](https://github.com/ejfox/four-seventeen)\n\n\n# 417\n\n## What it does\nA framework for [generative art](https://en.wikipedia.org/wiki/Generative_art) made with Coffeescript, D3, Canvas and random numbers.\n\nA boilerplate art script file with useful libraries and scaffolding is provided to create new works quickly. (`src/artscripts/_boilerplate.coffee`)\n\nSee [lots of examples here](https://imgur.com/a/0nlIRIo).\n## Development\n\n`npm install` before your first use.\n\nRun `npm dev` in another tab to automatically compile any .coffee file when it is saved\n\nTo run any individual art script, you can (assuming you are in the project root) do `node dist/artscripts/$FILENAME`\n\nTo run the boilerplate example you would do `node dist/artscripts/_boilerplate`\n\nTo get started on a new artscript, you can clone the boilerplate `cp src/artscripts/_boilerplate.coffee src/artscripts/MY-NEW-ARTSCRIPT.coffee` and then modifying that with your editor `atom src`\n\n## Useful commands\n\n`watch -n0 node dist/artscripts/10-14` repeatedly runs the `10-14` artscript\n\n`ffmpeg -framerate 24 -pattern_type glob -i '*.png' -c:v libx264 -pix_fmt yuv420p $FILENAME.mp4` combines all exported .png files into a movie\n\n## Common options\nThere are a few common options used for artscripts.\n\n+ **seed** is the seed used for the random number generators. For the most part, an artscript run with the same seed will produce the same image every time. Your results may vary.\n+ **count** is the number of particles to place on the page.\n+ **numTicks** is the number of times to run the `tick()` function in the artscript. In `-movie` mode, each tick is exported as a frame.\n+ **width** and **height** are the width and height of the canvas in pixels.\n+ **text** is the text in the tweet that accompanies the image.\n\n## Development web view\nThe development web view is located at `src/webserver.js`\n\nTo quickly see changes when iterating on a script, this creates a simple web server that shows the latest .png created in the `/dist/` folder. You can navigate to it at `localhost:3000`\n\nWorks well when paired with [atom-browser](https://atom.io/packages/atom-browser)\n![dev browser set-up](http://ej-fox.s3.amazonaws.com/screenshots/Screenshot%202018-12-15%2013.33.23.png)\n\n## TODO\n+ Add watch script that compiles coffeescript on change\n\n## Examples\n![9-10](https://i.imgur.com/96fLEBe.png)\n![10-2](https://i.imgur.com/WNcRDgg.png)\n![10-3-2](https://i.imgur.com/bxW0bex.png)\n![10-4-3](https://i.imgur.com/BTgXBOQ.png)\n![10-3](https://i.imgur.com/HGAz9QZ.png)\n![10-7-2](https://i.imgur.com/Y77isUO.png)\n![11-6-3](https://i.imgur.com/FOR6L5f.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fejfox%2Ffour-seventeen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fejfox%2Ffour-seventeen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fejfox%2Ffour-seventeen/lists"}