Terms and concepts used in the Smart Grid One project. Updated as we document the architecture.
Theory of Time — The global clock maps absolute real-valued phase into six hierarchical loops. TheoryOfTimeBase.hpp owns sampled coordinates and topology; TheoryOfTime.hpp advances the clock and its modulation. See Theory of Time.
time loop — One of six divisions of the global loop, with a parent index, positive parent multiplier, derived cycle ratio, lattice period in ticks, and gate. Phase is global phase multiplied by the cycle ratio.
master loop — Legacy name for the global loop, index 5 (x_globalLoop). Its cycle ratio is one.
phasor — A phase coordinate. In Theory of Time it is an absolute double in cycles; periodic outputs apply phase - floor(phase). Unmodulated phase comes from the clock; modulated phase adds its phase offset.
phase-modulation LFO — LFO that modulates the main clock phase. It is phase-driven: driven by the six time loops’ unmodulated phases, so it stays synchronized with the Theory of Time. Implemented with PolyXFader.
PolyXFader — Internal LFO/phasor shaper used for the Theory of Time’s phase-modulation LFO. Takes phase inputs from the six time loops and produces a single modulation value. (private/src/PolyXFader.hpp)
loop-cycle position — Signed 64-bit whole-cycle coordinate returned by GetLoopCyclePosition: floor-divide the absolute modulated global tick position by the clock loop period. A reset whose period is divisible by the clock period is an inferred ancestor, even on another parent path, and reduces the position modulo that number of clock cycles. Self and equal-period resets return zero. No reset or a non-divisible reset leaves the absolute position. Earlier documentation called this the gate-step index or monodromy.
tick — A loop’s modulated cycle-crossing event. AnyTick reports whether one occurred in a microblock, even when the loop gate stays at the same value or reset leaves the index unchanged.
loop rhythm — Per-loop gate pattern evaluated at each tick and held between ticks. The default [true, false] spans two full cycles. The engine supports 16 slots; the current grid and StateSaver expose eight. It is separate from the per-voice index-arp rhythm.
LameJuis — Esoteric layered sequencer: maps the six Theory of Time gate bits to pitch via a lens (read/co-mute), a sheaf F^M_x(U), and an index arp. Each of 3 trios has one LameJuis lane; the performer assigns a lens and selects a strategy (e.g. Percentile or ClosestModOne) to pick a note from the sheaf using the arp. See LameJuis.
| lens — A 6-bit mask: bit 1 = “read” (must agree for equivalence), bit 0 = “co-mute” (ignore). Defines equivalence x ~_U y and the sheaf F^M_x(U) = { M(y) | y ~_U x }. Set per lane via “co-mutes” in the UI (!m_coMutes[i] = read dimension i). |
index arp — Arpeggiator that turns the signed loop-cycle position of a chosen clock loop into a choice value. Uses a rhythm pattern (m_rhythm, length 8) to gate steps; m_noteIndex is the bounded ordinal among enabled steps and m_motivePosition is the signed rhythm-page coordinate. Their mapped value is scaled to [m_min, m_max] and passed as m_choiceValue to the chosen section choice strategy (e.g. Percentile or ClosestModOne). (IndexArp, NonagonIndexArp in private/src/IndexArp.hpp)
LogicOperation — One of 6 “simple functions” I⁶ → {0,1} that build M. For each of the 6 bits: Muted (ignore), Normal (use), Inverted (use inverted). The output is determined by a lookup table m_rhs[countHigh]: for each count of high (active, possibly inverted) bits, the performer chooses whether the operation outputs true or false. Default is m_rhs[j] = (j % 2 == 1) (“odds pass,” equivalent to parity/Xor — a Walsh function). A row with no accepted non-muted inputs is false and contributes to no accumulator; otherwise its output goes to one of 3 accumulators. Its m_countTotal counts active input bits, not rows. The RHS grid lights column k from the active trio’s lens: k is reachable if some assignment of the trio’s co-muted bits yields that countHigh.
accumulator — One of 3 targets for the logic operations. Has an interval (octave, fifth, major third, etc.) in volt-per-octave. The pitch M(x) is the sum over accumulators of (interval × number of high operations targeting that accumulator). Each section records m_total (active rows targeting the accumulator) and m_high (those evaluating true); both counts participate in section equality. So M(x) is a just-intonation ratio as a product of simple intervals raised to small integer exponents.
| sheaf — F^M_x(U) = { M(y) | y ~_U x }; the set of pitches available at time x for lens U. A section choice strategy (e.g. Percentile or ClosestModOne) selects the final note using the index-arp output as m_choiceValue. |
Multi-Phasor Gate — Per-voice gate and trigger logic driven by the global phase. Decides when to emit a trigger (start a note) and when to turn the gate off after half a voice period. Uses NonagonTrigLogic to build m_trigs and m_newTrigCanStart from LameJuis and the index arp; then combines those with phasor-based timing and mute to set m_ahdControl[i].m_trig and m_gate[i]. m_gate is not used for envelopes (those use AHDControl); it is used for note-off (clear output gate, record note end) and UI display. (MultiPhasorGateInternal in private/src/MultiPhasorGate.hpp)
NonagonTrigLogic — Builds the Multi-Phasor Gate input for the 9 voices: m_trigs[i] (trigger on pitch-changed and/or sub-trigger, per trio), m_newTrigCanStart[i] (running and not early-muted), m_mute[i], and interrupt (lower-index voice can cancel a trigger). Uses m_trigOnPitchChanged, m_trigOnSubTrigger, m_interrupt, m_unisonMaster. See Multi-Phasor Gate.
AHD — Attack–Hold–Decay envelope. AHDControl carries trigger, release, source/global phase ratio, and envelope period. On trigger AHD captures the latter two and a global phase origin, then follows only global phase. See AHD envelopes.
PhasorBounds — Captures a gate start in absolute modulated global phase, its voice cycle ratio, and global period. Absolute distance from that origin, multiplied by the captured ratio, closes the gate at half a voice period.
DualWaveShapingVCO.hpp.CombFilterWithOnePole. Implemented in PhysicalModelingSource.hpp.AudioBufferBank, scans or blends across the WAV files in that directory with SampleBankPosition, and grain-resynthesizes playback from a Theory of Time-driven PhasorPlayHead. Implemented by SampleSource in DualSampleSource.hpp.private/src/PhasorPlayHead.hpp)m_morphHarmonics) of the randomly generated additive wavetables.samples/ root. UI navigation is sent as DirectoryExplorer::MessageType commands through IoTaskThread.m_panPhase) and per-voice offsets, driven by a Lissajous LFO.m_writeHeadInverse) to implement D(F⁻¹(t + d)) = X(F⁻¹(t)). Preserves pitch while stretching/compressing time.Resynthesizer) that uses phase-delta tracking between analysis frames to preserve pitch during variable-rate playback.Resynthesizer::PVDR) that assigns leader/follower bin relationships and phase deltas so shifted/unison synthesis stays coherent.SpectralModelGeneric, and resynthesizes them into a quad field with frequency-dependent reduction, panning, unison, and pitch controls. See Partial Machine.GangedRandomLFO processors that generate correlated wait-and-move contours for effects sends and parameters. Their predictive visualizers show solid elapsed motion and dashed future motion. They are not phase-synced to the Theory of Time.ProcessAndSaturate) to each band independently to prevent intermodulation distortion, and sums them back together.m_gestureWeights).m_scene1, m_scene2) and global scene blend (m_blendFactor), and emits change flags used to update scene-dependent processing. See Scene Manager.State handles, provides setup-time name lookup, and serializes/restores their global or scene-specific values. See State and State Saver.m_colorBus, then MIDI writers emit device-specific LED updates.TheNonagonSquiggleBoyQuadLaunchpadTwister) with separate top-left/top-right/bottom-left/bottom-right routes plus encoder route.WrldBuildrComponent holder classes.BasicMidi to MessageIn and dispatches visible messages to integration Apply(...) handlers.SmartBusColor and push pad press/release events into MessageInBus.More entries will be added as we document the parameter system, LED subsystem, UI, and configuration.