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

Uploaded Source

Built Distributions

flitter_lang-1.0.0b8-cp312-cp312-musllinux_1_1_x86_64.whl (11.9 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b8-cp312-cp312-musllinux_1_1_i686.whl (11.1 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

flitter_lang-1.0.0b8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

flitter_lang-1.0.0b8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

flitter_lang-1.0.0b8-cp312-cp312-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

flitter_lang-1.0.0b8-cp311-cp311-musllinux_1_1_x86_64.whl (12.1 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b8-cp311-cp311-musllinux_1_1_i686.whl (11.5 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

flitter_lang-1.0.0b8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

flitter_lang-1.0.0b8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

flitter_lang-1.0.0b8-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

flitter_lang-1.0.0b8-cp311-cp311-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

flitter_lang-1.0.0b8-cp310-cp310-musllinux_1_1_x86_64.whl (11.1 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

flitter_lang-1.0.0b8-cp310-cp310-musllinux_1_1_i686.whl (10.5 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

flitter_lang-1.0.0b8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

flitter_lang-1.0.0b8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (10.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

flitter_lang-1.0.0b8-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

flitter_lang-1.0.0b8-cp310-cp310-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: flitter-lang-1.0.0b8.tar.gz
  • Upload date:
  • Size: 136.3 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.0b8.tar.gz
Algorithm Hash digest
SHA256 835d32f6c32d96eb8709e4bf965e48ea4cdaa01b6fb8af438e87897df3dd558c
MD5 6bafecc292228669ff34e68d67413d5b
BLAKE2b-256 06eb13c6583dcec9f454ca418ae43a1bca340c9975603054f67830161e5adb78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c58b447ac8173684716fe9dfb2234c43a905bffccc4d7a95be8c318d9c45602d
MD5 3b00dee45fa931b987816d71fff64ea5
BLAKE2b-256 43b4d699d438e79c1e1f679cee883648403b0f9e1508d5b58250530227a78504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 18a09fd9f1445b4e6f77935c633dff16a0d0cbec7b085145a0b0d718b4427fc6
MD5 9f02427b8a513c9021d2f0325dfad999
BLAKE2b-256 a2249a12322173e0e11c1bd5384e25a68ec4800110e73416ea830b8d485c3671

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 845307b64bc995500bd57558b73eec90f815d09f4672a4e63d67a799ffa3d1b1
MD5 95a724c3fb4bca5345a70e093bc095f5
BLAKE2b-256 3f59144cafa92e098ce750e0f26681e8f761df42f432e8b6252356f93ee93db2

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9862ad0bd9e5211f558220d604352eeb12f1e9744f0d8504b3e8f1a150c4597d
MD5 2f63527f5251d18f56571bffa1686bce
BLAKE2b-256 ddb7c36b562aa553993e3e47fab0c1abf2e4c46786a0c38a31c945011ba6fc87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d3478f2cfd4104bdce8c745659abefa060d4de2e9ed123a150f790103369a1a
MD5 4fde1abfaac5c636600d491e10445c73
BLAKE2b-256 df38de4ceb4b29be353abcbdc9794cb506d22d4cfe6a567893ed93617b1a8117

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4b93defe0e6424c525d294f16a66db802820002bfc068380140627465f2a419b
MD5 1995b237e58cdab7485e870255f51a86
BLAKE2b-256 261699877ced9a32d6e28472c8d60c8cf69823c6a9609daa8cc5fbf4fbac8f83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1de7f47ec32815af068a0435ab7ce746bf34b81d1b60ff7e755724be9e6e6b35
MD5 c5930fa67481601c41a72667c3aaa32e
BLAKE2b-256 fe355d919d9561ce2075eb19018c3843871d6ab42e533b1a1224e15631472b00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 27c92d63baebbf9c55c65843dc353d521a3727c253a6a10fb5630177642cfb6c
MD5 fc8ec35d7c4aefb125768dafcf14afac
BLAKE2b-256 ae3c7ad6662020cd433c7e8697c1fb89de1e8260d66d786e38adca0669b4d31d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 490d372456d287c1430e77830d4efc3e122e3ca2fc26ae9311985430124eb5c6
MD5 9bf0998aea123a989d6a0d0bd4792f5d
BLAKE2b-256 5a32d231a4962d466b4054718f3f9a8dfe0a3d5eee812876ffc065737852a5bb

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 25f2c2f23709f0165c0b21ef31b4f9dca3ba2e349a18743f625f08a73b6f7239
MD5 ff505cefb085ee3b801dbcba8a19fd90
BLAKE2b-256 081ec9ce0b4e72368eb62dd3a5e4969a09b55c09ad33024f2833e7e56f4334f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04dc5530b960e833c56617662d853145f1da451c53a4b8296dbc40985174bff1
MD5 1697c7f37b7ed284b7c53cfdfa09d997
BLAKE2b-256 92afef82917feec260aca8e2a3e5394c3738b12211f3340358eb8ea0f2e5dff6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5ee2025bb7221ea0562c1602a4f9942c0a249ff12f6ba167cddad2f522d361b3
MD5 c6aeb0c8e22e5e60893fbb3d765c8fe9
BLAKE2b-256 6d779e3617d1ba69ea0ae48298cd687a0166d5e5f5e6155fbc591fa729e28857

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cccb1ce0e7ce6f693449dbbd41eb809d6f402c66d8b14768dd5ed0fe82bfe973
MD5 3f8334411ffd1e185c433f979f643777
BLAKE2b-256 a67e2df188d84393bccd52ccba28a9a1c228e34096d8e559caa207ed26d4f944

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 652a56d64d39b2df40df86cfce8e02e215a2c04c4526f654e076cf107c3d806c
MD5 afda2d0ab6c4da7767da1992ce4ff882
BLAKE2b-256 4aa58097de568c7870c0bf6e5fb7c638218a87f6f4dd0b64ad2889791da9a6f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa60133c37bb7e49fa7bde518bd44678958d2d2d1bed17bc3c7649d1665058e8
MD5 e97e69d0ecfa800b059be973c631775c
BLAKE2b-256 85b76116c8627f7e30db84f22cbee16827cea322bbeb2092b7701fc018e9a422

See more details on using hashes here.

File details

Details for the file flitter_lang-1.0.0b8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f2068581a2c20539955e25bcce9fc94d3164ad56b12d4d9e167fb72f26114509
MD5 fc05f52e3eee549a67200f50755beb5e
BLAKE2b-256 ab7bf72374cdd6ae176dc3d113de6e89ec6d07d026a33eec0bd86c108e255ffc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e810c11b2ffe498b6a8f70aeaef3b9fb1669538daae955745fa9fe50c9e8c05e
MD5 32195521a247264cd35337e583c85340
BLAKE2b-256 4bb4922356bcfd480ec1a8f505c09edcf529c4f4d2776372fffb374695caccf0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flitter_lang-1.0.0b8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 98a91a130073150a047cbe65cb07087437bb3b5b391365ebe6a8c0af4296b8a3
MD5 601fefa8642de0e65c3a34fbf540d921
BLAKE2b-256 c009e52e91d2dec0838572bd5c37079d8a2780f019e6435145474a556c7a2be6

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