OpenLightingProject / OpenLightingProject/open-fixture-library

Allow nested switching channels

Open
#226 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component-schema difficulty-hard
Dominant language
JSON
Stars
258
Forks
100
Avg merge
11h 52m
Merged PRs (30d)
53

Description

This makes things complicated...

See fixture martin/mac-aura in #225. It has two independent FX select channels with respective FX adjust channels, whose functionalities depend on the value of their FX select channel.

Additionally, an FX Sync channel can switch if FX1 adjust is used only for FX1 or also for FX2.

This could be realized with switched switching channels:

    "FX1 select": {
      "type": "Effect",
      "defaultValue": 0,
      "capabilities": [
        {
          "range": [0, 9],
          "name": "Idle",
          "switchChannels": {
            "FX1 adjust": "FX1 adjust n/a"
          }
        },
        // ...
        {
          "range": [40, 42],
          "name": "Aura strobe delay",
          "switchChannels": {
            "FX1 adjust": "FX1 adjust Trigger Delay"
          }
        },
        {
          "range": [43, 45],
          "name": "Strobe alternate single",
          "switchChannels": {
            "FX1 adjust": "FX1 adjust Speed"
          }
        }
        // ...
      ]
    },
    // ...
    "FX2 select": {
      "type": "Effect",
      "defaultValue": 0,
      "capabilities": [
        {
          "range": [0, 9],
          "name": "Idle",
          "switchChannels": {
            "FX2 adjust": "FX2 adjust n/a"
          }
        },
        // ...
        {
          "range": [40, 42],
          "name": "Aura strobe delay",
          "switchChannels": {
            "FX2 adjust": "FX2 adjust Trigger Delay"
          }
        },
        {
          "range": [43, 45],
          "name": "Strobe alternate single",
          "switchChannels": {
            "FX2 adjust": "FX2 adjust Speed"
          }
        }
        // ...
      ]
    }
    // ...
    "FX sync": {
      "type": "Effect",
      "defaultValue": 0,
      "capabilities": [
        {
          "range": [0, 49],
          "name": "no sync",
          "switchChannels": {
            "FX1 adjust / FX1+2 adjust": "FX1 adjust",
            "FX2 adjust / Nothing": "FX2 adjust"
          }
        },
        {
          "range": [50, 50],
          "name": "sync",
          "switchChannels": {
            "FX1 adjust / FX1+2 adjust": "FX1+2 adjust",
            "FX2 adjust / Nothing": "Unused"
          }
        },
        // ...
      ]
    }

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the martin/mac-aura fixture referenced in #225 and the existing handling of switchChannels on channel capabilities. Trace how a switched channel currently resolves its target, then determine how a target that is itself switched should be represented. Done means the fixture can express the FX1, FX2, and FX sync combinations without ambiguous channel behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
json
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.