Skip to main content Skip to navigation

Demos of Technical Features of JS-EDEN

This page provides links to a collection of small construals that attempt to construe the environment itself by providing illustrations of the various built-in functions, system-defined observables, etc. that are available to assist the maker in making their construals. Click on any title displayed in bold type to see its associated construal.


Shows how to embellish a Line, LineSequence, Arc or Curve with an arrowhead (or two). This approach assumes that arrows are a built-in drawing primitive. For an alternative approach where the individual pieces of the arrow are modelled in JS-EDEN itself see Scoping as a Method for Adapting Prototype Objects.

Flow Layout

Usually items on the canvas are positioned using x and y coordinates. Flow layout allows you to let JS-EDEN automatically determine the positions of items in a sensible way, for those occasions when you're not bothered about the exact coordinates just so long as items don't overlap! Flow layout works in a similar way to how a wordprocessor automatically places the words that you type one after another, left to right, and automatically wraps onto a new line when needed.


Demonstrates the concepts that lie behind the RotateAboutPoint, RotateAboutCentre and CombinedRotation functions and the meanings of their associated parameters. These functions take a picture list for one of their parameters and then treat the mini-picture list as an indivisble object that can be rotated and moved around the canvas as a single item.

Scoping as a Method for Adapting Prototype Objects

Uses an arrow as an example of how the with construct can be used to take a piece of construal (in this case a construal of how one draws an arrow) and take it as an ostensive definition (definition by example) of a class of things (in this case all possible arrows of different lengths, colours, positions, etc.) from which specific members of the class can be derived by giving values for the observables where the required arrow differs from the original example. Using with is a generic technique that you can use to develop many similar things from a single prototype in your own construals. Contrast this with how, in this specific example, you can also construct arrows using pre-defined functions that are built into the environment, as an alternative described under Arrows. The functional approach has been designed to handle more sophisticated cases (e.g. curved arrows) but the resulting arrows cannot be deconstructed into constituent parts, unlike when building from scratch using with. This is a simple example using with that could in principle be developed further. Note that the word "class" refers to the philosophical term by that name and not to the specific semantics of object-oriented programming languages.

Sound: Musical Notes as Observables (MIDI)

There are two ways of making sound using a computer: playback of a recording vs. synthesis of individual notes. Music synthesis further subdivides into having a live player agent (often a human player) versus computer-timed playback of a composition that has been transcribed in advance. This tutorial shows how to configure relevant observables for describing the live player situation, construction of a simple user interface for a human musician to interact with, and how to link the two together into a functioning musical instrument. JS-EDEN supports both ordinary computer loundspeakers and specialized MIDI output hardware.


Demonstrates the available ways of adding text to a canvas and applying different kinds of formatting to it.