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.0b9.tar.gz (138.0 kB view details)

Uploaded Source

Built Distributions

flitter_lang-1.0.0b9-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.0b9-cp312-cp312-musllinux_1_1_i686.whl (11.3 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

flitter_lang-1.0.0b9-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.0b9-cp312-cp312-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

flitter_lang-1.0.0b9-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.0b9-cp311-cp311-musllinux_1_1_x86_64.whl (12.3 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b9-cp311-cp311-musllinux_1_1_i686.whl (11.6 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

flitter_lang-1.0.0b9-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.0b9-cp311-cp311-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

flitter_lang-1.0.0b9-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.0b9-cp310-cp310-musllinux_1_1_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b9-cp310-cp310-musllinux_1_1_i686.whl (10.6 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

flitter_lang-1.0.0b9-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.0b9-cp310-cp310-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

flitter_lang-1.0.0b9-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.0b9.tar.gz.

File metadata

  • Download URL: flitter-lang-1.0.0b9.tar.gz
  • Upload date:
  • Size: 138.0 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.0b9.tar.gz
Algorithm Hash digest
SHA256 92e01b45bf2b014c94bebf675f4fac72a8a26710280d4809b9c56406eda49535
MD5 30a58cebfcd873dda94e706431bb5525
BLAKE2b-256 54f09326f8518910bd398bacdc45246c49380918a20189d975299aa64c20ec13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1060b5a0ab4fa75fa32d46e59232083b16ed71caf0107ae3f41ef35380c87121
MD5 31ee25acb701f3894d88233efa18bf4d
BLAKE2b-256 9a7208dc87c6ee4a95bce2760e1d08a89e8d9f6e3b1c3242d6e7b965f97bd069

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b9-cp312-cp312-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 416a0d34b0ac3997395a717fc90140dd32bad1c2e9a3c925318049ba5d043906
MD5 bc242d8fc837e7067bef4fdc143a8d1a
BLAKE2b-256 af357e1cfb1bdacf2d311f4338b71eab0eef35dbf3a5f2219b67740c8f72e500

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 494e5b33ae69422821d3422a7c16a3843d0e7866e8499b04f7fb189dcbc48d78
MD5 939102e2256d1e3d09ca7010da2477db
BLAKE2b-256 55d1f7b31e06edc0806273d5bbc44a60787df9d42cc224c57ddd0ccc6e03f883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aad708110f5421e7cc9bbc29ab79457cd95d5933b812b0ca3a249dcb9813b462
MD5 c6a9d69e42c0e62b4453509755f04653
BLAKE2b-256 b5546c42d6996edb57e27f02a132cad942422140f5f1b6d412fa131f2fbf066a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1a557200c9cb2a1abb3404b14934df1cddb94ac0caef5fe5593fb7d84be0712d
MD5 a43287b49f0bbb2bd9aa90ed4e4ba6a3
BLAKE2b-256 7eafb6dacdb2552c517f6f0019c99d65fe0844b8721f4ca52177cc4363586d6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c0e20bf9cfe00fafbd46255c56aee94ad52822c3323c89bbdb04995882b2a34e
MD5 8289e82f7276c8a6c2366ca6ee2c977c
BLAKE2b-256 d3d245e9c504e92b3e4c9a500a358cd0de846a5e5846252b8ab175ae7443adf4

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b9-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 a6a20ed49c2368edf859f80f602d2bc8cffcc79817b0a77a307d18443d2573bb
MD5 7661f7303a1befab13f07dfe975b1d88
BLAKE2b-256 3d6c6a2d5c57e06111b86f71486d65627f4833dd02fbcfcd6d6265801e271452

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a71d76d6d51a9415fc9cb80556316394a3ae89c60e6dba9edf64ad1f718f04e0
MD5 4bd0e8b59e3ea4d661a88a034e367466
BLAKE2b-256 b637fad64ed3bd80a2dc20f8d4cd5c2857879e2640615512efda727cb77d4a6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7de5eb901afa88ec575ef06e180e1be1d67c068445c1e49b5544d78a4bfd6fe1
MD5 c0e90835651ee92e0e3ac6148b5008e7
BLAKE2b-256 36fe2caf560bc385cad60f868dc56624dc90e8f8941916c6968905beb8a9fc94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1203524e1595b8103cf2b977dccaf2019d33727463036aadbd434dbf2b270fc9
MD5 4a9b04fa962b167cdb0d918b0f3fdd79
BLAKE2b-256 ed2377f3e082258e492346c313531484fd130eac0cb8d94c9919111573808051

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e472bf5568f0bb0b25545040b4d8e71cc318995b8ae3be1cfca6fa9d085643b0
MD5 b2bfb5dc2e9ae168e52fd3467cf625b2
BLAKE2b-256 38966da9a525f262fea6d96174e0cd31ba504eb0ce29ded9e1d274827c4465a0

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b9-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 1729b8a430cfa546dcb9de6edb7f44ba343404f7c62d0023e5e163f4f1e805b2
MD5 6b5ffe0671f2658c4c3ba167d0b71287
BLAKE2b-256 5489ac94e99c94ca3c23a63d003a79e55ae1779628d009999aab3e6e89ea2cb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fdbc624efa87fe0d32c426a1fed21612d5d776d678aaa76e40082d58b728b10
MD5 0afc0a3fa2962c2dbb19cefe2b8b34dc
BLAKE2b-256 5fa9ff90cc727a2342dc343eb8afbfab058a47d5a24241ae1a551c1426effa2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9495f6056644e5146199c6937844ff74169e5592cdc19dd60113dba97d2797ab
MD5 b04933cad9cce9a5a90fc5fa6b9919a2
BLAKE2b-256 132c03abf5ded680974a478c2332c4987747fdd331332220a60f68ea588f4ae7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6da95babc95700e71974cdcec4f29d415ad509abd0c0235825a89725b989b0f7
MD5 0eb3393046aafa8aaee09e5274c1afc2
BLAKE2b-256 f4f7ad7421726ff8547eb0532b51b8ffa008dffa7574c4c34732c2f8701f1231

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