Skip to main content

Flitter is a functional programming language and declarative system for describing 2D and 3D visuals

Project description

Screenshot from a Flitter program showing colourful distorted ellipse shapes with trails moving outwards from the centre of the screen.

Flitter

CI lint CI test docs

Flitter is a functional programming language and declarative system for describing 2D and 3D visuals. The language is designed to encourage an iterative, explorative, play-based approach to constructing visuals.

The engine is able to live reload all code and assets (including shaders, images, videos, models, etc.) while retaining the current system state - thus supporting live-coding. It also has support for interacting with running programs via MIDI surfaces.

Flitter is designed for expressivity and ease of engine development over raw performance, but is fast enough to be able to do interesting things.

The engine that runs the language is capable of:

  • 2D drawing (loosely based on an HTML canvas/SVG model)
  • 3D rendering, including:
    • primitive box, sphere, cylinder and cone shapes
    • external triangular mesh models in a variety of formats including OBJ and STL
    • texture mapping, including with the output of other visual units (e.g., a drawing canvas or a video)
    • planar slicing and union, difference and intersection of solid models
    • ambient, directional, point/sphere, line/capsule and spotlight sources (currently shadowless)
    • Physically-based rendering material shading, emissive objects and transparency
    • multiple cameras with individual control over location, field-of-view, near and far clip planes, render buffer size, color depth, MSAA samples, perspective/orthographic projection, fog, conversion to monochrome and colour tinting
  • simulating physical particle systems, including spring/rod/rubber-band constraints, gravity, electrostatic charge, adhesion, buoyancy, inertia, drag, barriers and particle collisions
  • playing videos at arbitrary speeds, including in reverse (although video will stutter if it makes extensive use of P-frames)
  • running GLSL shaders as stacked image filters and generators, with per-frame control of arbitrary uniforms
  • compositing all of the above and rendering to one or more windows
  • saving rendered output to image and video files (including lockstep frame-by-frame video output suitable for producing perfect loops and direct generation of animated GIFs)
  • driving arbitrary DMX fixtures via a USB DMX interface (currently via an Entec-compatible interface or my own crazy hand-built devices)
  • driving a LaserCube plugged in over USB (other lasers probably easy-ish to support)
  • taking live inputs from Ableton Push 2 or Behringer X-Touch mini MIDI surfaces (other controllers relatively easy to add)

Installation

Flitter can be installed from the flitter-lang PyPI package with:

pip3 install flitter-lang

and then run as:

flitter path/to/some/flitter/script.fl

More details can be found in the installation documentation.

Documentation

The documentation is available on the Flitter Read the Docs pages.

There are a few quick examples in the main repository. However, there is also a separate repo containing many more interesting examples that are worth checking out.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flitter-lang-1.0.0b10.tar.gz (138.1 kB view details)

Uploaded Source

Built Distributions

flitter_lang-1.0.0b10-cp312-cp312-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.12 Windows x86-64

flitter_lang-1.0.0b10-cp312-cp312-musllinux_1_1_x86_64.whl (12.1 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

flitter_lang-1.0.0b10-cp312-cp312-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

flitter_lang-1.0.0b10-cp312-cp312-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

flitter_lang-1.0.0b10-cp311-cp311-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.11 Windows x86-64

flitter_lang-1.0.0b10-cp311-cp311-musllinux_1_1_x86_64.whl (12.4 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

flitter_lang-1.0.0b10-cp311-cp311-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

flitter_lang-1.0.0b10-cp311-cp311-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

flitter_lang-1.0.0b10-cp310-cp310-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.10 Windows x86-64

flitter_lang-1.0.0b10-cp310-cp310-musllinux_1_1_x86_64.whl (11.3 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

flitter_lang-1.0.0b10-cp310-cp310-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

flitter_lang-1.0.0b10-cp310-cp310-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

File details

Details for the file flitter-lang-1.0.0b10.tar.gz.

File metadata

  • Download URL: flitter-lang-1.0.0b10.tar.gz
  • Upload date:
  • Size: 138.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for flitter-lang-1.0.0b10.tar.gz
Algorithm Hash digest
SHA256 c18504286ae6c09b852f0b60085201374b568476741d64da1ebdf1322e46e81d
MD5 95dfa517c8a896474251579f3dd014ac
BLAKE2b-256 8bf71e111a513623d999a9fa3be4d5530d7d65b1b2fc2ac9c03935244cf670bb

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d2b97be7dfe36a62f042119af9ced0e628d22e527b90912e9ec4286b044ffacc
MD5 89ef7e7947f32f1873f56b51ad6cb1af
BLAKE2b-256 3535b2a12be8a5a44356bab1f2d152b8556bc8bd525b9f7cb289fd7674c1be46

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 753bf1c0236aedc33cf89d22642af7630e439ec769fb65e075b25b431456b76b
MD5 6e51fe45999652b274443d1ec87c825c
BLAKE2b-256 929d2b84716932696b4a76fde66f366085c72a08731aaedeb4244eaba50a8e88

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afbd7b511651be0634aa8c62a10c9dcd70e8454b38d42cb38399a50d1864509c
MD5 3fbd47331d30f15149c84a6303b72b2b
BLAKE2b-256 084d21e5081c0026a999f57a509c797cf2fee1978c9f9e7bd4e978cf065c0ab2

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ff9972d8bfdc3a242ec41d54075705204fdb5e5612dc89afb3af7e3dbd382fe
MD5 679ac7623c14ce300ec12a7644d36288
BLAKE2b-256 50b9936fa7421fc9f3f4a29f058ecbe1c727f384bb8c7a069b0365825f1d8c8a

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 45c71c8468db5c441e1e633fcfb7865ef91dec862f9542e44f7b47c89a36a1cf
MD5 8dc4351b207393bc0fbf4c1baca823e1
BLAKE2b-256 0f0fbc0fc23a342543beb3988bc7e5fecb8d374c9631815b564a2930cdd0db0c

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bc2b211d9e04c441b27b5ce0e6f891579d7e2c411c74ee2a324e6ef56f4cd4a7
MD5 500d6e67575314fac232636902dcc16a
BLAKE2b-256 7fe376eb6d812f44f1b4688643b9391293c6c90520370f0a861106393ba85b83

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b9c5c99747cb87a6e15a837f3e4096bf1a34a84495fde0db164195f57eb79688
MD5 535195e2688f3865aa7510098c7f37fe
BLAKE2b-256 bd6561c3635ae92ef5e75594f75edd450598546320b6f28a90f3804545f2e4bd

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa761802abe658695da334329c1f01e80d5c5c2edbbe18b60f6c8575d55bab24
MD5 66f52ea34b2a510e35eaeb28fbc2f8b8
BLAKE2b-256 380cc00b95ae64f6737856a0bead59ce4ebc5ac05e08bb469ab58817ce862eda

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 543b5e4aa17b17b0ee4cd9bb5e3f03be478cf8c731daf6841fffb8228fffbe06
MD5 770eb7d989bf76b076cc3ecdcbae8f27
BLAKE2b-256 5f94360c5db073faec8ba13403e79b69ef745b036ee5d052d16d730d0d09b9c0

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aa7a901f1de4c5c222ba4576f933a4f3b8de2d13124eb355084a1dd476db38fb
MD5 2edb3390c2dc92073a456756bd1b3ff2
BLAKE2b-256 d56b7cd17d9d4aaa1ff18aba790b1767464ff652fbcbea23b2094727c33e2920

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d899dbb9fae49d3e5594898a2f4d7a8d401c41163e9aaa7f5c5ec31eb103a13b
MD5 4da849f1c4f98656d6afd865bd6d2348
BLAKE2b-256 5a1ce9cea0869e427d348fffa82c7514e719b51a26655b6d57f01f0e2b93f466

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9f12aeace2a4091591dc64ced49f2340da9b88507a086e5b4ff4371a86a57e71
MD5 fcc3f34e072f931cccbdc3ef54e2505b
BLAKE2b-256 188a4cbe8f7accf28487bb4da1817d9fb8496c695e7cf72caccba773f9416ba4

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c53877235fe8f1d627fc2c5ed74e905b52c3d420031a82f7a3cd6dc924fd4328
MD5 ded1230c8a4a504dcaf6d29d848ca898
BLAKE2b-256 4312c411d50646b99c2bdce980b4a4e2bee89646cc17acb12497d2039435ba64

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 108cf9d968f39d9c7d6489af5fd4423d3339e9ab19fdb1f60b1269197455d8ab
MD5 364132bd27ef3b1a842a54ccaf5f08f9
BLAKE2b-256 a2c80b1acd5d162412025400ba48cca6142378f17b86020c65f8890facefa3de

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b10-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b10-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 565e5bc3ca03717c32d55477499d632ba43cb4972da0c01084ef9a3d97a401f2
MD5 369a193ac9da1de02a74dc8bc4aadfb8
BLAKE2b-256 a3c26db0ceac5c881a8b4b36c662dfe1d64288eba48c86404e3d99f606d0586b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page