Learning about & applying algorithms and data structures for generative art/design, helping to introduce participants to a wider spectrum of techniques.
Unlike other initiatives like
#genuary,
#codevember,
#nodevember
etc., all of which are predominantly using visual/conceptual prompts, the focus
of the #AlgoApril
initiative is on algorithmic literacy, using technical,
algorithmic prompts (of course, with some [visual] references and study
materials) without further prescribing how these algorithms should be used. The
only aim, goal and hope is for people to creatively engage with these
techniques, breaking 'em, hacking 'em and finding interesting uses to create
outcomes, which could be considered artistic. Algorithmic layering is encouraged
at each turn!
In some sense, this more "bottom-up" approach to creation is maybe alien to some, but the lack of explicit aesthetic or conceptual/artistic goals has the potential to produce a much wider scope of outcomes (hopefully not only visual - audio, text and other outputs are highly encouraged!). There's also hope it could be more educational, helping people to engage with a larger repertoire of fundamental algorithmic tools and then apply & mix them in their own work/practice.
Many of the topics & algorithms selected here will have a more or less known visual representation and we encourage everyone to consciously reject these clichés and make honest attempts to find creative other solutions to visualize/sonify/represent them.
In short: Still TBD.
Initial community feedback seems to show a general preference for a slower-than-daily pace, e.g. weekly. This makes sense, because the stated aim is "learning new things" (in addition to creating "interesting things") and faster is not always better! In general, only because there will be altogether 30 prompts, there should be however no expectation of daily participation. Also participation in one's own time after April 2022 is highly encouraged and would still be individually useful... Get in touch with your own thoughts on the matter!
This is not a curriculum and should not be seen as a form of courseware. There're also no specific requirements or languages. Practically though, you should already feel (quite) familiar with your chosen language or toolset, so that your focus can be on the creative exploration of the prompts, rather than struggling along with syntax & fundamental semantics.
These will still have to be properly selected, ordered and turned into actual daily prompts with linked references/materials. In no particular order or importance (yet)! The current list is very early WIP, more of a brain dump and has a large thematic overlap with a courseware I'm currently preparing for various thi.ng/umbrella packages. Feel free to add/remove (see section below)!
- Non-uniform random distributions
- Gaussian/normal, geometric, exponential...
- Poisson disc sampling
- Density fields
- Colored noise
- red, blue, pink, brown, green...
- Low discrepancy sequences
- Halton, Kronecker, Plastic number
- Metrics & dissimilarities
- Manhattan, Chebyshev, Haversine, Hamming, Canberra, Minkowski...
- Bray-Curtis, Jaccard, Sørensen–Dice...
- (Signed) Distance Fields
- 2D/3D shape/form creation/combination/rendering
- Spatial manipulations
- Typography
- Interpolation
- 1D/2D/3D/nD
- non-linear functions
- bilinear, trilinear, cubic, bicubic, hermite, bezier etc.
- DSP
- Waves/oscillators
- Additive vs. subtractive synthesis
- Granular synthesis
- Physical modeling
- AM/FM, LFOs (modulation)
- Filtering
- IIR vs. FIR type filters
- LP/HP/BP/Biquad
- DFT/FFT
- Window functions
- Waves/oscillators
- Trees
- Spatial indexing: Quad/Oct/Kd-trees
- Sparse Voxel trees
- Interval trees
- Abstract syntax trees (e.g. S-expressions, Lisp, WASM, parsing)
- Subdivisions
- Tree vs curve/shape/mesh
- Chaikin, Catmull-clark, Doo-Sabin, Loop etc.
- Displacements
- Graphs
- Directed vs. undirected
- Adjacency/degree matrices
- Analysis/visualization
- Disjoint Sets
- Unionfind (e.g. blob detection/labeling)
- Mazes
- Minimum Spanning Tree
- Kruskal
- Paths
- Shortest paths, Dijkstra...
- Hamiltonian
- Convolution
- Kernels
- Cellular automata
- Audio (1D), Image (2D), Volume (3D) filtering
- Dataflow/reactivity
- graph/event based
- spreadsheet
- transformation, signal/collect/broadcast
- deterministic vs. undeterministic
- Physics
- rigid vs. softbody vs. fluids
- behaviors/constraints
- Meshes
More to come/select...
For each prompt we will try to provide a list of references, tutorial links, and where applicable, images/diagrams/videos, (pseudo)code examples.
TODO - to be extracted & ordered from above topics
TODO
- Wikipedia
- Sedgewick/Alg4CS
- Github repos
- Images
- Youtube vids
- Blog posts / tutorials
Looking for contributors. For now, please feel free to propose topics, prompts, references and any other useful materials.
There're two barebones project boards:
Please get in touch:
- @toxi
- ...
© 2022 The #AlgoApril authors // MIT licensed