aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2022-11-12 11:13:53 +0100
committerThomas White <taw@physics.org>2022-11-12 11:37:03 +0100
commit5a02170f9e1952cd335b6b097e8ce33de7bb35b1 (patch)
treeca21feda4181e444e10e11ce863cc017c69461e7 /docs
parentf99311300912814ccaf4fdd6b3c753d1206e024c (diff)
Introduce new type for attribute names
There's a serious problem with the design so far, where symbols are used for attribute names (intensity, strobe, colour etc), and also for attribute values (on, off, random etc). There's no way for 'at' to tell the difference between the two. For example, this form is ambiguous: (at myfixture 'strobe 'on) This commit introduces a new class, <starlet-attribute>, to replace the use of symbols here. The attributes are enumerated in (starlet attributes), and new ones can be added later. The attribute objects remember their 'canonical' names, to allow states to be printed. Apart from solving the ambiguity problem, this has two further advantages. First, attribute names no longer need to be quoted everywhere. Second, multiple names can be used to refer to the same attribute. For example: (define color colour).
Diffstat (limited to 'docs')
-rw-r--r--docs/basic-control.rst27
-rw-r--r--docs/cue-list.rst8
-rw-r--r--docs/new-fixture.rst30
-rw-r--r--docs/physical-control.rst14
4 files changed, 32 insertions, 47 deletions
diff --git a/docs/basic-control.rst b/docs/basic-control.rst
index f326a5d..dea5ece 100644
--- a/docs/basic-control.rst
+++ b/docs/basic-control.rst
@@ -5,26 +5,25 @@ Basic attribute control and building states
Once your fixtures are patched (see `<patching.rst>`_), you can set attributes
sing ``at``. For example, to set the intensity of ``my-dimmer`` to 100%::
- (at my-dimmer 'intensity 100)
+ (at my-dimmer intensity 100)
If you leave out the attribute name, then ``intensity`` will be assumed::
(at my-dimmer 100)
The available parameters are determined by the fixture definition (see
-`<new-fixture.rst>`_), and are referred to by their symbolic name (i.e. quote
-them with ``'``). For example::
+`<new-fixture.rst>`_). For example::
- (at my-moving-light 'pan 32)
- (at my-moving-light 'tilt 70)
- (at my-moving-light 'zoom 60)
+ (at my-moving-light pan 32)
+ (at my-moving-light tilt 70)
+ (at my-moving-light zoom 60)
-Not all fixtures accept a single number. For example, ``'colour`` (note: UK
-spelling) takes a colour object, which can be constructed using ``rgb`` or
-``cmy``. Starlet (or rather, the fixture definition code) is responsible for
-converting the colour to the native representation used by the fixture::
+Not all fixtures accept a single number. For example, ``'colour`` takes a
+colour object, which can be constructed using ``rgb`` or ``cmy``. Starlet (or
+rather, the fixture definition code) is responsible for converting the colour
+to the native representation used by the fixture::
- (at my-moving-light 'colour (rgb 80 23 25))
+ (at my-moving-light colour (rgb 80 23 25))
You can set attributes for multiple fixtures at once::
@@ -55,9 +54,9 @@ call ``(sel #f)`` or simply ``(sel)``::
(sel my-moving-light)
(at 100)
- (at 'colour (rgb 80 23 25))
- (at 'tilt 70)
- (at 'pan 32)
+ (at colour (rgb 80 23 25))
+ (at tilt 70)
+ (at pan 32)
(sel #f)
The fixture display window (see `<fixture-display.rst>`_) will highlight the
diff --git a/docs/cue-list.rst b/docs/cue-list.rst
index d17eeee..6f7590b 100644
--- a/docs/cue-list.rst
+++ b/docs/cue-list.rst
@@ -86,9 +86,9 @@ To achieve this, use a multi-part cue. Here's an example::
(cue-part
(lighting-state
- (at highsideL 'intensity 100.0)
- (at highsideR 'intensity 100.0)
- (at front-leds 'colour (cmy 0 93 80))
+ (at highsideL intensity 100.0)
+ (at highsideR intensity 100.0)
+ (at front-leds colour (cmy 0 93 80))
(at splitL splitR 70)
(at washL washR 100)
(at washM 50))
@@ -153,7 +153,7 @@ A cue list is simply a list of cues. For example::
;; Act 1, Scene 1
(lighting-state
(at front-wash 80)
- (at moverL 'colour (cmy 21 0 0)))
+ (at moverL colour (cmy 21 0 0)))
(at moverL 25)
(crossfade 3))
diff --git a/docs/new-fixture.rst b/docs/new-fixture.rst
index 408f2ab..7a5b999 100644
--- a/docs/new-fixture.rst
+++ b/docs/new-fixture.rst
@@ -16,14 +16,14 @@ for example ``<robe-dl7s-mode3>`` for a Robe DL7S profile in mode 3.
Each attribute follows one of the following forms::
- (attr-continuous 'intensity '(0 100) 0)
- (attr-colour 'colour white)
- (attr-list 'prism '(#f 3 5) #f)
+ (attr-continuous intensity '(0 100) 0)
+ (attr-colour colour white)
+ (attr-list prism '(#f 3 5) #f)
-In all cases, you need to provide a symbol for the name of the attribute.
-Using the standard names (below) where possible will make things work more
-smoothly. The last argument in each ``attr-`` form is always the default
-value for the attribute.
+In all cases, you need to provide the name of the attribute. The available
+attribute names are enumerated in module (starlet attributes) - please add new
+names if you need, but use the available names if possible. The last argument
+in each ``attr-`` form is always the default value for the attribute.
For ``attr-continuous``, you need to give the range of possible values. For
``attr-list``, you need to give a list of the possible discrete values. For
@@ -32,7 +32,7 @@ For ``attr-continuous``, you need to give the range of possible values. For
The list of attributes is followed by the `scanout code`. This code will be
called to convert the attribute values into DMX values.
-Retrieve the current values with calls of the form ``(get-attr 'intensity)``,
+Retrieve the current values with calls of the form ``(get-attr intensity)``,
and set DMX values using ``(set-chan8 nn val)``, where ``val`` is the DMX value
(0 to 255) and ``nn`` is the channel number. The channel numbers are indexed
from 1, i.e. ``(set-chan8 1 255)`` will set the fixture's base DMX address to
@@ -81,20 +81,6 @@ as a 1:1 translation from the attributes to DMX channels. Even the cheap
5-channel LED cold/warm fixture in the example below includes some maths.
-Standard attribute names
-========================
-
-* ``intensity`` The overall light intensity, in percent of the maximum value.
-* ``pan`` in degrees, zero being straight forwards.
-* ``tilt`` in degrees, zero being straight downwards.
-* ``colour`` (note UK spelling). The colour of the light.
-* ``prism``
-* ``gobo``
-* ``strobe`` boolean for strobe on/off.
-* ``strobe-frequency`` in Hz
-* ``colour-temperature`` (note UK spelling)
-
-
Worked example
==============
diff --git a/docs/physical-control.rst b/docs/physical-control.rst
index 9f5b162..43eb510 100644
--- a/docs/physical-control.rst
+++ b/docs/physical-control.rst
@@ -90,13 +90,13 @@ programmer state. Here's an example::
(set-midi-control-map!
controller
- (fader 16 'intensity #:congruent 108 #:incongruent 72)
- (jogwheel 0 'pan #:active 124)
- (jogwheel 1 'tilt #:active 125)
- (fader 4 (colour-component-id 'cyan) #:congruent 120 #:incongruent 84)
- (fader 5 (colour-component-id 'magenta) #:congruent 121 #:incongruent 85)
- (fader 6 (colour-component-id 'yellow) #:congruent 122 #:incongruent 86)
- (fader 7 'colour-temperature #:congruent 123 #:incongruent 87))
+ (fader 16 intensity #:congruent 108 #:incongruent 72)
+ (jogwheel 0 pan #:active 124)
+ (jogwheel 1 tilt #:active 125)
+ (fader 4 (colour-component-id 'cyan) #:congruent 120 #:incongruent 84)
+ (fader 5 (colour-component-id 'magenta) #:congruent 121 #:incongruent 85)
+ (fader 6 (colour-component-id 'yellow) #:congruent 122 #:incongruent 86)
+ (fader 7 colour-temperature #:congruent 123 #:incongruent 87))
Use ``fader`` for MIDI *continuous control* parameters (CCs), which might
physically correspond to faders or rotary potentiometers with a minimum and