• Stars
    star
    1,116
  • Rank 41,621 (Top 0.9 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 4 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Glisp is a Lisp-based design tool that combines generative approaches with traditional design methods, empowering artists to discover new forms of expression.

Glisp

A Lisp-based Design Tool Bridging Graphic Design and Computational Arts

Glisp, an acronym for Graphical LISP, is the prototyping project to experiment what if a design tool meets a way of creative coding, and obtain the self-bootstrapping power of LISP. This tool looks like the integration of Illustrator and Processing IDE at a glance. And in fact, it adopts both benefits of intuitiveness of direct manipulation on GUI and abstractness of programming language.

Glisp literally uses a customized dialect of Lisp as a project file. As the Code as Data concept of Lisp, the project file itself is the program to generate an output at the same time as a tree structure representing SVG-like list of shapes. And even the large part of the app's built-in features are implemented by the identical syntax to project files. By this nature so-called homoiconicity, artists can dramatically hack the app and transform it into any tool which can be specialized in various realms of graphics -- daily graphic design, illustration, generative art, drawing flow-chart, or whatever they want. I call such a design concept "purpose-agnostic". Compared to the most of existing design tools that are strictly optimized for a concrete genre of graphics such as printing or UI of smartphone apps, I believe the attitude that developers intentionally keep being agnostic on how a tool should be used by designers makes it further powerful.

Developed by Baku Hashimoto

Features list I've been fantasizing

✨: High priority
🍑: Personally think it'd be cool
🌢️: Important but I have no clue how to do

  • UI enhancements
    • ✨Selects path/group by clicking viewport
    • ✨Transplants Programmable Pen Tool
    • Touch-screen support
    • Much more intuitive interface for designers I prototyped here
  • Improve the GUI to allow non-programmers edit the project without seeing any Lisp code
    • ✨Layer list view
  • Lisp interpreter optimization/enhancement
    • 🌢️ Incremental evaluation system to avoid the overhead by re-calculating entire project for each tweak
    • Incremental Lisp parser
    • 🌢️ Enables to refer other node's value by relative path without explicitly defining a symbol, like Houdini's ch("../transform/tx") expression
    • Headless REPL environment to render images by command (partially supported)
    • Standalone JS library to dynamically render the sketch embedded in a web page
  • Timeline features
  • Raster image manipulation
    • Writes custom filters in GLSL (Interactive Shader Format might be useful)
    • 🍑 Captures still image from video input (e.g. webcam) to make a stop-motion
  • Abstraction of user inputs
    • Not only mice and keyboards, add support to bind commands with any controller's inputs via OSC/MIDI on the fly while you design. The notion "remembering hotkeys" will be vanished.
    • 🍑 Wouldn't it be cool if we can even use Leap Motion to record an animation...?
    • Input hooks. Quantizing, copying, flipping, and smoothing the mouse coordinate for instances.

Helpful Repositories

  • The implementation of Lisp interpreter is the modified version of Make a Lisp project.
  • Boolean Operator and some bezier manipulations by Paper.js.
  • Bezier curve analyzation by Bezier.js

Similar and Inspirational Projects

Below are all cool projects I've deeply inspired by.

Information by Tomoya Matsuura and Yasuhiro Tsuchiya

Supporters

This projects are supported by these kindful people. I'd be appreciated if you would support me to cups of coffee:)

Sponsor @baku89 on GitHub Sponsors

And I especially appreciate Naoto HIEDA for his contribution to examples, suggestions, and English translation.

Development

The project adopts Vue-CLI.

  • Setup: yarn install
  • Launch server for development: yarn serve
  • Build: yarn build
  • Lint: yarn lint
  • Preview the documentaiton: yarn doc:serve
  • Launch the electron app for development: yarn electron:serve
  • Build the Electron app: yarn electron:build

LICENSE

This repository is published under an MIT License. See the included LICENSE file.

More Repositories

1

pentool

Vector graphics editor with programmable pen tools
JavaScript
314
star
2

ThePerfectInsiderED

tools for "Subete ga F ni naru" Ending
Processing
259
star
3

ISF4AE

After Effects Plug-in enabling to use GLSL written in ISF as an effect
C++
233
star
4

VirtualMapper

A realtime preview tool for projection mapping
C++
228
star
5

ui-study

Parameters UI Study
JavaScript
220
star
6

tethr

JavaScript/TypeScript library built on top of WebUSB for controlling digital cameras from browsers.
TypeScript
106
star
7

nops

Digital Assets to supplement non-procedural features of Houdini
Python
89
star
8

pave

A environment-agnostic toolkit for manipulating SVG/Path2D curves
TypeScript
63
star
9

group_inou-EYE

tool for making group_inou "EYE"
JavaScript
57
star
10

kindolphin

JavaScript
56
star
11

bndr-js

A monadic library for composing and filtering various types of user inputs to generate event handling
TypeScript
47
star
12

GLSLRenderer

GLSL renderer for video production
C++
41
star
13

4DVJ

JavaScript
38
star
14

koma

Vue
36
star
15

imai-fly

Tools for the video "imai - Fly feat. 79, Kaho Nakamura"
C++
21
star
16

feedback-displacement

Making mind-bending images using feedback pixel displacement
JavaScript
19
star
17

FeedbackDisplacement

JavaScript
17
star
18

glisp-lang

TypeScript
15
star
19

BKFX

C++
13
star
20

houdini-viewport-projection-shader

A custom viewport shader supporting various types of texture projections
GLSL
12
star
21

BKISF

GLSL
11
star
22

linearly

A collection of utility functions that relates to linear algebra and graphics programming.
TypeScript
11
star
23

ofxAEKeyframe

An addon encodes oF animations into After Effects's keyframe data.
C++
10
star
24

ATA

Tools for "Olga Bell - ATA"
GLSL
8
star
25

bk_AEScripts

My ExtendScript for After Effects
JavaScript
8
star
26

jssst40-tuts

JavaScript
8
star
27

depthcope-tools

Shooting system for 'depthcope'
C++
8
star
28

houdini-scripts

Miscellaneous scripts for Houdini
Python
8
star
29

dragonframe-osc

An integration of Dragonframe and OSC
JavaScript
7
star
30

ae-keyframes

TypeScript
7
star
31

tweeq

Vue
4
star
32

wordle-solver

TypeScript
4
star
33

GrayScottGenerator

generates a turing pattern with gray-scott model and export an image sequence
C++
4
star
34

unim

TypeScript
3
star
35

p5-study

p5 sketches written at interactive coding workshop
Processing
3
star
36

inertial-easing

JavaScript
2
star
37

philadelphia

C
2
star
38

monkey-ts

TypeScript implementation of Monkey to study programming language design, which I thought might be helpful for my Glisp project.
TypeScript
2
star
39

PXCA

WebGL cellular automaton demo
JavaScript
2
star
40

miniml-ts

TypeScript implementation of MiniML to study programming language design, which I thought might be helpful for my Glisp project.
TypeScript
2
star
41

Fuse

JavaScript
1
star
42

computational-diary

JavaScript
1
star
43

KF

JavaScript
1
star
44

urigagarn-for

All source codes of http://urigagarn.jp/for
HTML
1
star
45

BLNK_OFFICE

JavaScript
1
star
46

recursive-christmas-tree

For Christmas XP 2016
JavaScript
1
star