aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/midi-control/faders.scm
AgeCommit message (Collapse)Author
2023-06-15Get rid of old MIDI control stuffThomas White
2023-04-01Separate 'engine' and 'scanout'Thomas White
The new module "engine" contains everything to do with working out the final attribute values. This module should be referenced for anything that needs to register states, get values etc. Now, "scanout" is only about converting attribute values to DMX values and sending them to OLA. This module only needs to be referenced by fixture definitions, and once by the top level program.
2022-11-12Introduce new type for attribute namesThomas White
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).
2022-07-17Improve the syntax of "set-midi-control-map!"Thomas White
This replaces the mess of "list" forms: (set-midi-control-map! controller (list (list 'intensity 'fader 16 '(108 72)) ...)) With something a bit clearer: (set-midi-control-map! controller (fader 16 'intensity #:congruent 108 #:incongruent 72) ...) There's a corresponding improvement in the internal code.
2022-07-10Don't send fix/attr/val to state update hookThomas White
It's not used anywhere, and it doesn't work - there are many other kinds of update apart from setting an individual value.
2022-06-11MIDI control: pull entire colour into programmer stateThomas White
This prevents the other colour channels from getting messed up, when an individual channel is changed via the controller.
2021-10-23Handle controller=#f in 'set-midi-control-map!'Thomas White
2021-10-19Replace partial application functions with SRFI-26 "cut"Thomas White
2021-09-12Variable sensitivity for jogwheelsThomas White
Use make-sensitivity-knob
2021-09-11Re-assert MIDI control map on parameter changeThomas White
This makes the MIDI controller stay in sync with the programmer state values. It's kind of a coarse solution, though. It would be better to: 1. Only re-assert the map if the changed parameter currently appears on the MIDI control surface 2. Only re-assert the part of the map related to the parameter Almost as a side-effect, this enables switching between multiple control maps. Just call 'set-midi-control-map!' on the controller with the new map.
2021-08-08Add hook for state updatesThomas White
This includes a "source", intended to be used for avoiding hook users from responding to their own changes.
2021-08-08Make each MIDI controller into its own objectThomas White
2021-06-26Remove tnow parameter from current-valueThomas White
2021-05-16Get rid of time parameter and use clock objects for cross-fadesThomas White
Because we can stop a clock object, but not "gettimeofday".
2021-05-12Trigger apply-fader when fader crosses its original valueThomas White
This fixes a problem whereby lights couldn't be turned off via the fader
2021-05-10Split 'base' module up into 'fixture', 'state' and 'scanout'Thomas White
2021-05-06Add GPL boilerplate everywhereThomas White
2021-04-18Update MIDI buttonsThomas White
2021-04-18Use individual CMY channels in MIDI control mapThomas White
2021-04-18Special case colour components for MIDI fadersThomas White
2021-04-05When using jogwheel control, clamp values to end of rangeThomas White
2021-04-04Add the ability to make certain states uniqueThomas White
This allows easy re-assignment of faders with state-on-fader
2021-04-04New state-on-faderThomas White
2021-04-03New state-on-faderThomas White
2021-04-03Fix sel/at (again)Thomas White
2021-04-02Replace merging of states with search through list of statesThomas White
This is LOADS faster.
2021-03-08Remove home state and abolish fixture-attribute use in statesThomas White
The "home state" has no reason to exist. The home values are already stored perfectly well in the attribute lists of the fixtures. Any time we need to look up a home value, we already have the fixture itself available. This also gets rid of any use of <fixture-attribute> in states. This was confusing me. Better to just pass symbols around and only get the real attribute objects when needed (which isn't very often).
2021-01-30Move useful stuff to utilsThomas White
2021-01-26Move "sel" to base, and add a callbackThomas White
2021-01-26New, scaled approach to MIDI fadersThomas White
2021-01-25FormattingThomas White
2021-01-19Rename "on-fader" to "state-on-fader"Thomas White
More specific name.
2021-01-19on-fader: Soft pickupThomas White
This is a bit nasty, because we might not know what value the fader was at before it was moved.
2021-01-19sel: Handle listsThomas White
2021-01-19Implement selection of multiple fixtures at onceThomas White
2021-01-15Remove selection-stateThomas White
There's no reason for this to exist. Just change things directly in programmer-state.
2021-01-03Start MIDI control only for attributes in the fixtureThomas White
2021-01-02Implement at-midi-faderThomas White
get-cc-value now returns #f if the position of the fader is unknown. Some other changes were needed to accommodate that.
2020-12-31Manage LEDs for parameter adjustmentThomas White
2020-12-31Reduce scope of merge-rule-replaceThomas White
2020-12-31Select fixture and change parameters via MIDIThomas White
2020-12-29Simplify MIDI control interfaceThomas White
This removes the midi-led and midi-control classes, which only seemed to be making things more complicated.
2020-12-27Add fader controlThomas White