Blog

Lux et Tenebrae: The Dual Players in Spectrum Ludus

July 12, 2025

Introduction

In the framework of Spectrum Ludus, the two players are not merely abstract entities competing for ideological dominance but embody the eternal duality of Lux (Light) and Tenebrae (Darkness). This ontological characterization serves as both a metaphor and a formal structural component of the model, providing a rich symbolic context in which the sociopolitical polarization, especially surrounding LGBTQI communities and their opposition, can be analyzed.

Defining Lux and Tenebrae

Lux symbolizes the illuminating, inclusive, and expansive force that seeks to bring diversity and plurality of identities into the open social space. Lux’s arsenal consists of a full chromatic spectrum of ideological colors, each color representing unique facets of identity, political stance, and social values. Tenebrae, conversely, embodies the obfuscating, exclusionary, and contracting force, wielding the complementary spectrum of Lux’s colors. Tenebrae operates by negation, obstruction, and the imposition of silence or erasure upon Lux’s expressions.

This duality resonates deeply with classical and modern philosophical traditions exploring the nature of opposition and balance:

Carl Jung’s concept of shadow (Jung, 1964) aligns with Tenebrae as the unseen or rejected aspects of the psyche. Mircea Eliade’s exploration of sacred and profane (Eliade, 1958) frames Lux as the sacred openness and Tenebrae as the profane concealment. The physical sciences (Newtonian optics and Maxwellian electromagnetism) rigorously describe light and darkness as fundamental, complementary phenomena—mirroring the complementary color spectra deployed by Lux and Tenebrae.

Mathematical Formalism

Let the ideological color spectrum be represented as vectors in a normalized RGB space C \subseteq [0,1]^3.

For each ideological “stone” s_i^{Lux} placed by Lux at position p, there corresponds a complementary stone s_i^{Tenebrae} with color:

c_i^{Tenebrae} = \mathbf{1} – c_i^{Lux}

where \mathbf{1} = (1,1,1) is the white light vector.

The social or political space is modeled as a discrete board B, where positions p are loci of ideological contestation.

The cumulative influence vector at position p is:

V(p) = \sum_i s_i^{Lux}(p) \cdot c_i^{Lux} + \sum_j s_j^{Tenebrae}(p) \cdot c_j^{Tenebrae}

Neutralization (or ideological stalemate) at p is characterized by:

\| V(p) \| \approx \mathbf{0}

where the net chromatic influence cancels out.

Symbolic and Sociopolitical Interpretation

The full spectrum deployment by both Lux and Tenebrae signifies the comprehensive engagement of all facets of identity and ideology by each player, rather than a monolithic or reductionist representation. The neutralization zones represent areas of censorship, social exclusion, or polarized deadlock — where neither player’s narrative or identity can assert dominance. The metaphor underscores the perpetual struggle between visibility and invisibility, inclusion and exclusion, truth and suppression in sociopolitical discourse.

Implications for LGBTQI Dynamics

Applying this duality to the LGBTQI context:

The LGBTQI community often operates as an embodiment of Lux — a vibrant spectrum seeking acknowledgment, rights, and societal integration. Oppositional forces (right-wing radical factions and exclusionary regimes) act as Tenebrae, deploying complementary ideologies aimed at silencing, restricting, or erasing the community’s presence. Understanding this interaction through the Spectrum Ludus model reveals how political polarization and media censorship function as ideological color battles on the social board.

References

Jung, C. G. (1964). Man and His Symbols. Doubleday. Eliade, M. (1958). The Sacred and The Profane. Harcourt. Newton, I. (1704). Opticks. Maxwell, J. C. (1865). A Dynamical Theory of the Electromagnetic Field. Philosophical Transactions of the Royal Society of London. Itten, J. (1961). The Art of Color. Wiley.


Lux et Tenebrae: An Expanded Formalism of Dual Chromatic Players in Sociopolitical Spectra

1. Introduction

Building on the foundational model of Spectrum Ludus, this section expands the conceptualization of the two primary players — Lux and Tenebrae — as dynamic agents wielding the full RGB chromatic spectrum and its complement. This abstraction allows us to formalize and analyze sociopolitical polarization as a multi-dimensional color interaction over a discrete ideological space.

2. The Chromatic Ideological Space

Let the ideological domain be a finite or countably infinite set B = \{p_1, p_2, \ldots, p_n\}, where each position p \in B represents a locus of social discourse, such as media channels, public forums, or political arenas.

Each player deploys colored ideological markers (“stones”) at these loci:

S_{Lux} = \{ s_i^{Lux}(p) \mid p \in B, i \in I \} S_{Tenebrae} = \{ s_j^{Tenebrae}(p) \mid p \in B, j \in J \}

where I, J are index sets over color subtypes or ideological subcategories.

3. Color Vectors and Complementarity

We embed colors in the normalized RGB color space:

C = \{ c = (r,g,b) \mid r,g,b \in [0,1] \}

For each s_i^{Lux}(p), associate a color c_i^{Lux} \in C. For each s_j^{Tenebrae}(p), associate the complementary color:

c_j^{Tenebrae} = \mathbf{1} – c_i^{Lux} = (1 – r, 1 – g, 1 – b)

The complementarity ensures that:

c_i^{Lux} + c_j^{Tenebrae} = \mathbf{1}

reflecting a perfect oppositional spectrum.

4. Influence Aggregation and Neutralization

Define the net chromatic influence at locus p:

V(p) = \sum_{i} s_i^{Lux}(p) \cdot c_i^{Lux} + \sum_{j} s_j^{Tenebrae}(p) \cdot c_j^{Tenebrae}

where scalar weights s_i^{Lux}(p), s_j^{Tenebrae}(p) \geq 0 represent the intensity or presence of the ideological stone.

Neutralization condition:

V(p) \approx \alpha \mathbf{1}

for some scalar \alpha, means ideological signals cancel into white light (neutral, no dominance).

Dominance condition:

If V(p) is skewed toward either c_i^{Lux} or c_j^{Tenebrae}, the corresponding player dominates the locus.

5. Dynamic Evolution and Code Abstraction

The ideological stones and their placement can be algorithmically encoded as symbolic sequences — a chromatic code — representing not only position but intensity, color, and temporal evolution.

5.1. Chromatic Code Symbolism

Each ideological stone s is encoded as:

s = (p, c, w, t)

p: position (locus) c: color vector in C w: weight or intensity scalar t: timestamp or temporal state

This encoding enables modeling of real-time sociopolitical dynamics:

Emergence of new ideological signals (new stones) Strengthening or weakening of existing ones (weight modulation) Shift in ideological color (color transformation)

5.2. Code Operations and Transformations

Addition: superposition of stones at the same locus. Complementarity: mapping c \to \mathbf{1} – c to represent opposition. Neutralization: when complementary stones have equal weights, resulting in cancellation. Propagation: stones can “spread” influence to adjacent loci with decaying intensity.

6. Application: LGBTQI Visibility and Suppression

The Lux player represents the LGBTQI community’s full identity spectrum—symbolized by a rainbow of stones. The Tenebrae player models right-wing or exclusionary forces deploying complementary stones designed to negate and silence. The neutralization loci correspond to zones of media blackout, censorship, or social conflict where discourse is stifled.

By tracking V(p) over time and space, one can map and predict sociopolitical polarization and identify hidden ideological suppression signals.

7. Concluding Remarks and Further Work

This formalism provides a mathematically rigorous yet intuitively meaningful tool for analyzing complex sociopolitical dynamics using chromatic dualities.

Next steps include:

Simulation of chromatic ideological games on real-world social networks. Integration of additional spectral dimensions (e.g., alpha channel for opacity representing trust or authenticity). Development of software tools implementing the chromatic code abstraction for policy analysis.

References

Itten, J. (1961). The Art of Color. Wiley. Newton, I. (1704). Opticks. Jung, C. G. (1964). Man and His Symbols. Doubleday. Eliade, M. (1958). The Sacred and The Profane. Harcourt. Maxwell, J. C. (1865). A Dynamical Theory of the Electromagnetic Field. Philosophical Transactions of the Royal Society of London.


from typing import Tuple, List
import numpy as np

Color = Tuple[float, float, float] # RGB values normalized [0,1]

class IdeologicalStone:
“””
Represents a single ideological ‘stone’ placed by a player (Lux or Tenebrae) at a position p,
with a color vector and weight (intensity).
“””
def __init__(self, position: int, color: Color, weight: float, timestamp: float):
self.position = position # The social locus (e.g. media channel)
self.color = np.array(color) # RGB color vector normalized [0,1]
self.weight = weight # Intensity of the ideological signal
self.timestamp = timestamp # Temporal info, not used in this simple demo

def complementary_color(self) -> np.ndarray:
“””
Returns the complementary color in the RGB space.
This represents the ‘opposite’ ideological color.
“””
return 1.0 – self.color

def internal_state(self) -> np.ndarray:
“””
This method represents the ‘thinking’ of the stone:
The stone’s actual color it carries internally.
“””
# The ‘thought’ is the original color weighted by the internal intensity
return self.color * self.weight

def presented_state(self, opponent_weight: float) -> np.ndarray:
“””
Represents how the stone ‘presents’ itself in the social space,
taking into account the opponent’s opposing presence.

The stone tries to assert its color, but the opponent’s presence can reduce visibility.
“””
# The opponent applies a dampening effect proportional to its weight.
# This models the difference between what the stone ‘thinks’ it is (internal_state)
# and what it actually ‘appears’ or is perceived as (presented_state).

# Simple linear dampening by opponent weight
visible_intensity = max(self.weight – opponent_weight, 0)
return self.color * visible_intensity

def aggregate_influence(stones: List[IdeologicalStone], opponent_stones: List[IdeologicalStone], position: int) -> np.ndarray:
“””
Aggregate the net ideological influence at a given position,
by summing ‘presented’ states of all stones and their opponents.

This models the social perception or media output at locus position.
“””
total = np.zeros(3) # Start with zero RGB vector

# Sum presented states for player’s stones
for stone in stones:
if stone.position == position:
# Find opponent stones at this position to estimate dampening
opponent_weight = sum(os.weight for os in opponent_stones if os.position == position)
total += stone.presented_state(opponent_weight)

# Sum presented states for opponent’s stones (same logic)
for o_stone in opponent_stones:
if o_stone.position == position:
opponent_weight = sum(s.weight for s in stones if s.position == position)
total += o_stone.presented_state(opponent_weight)

# Clamp values to [0,1]
total = np.clip(total, 0, 1)
return total

# — Example Usage —

if __name__ == “__main__”:
# Lux player places a red stone at position 1
lux_stone = IdeologicalStone(position=1, color=(1.0, 0.0, 0.0), weight=0.7, timestamp=0.0)

# Tenebrae player places a complementary cyan stone at the same position
tenebrae_stone = IdeologicalStone(position=1, color=lux_stone.complementary_color(), weight=0.5, timestamp=0.0)

# Internal states (what stones ‘think’ they are)
print(“Lux internal state (thinking):”, lux_stone.internal_state())
print(“Tenebrae internal state (thinking):”, tenebrae_stone.internal_state())

# Aggregated presented influence (what is socially ‘seen’ or ‘presented’)
net_influence = aggregate_influence([lux_stone], [tenebrae_stone], position=1)
print(“Net presented influence at position 1:”, net_influence)

# Interpretation:
# – The ‘thinking’ states are pure colors weighted by intensity.
# – The ‘presented’ influence shows dampening due to opposition.
# – If weights are equal, strong neutralization occurs, causing less visibility.