SVD Parameter Specification — Open Specification v1.0

Subjective Visual Disturbances (SVD) — Parameter Reference v1.0 · 2026

Parameter reference for the $V_{SVD}$ Vector Matrix — a structured, machine-readable encoding of subjective visual disturbance symptom states. Each parameter maps 1-to-1 to a field in the Visual Snow Simulator application's SymptomLog data class.

This is an open specification, not a formal ISO standard. It is structured to ISO/IEC drafting conventions so that it can serve as a credible input to a future standardization process if sufficient clinical adoption occurs. See the full specification for the standardization pathway discussion.

Code-leading policy: The Kotlin source is the ground truth. This page is derived from it. · JSON schema: svd-v1.json · Source: SymptomLog.kt, Configs.kt, Enums.kt, Models.kt

$V_{SVD}$ — Eleven Symptom Domains

$$V_{SVD} = [V_{ST},\ V_{CL},\ V_{FL},\ V_{BF},\ V_{LA},\ V_{GE},\ V_{DC},\ V_{DS},\ V_{TI},\ V_{CVD},\ V_{VF}]$$

Two identifiers per parameter: The Code column (e.g., ST-01) is a stable, language-neutral label for use in research papers and clinical communication — it never changes even if the app is refactored. The JSON field column (e.g., snowIntensity) is the actual field name used in JSON serialization and the app's database. When writing a paper, cite the code. When writing code or JSON, use the JSON field name.

Implementation Guidelines

Systems wishing to align with this specification should:

Partial implementation is supported: a system may implement a subset of the eleven domains, as long as it declares which domains are covered. This specification has no formal certification process — alignment is voluntary.

Data Storage & Privacy

The Visual Snow Simulator operates on a Zero-Knowledge Architecture.

$V_{ST}$ — Visual Static Domain

SymptomLog: snowIntensity, snowSpeed, snowAlpha, snowGrainSize, snowPattern, snowColorMode, snowColorArgb

Persistent visual noise across the entire visual field — the defining symptom of Visual Snow Syndrome (Schankin et al., 2014). Phenomenologically analogous to noise on an untuned analogue television.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
ST-01snowIntensityFloat320.5[0.0, 1.0]Primary severity proxy for baseline symptom burden.
ST-02snowAlphaFloat320.6[0.0, 1.0]Perceived intrusiveness independently of density.
ST-03snowGrainSizeFloat321.0[0.5, 30.0]Differentiates fine TV-like shimmer from coarser noise.
ST-04snowSpeedFloat321.0[0.1, 3.0]Temporal flicker dynamics independently of brightness.
ST-05snowPatternEnum"Random"Random, Circular, Brownian, LinearMotion model; supports phenotype matching across sessions.
ST-06snowColorModeEnum"White"White, Tinted, RainbowChromatic static phenotype encoding.
ST-07snowColorArgbARGB Long0xFFFFFFFFany ARGBActive when ST-06 = Tinted. Exact tint color of static grain.

$V_{CL}$ — Contrast Loss Domain

SymptomLog: contrastLossEnabled, contrastLossStrength

Perceived reduction of luminance dynamic range, reported as washed-out or low-contrast vision. Related to WHO ICF code b21022 (Contrast sensitivity).

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
CL-01contrastLossEnabledBooleanfalsefalse, trueExplicit domain flag; avoids confounding with static intensity.
CL-02contrastLossStrengthFloat320.5[0.0, 1.0]Quantifies functional contrast reduction; 1.0 = fully desaturated.

$V_{FL}$ — Floater Domain

SymptomLog: floatersCount, floaterMinSize, floaterMaxSize, floaterAlpha, floaterColorArgb, floaterShape, floaterBrownian, floaterGyroSensitivity, floaterDamping

Distinct opacities within the vitreous or perceptual field. In SVD context includes both true vitreous floaters and cortical/entoptic equivalents. Tracked separately from static because floater burden follows different trigger patterns.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
FL-01floatersCount > 0Booleanfalsefalse, trueDerived: active when count > 0. Explicit separation from static noise.
FL-02floatersCountInteger0[0, 50]Visual clutter load; supports comparison across trigger conditions.
FL-03floaterMinSizeFloat320.01[0.005, 0.1]Fine debris vs. large-spot distinction.
FL-04floaterMaxSizeFloat320.05[0.01, 0.2]Large opacities that disproportionately affect reading and focus.
FL-05floaterAlphaFloat320.25[0.0, 1.0]Opacity affects perceived disability independently of count.
FL-06floaterGyroSensitivityFloat320.002[0.0, 0.02]Motion-coupled drift; patients reporting stronger movement when turning.
FL-07floaterBrownianFloat320.0003[0.0, 0.002]Spontaneous micro-jitter for physiologic realism.
FL-08floaterDampingFloat320.95[0.5, 0.999]Motion inertia; controls how quickly floaters settle.
FL-09floaterColorArgbARGB Long0xFF000000any ARGBPerceived floater tint; aids qualitative clinician communication.
FL-10floaterShapeEnum"Circle"Circle, Worm, ClusterMorphology classification for longitudinal pattern matching.

$V_{BF}$ — Blue Field Entoptic Domain

SymptomLog: blueFieldEnabled, blueFieldCount, blueFieldShape, blueFieldMovement, blueFieldColorArgb, blueFieldAlpha, blueFieldSpeed, blueFieldSize

Scheerer's phenomenon — hyper-aware visualization of leukocytes moving through retinal capillaries. Perceived as small bright dots traversing the visual field, most prominent on blue sky or uniform bright backgrounds.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
BF-01blueFieldEnabledBooleanfalsefalse, trueSeparate domain; entoptic complaints track different triggers than static.
BF-02blueFieldCountInteger120[20, 400]Symptom density; reflects response to lighting context.
BF-03blueFieldAlphaFloat320.5[0.0, 1.0]Perceived prominence independent of count.
BF-04blueFieldSpeedFloat321.0[0.1, 5.0]Differentiates fast darting from slow drift reports.
BF-05blueFieldSizeFloat321.0[0.5, 5.0]Particle size multiplier; subtle vs. overt entoptic sensation.
BF-06blueFieldShapeEnum"Circle"Circle, Arc, SparkDot morphology for descriptive fidelity.
BF-07blueFieldMovementEnum"Squiggly"Linear, Squiggly, CircularTrajectory model for subgroup classification.
BF-08blueFieldColorArgbARGB Long0xFFFFFFFFany ARGBPerceived particle color; individual phenotype encoding.

$V_{LA}$ — Light Anomalies Domain

SymptomLog: auraIntensity, auraType, scotomaCount, scotomaPositions, scotomaColorArgb, scotomaAlpha, photopsiaIntensity, glareEnabled, glareIntensity, glareRayCount, glareSizeFraction, glareColorArgb, haloEnabled, nearHaloEnabled

Aberrant interactions with light sources: aura, scotoma, photopsia, glare (starburst), and halo phenomena. These have distinct clinical subtypes and timing profiles from baseline static.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
LA-01auraIntensityFloat320.0[0.0, 1.0]Aura flare; differs in timing/triggers from static baseline.
LA-02auraTypeEnum"Scotoma"Scotoma, FortificationMorphology category; supports reproducibility assessment.
LA-03scotomaCountInteger1[1, 5]Active when LA-02 = Scotoma. Supports plural blind-spot mapping.
LA-04scotomaPositionsString"0.5,0.5""x1,y1;x2,y2;…" normalizedPer-scotoma XY positions as normalized screen coordinates (0–1).
LA-04bscotomaColorArgbARGB Long0xFF000000any ARGBScotoma render color.
LA-04cscotomaAlphaFloat320.85[0.0, 1.0]Scotoma opacity; severity of perceived blind-spot occlusion.
LA-05photopsiaIntensityFloat320.0[0.0, 1.0]Episodic flash burden independent of baseline static level.
LA-06glareEnabledBooleanfalsefalse, trueStarburst glare; photosensitivity and night-driving burden.
LA-07glareIntensityFloat320.65[0.0, 1.0]Photosensitivity severity across conditions.
LA-08glareRayCountInteger12[4, 24]Glare pattern complexity around point light sources.
LA-09glareSizeFractionFloat320.14[0.05, 0.4]Ray length relative to screen; close-halo vs. extended starburst.
LA-10glareColorArgbARGB Long0xFFFFFFFFany ARGBChromatic glare hue; may indicate neurologic vs. optical contribution.
LA-11haloEnabledBooleanfalsefalse, trueRainbow/chromatic halo; distinguishes from noise-based symptoms.
LA-12nearHaloEnabledBooleanfalsefalse, trueClose-range halo; captures reading/indoor-light difficulties.

$V_{GE}$ — Glowing Edges Domain

SymptomLog: glowEdgesEnabled, glowEdgesAlpha, glowEdgesScale, glowEdgesTintArgb, glowEdgesBlack, glowEdgesWhite, glowEdgesGamma, glowEdgesBlur, glowEdgesColorize, glowEdgesDispX, glowEdgesDispY

Edge-contour luminance emphasis and bleed; perceived as glowing outlines around objects and high-contrast boundaries.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
GE-01glowEdgesEnabledBooleanfalsefalse, trueLuminous-contour / edge-shimmer subtype flag.
GE-02glowEdgesAlphaFloat320.6[0.0, 1.0]Direct intensity proxy for this distortion mode.
GE-03glowEdgesScaleInteger96[32, 240]Processing scale; controls glow breadth vs. edge crispness.
GE-04glowEdgesBlackFloat320.08[0.0, 0.4]Low-end threshold; whether faint edges appear or are suppressed.
GE-05glowEdgesWhiteFloat320.92[0.6, 1.0]High-end clipping; models over-bright edge perception.
GE-06glowEdgesGammaFloat321.0[0.2, 3.0]Non-linear contrast response fitted to individual perception.
GE-07glowEdgesBlurInteger2[0, 6]Spatial smoothing; crisp vs. smeared vs. halo edge character.
GE-08glowEdgesColorizeFloat320.0[0.0, 1.0]Chromatic-aberration-style contour experience strength.
GE-09glowEdgesDispXFloat320.0[−60, 60]Horizontal ghost displacement (px); directional ghosting.
GE-10glowEdgesDispYFloat320.0[−60, 60]Vertical ghost displacement (px); orientation-specific disturbance.
GE-11glowEdgesTintArgbARGB Long0xFFFFFFFFany ARGBEdge tint color; communicates subjective light-distortion quality.
GE-12edgeGlowIntensityFloat320.0[0.0, 1.0]Independent overall edge-glow overlay strength; combined-effect intensity distinct from GE-02 alpha.

$V_{DC}$ — Difference Clouds Domain

SymptomLog: cloudsEnabled, cloudsAlpha, cloudsSpeed, cloudsScale, cloudsHue, cloudsHueRange, cloudsSaturation, cloudsContrast, cloudsSoftLight

Non-point, spatial-frequency dynamic haze textures perceived across the visual field; distinct from discrete-particle static.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
DC-01cloudsEnabledBooleanfalsefalse, trueSeparates non-point haze reports from discrete-particle static.
DC-02cloudsAlphaFloat320.4[0.0, 1.0]Direct cloud visibility metric.
DC-03cloudsSpeedFloat321.0[0.1, 5.0]Temporal evolution rate; distinct from static flicker speed.
DC-04cloudsScaleFloat321.0[0.25, 4.0]Spatial frequency; differentiates coarse haze from fine texture.
DC-05cloudsHueFloat32200[0.0, 360.0]°Base color angle in color-linked distortion episodes.
DC-06cloudsHueRangeFloat3260[10.0, 180.0]°Color variability; higher range creates multi-hue dynamics.
DC-07cloudsSaturationFloat320.75[0.0, 1.0]Neutral vs. strongly chromatic distortion character.
DC-08cloudsContrastFloat320.5[0.0, 2.0]Perceived harshness and visual interference load.
DC-09cloudsSoftLightBooleantruefalse, trueSoft-light vs. normal blend mode; affects comfort and realism.

$V_{DS}$ — Distortions Domain

SymptomLog: vibrationIntensity, diplopiaIntensity, diplopiaDirection, diplopiaRotation, wavyVisionIntensity, wavyVisionSpeed, palinopsiaEnabled, palinopsiaType, palinopsiaShape, palinopsiaTrailCount, palinopsiaTrailAlpha, palinopsiaGhostCount, palinopsiaGhostAlpha, palinopsiaGhostLifeSec, palinopsiaManualAngle, palinopsiaMotionWeight, palinopsiaRotation, palinopsiaTrailFadeRate, palinopsiaTrailColorArgb, cbsIntensity

Temporal and spatial misalignments: diplopia (double vision), palinopsia (afterimages/trailing), visual vibration, oscillopsia, and Charles Bonnet-type hallucinatory phenomena. Clinical palinopsia subtypes per Gersztenkorn & Lee (2015): Hallucinatory is associated with cortical/neurologic pathology; Illusory occurs in VSS without structural lesion.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
DS-01vibrationIntensityFloat320.0[0.0, 1.0]Scene micro-jitter; distinct from static density.
DS-02diplopiaIntensityFloat320.0[0.0, 1.0]Double-vision separation burden.
DS-03diplopiaDirectionFloat320.0[0.0, 360.0]°Angular direction of image separation.
DS-04diplopiaRotationFloat320.0[0.0, 360.0]°Models skewed/tilted ghost images.
DS-04bwavyVisionIntensityFloat320.0[0.0, 1.0]Oscillopsia / metamorphopsia intensity.
DS-04cwavyVisionSpeedFloat321.0[0.1, 5.0]Wave oscillation speed.
DS-05palinopsiaEnabledBooleanfalsefalse, trueAfterimage/trailing explicit flag; distinct trigger profile from static.
DS-06palinopsiaTypeEnum"Illusory"Hallucinatory, IllusoryClinical subtype (Gersztenkorn & Lee, 2015).
DS-07palinopsiaShapeEnum"Circle"Circle, WholeScreenSpatial extent; affects functional impact on reading and navigation.
DS-08palinopsiaGhostCountInteger3[1, 5]Number of ghost frame layers; visual persistence complexity.
DS-09palinopsiaGhostAlphaFloat320.18[0.05, 0.6]Ghost frame opacity; key determinant of text/edge interference.
DS-09bpalinopsiaTrailCountInteger8[1, 20]Number of motion-trail layers.
DS-09cpalinopsiaTrailAlphaFloat320.12[0.0, 0.6]Trail opacity.
DS-09dpalinopsiaGhostLifeSecFloat322.0[0.5, 10.0] sGhost persistence duration.
DS-11PalinopsiaConfig.circleRadiusFractionFloat320.38[0.1, 0.6]Active when DS-07 = Circle; central vs. peripheral field involvement.
DS-12palinopsiaMotionWeightFloat321.0[0.0, 1.0]Sensor vs. manual trail direction blend.
DS-13palinopsiaManualAngleFloat320.0[0.0, 360.0]°Fixed trail angle when motion weight is reduced.
DS-14palinopsiaRotationFloat320.0[0.0, 360.0]°Ghost rotation relative to scene.
DS-15palinopsiaTrailFadeRateFloat320.88[0.0, 1.0]Layer fade; 0 = uniform, 1 = sharp. Differentiates flicker from smear palinopsia.
DS-16palinopsiaTrailColorArgbARGB Long0xFFFFFFFFany ARGBTrail tint color; chromatic trailing on light-dark transitions.
DS-17cbsIntensityFloat320.0[0.0, 1.0]Charles Bonnet-type structured/geometric hallucination intensity; relevant comorbidity in patients with concurrent visual field loss.

$V_{TI}$ — Tinnitus / Auditory Domain

SymptomLog: tinnitusEnabled, tinnitusType, tinnitusFreq, tinnitusVol, tinnitusFreqVariation, tinnitusPulseRate · TinnitusConfig in Models.kt

Auditory co-symptom overlay. Tinnitus is a recognized concurrent symptom in an estimated 40–60 % of VSS patients in published cohorts.

NOTE: This domain is auditory, not visual. Its inclusion in $V_{SVD}$ reflects the multisensory character of VSS and the requirement for concurrent multimodal documentation within a single session.
CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
TI-01tinnitusEnabledBooleanfalsefalse, trueEnables multimodal episode logging within one session.
TI-02tinnitusVolFloat320.1[0.0, 1.0]Perceived loudness; correlates with anxiety, sleep, stress burden.
TI-03tinnitusFreqFloat324000[100, 15 000] HzBase frequency characterization across sessions.
TI-04tinnitusTypeEnum"PureTone"PureTone, WhiteNoise, PinkNoise, BrownNoise, FrequencyVariation, MultiFrequency, PulsingSound-quality matching for report fidelity.
TI-05tinnitusFreqVariationFloat32200[10, 2 000] HzModulation depth in FrequencyVariation mode; wavering pitch instability.
TI-06tinnitusPulseRateFloat322.0[0.5, 10.0] HzBeat frequency in Pulsing mode; contextual flare metadata.
TI-07tinnitusSecondaryFreqsString (CSV)"1.5,2.0"comma-separated multipliersHarmonic/inharmonic frequency multipliers in MultiFrequency mode; captures complex tonal percepts.

$V_{CVD}$ — Color Vision Deficiency Domain domain

SymptomLog: cvdType, cvdSeverity · CvdConfig in Configs.kt

Simulation of color vision deficiency as a co-occurring or standalone visual impairment. Supports congenital (hereditary) and acquired CVD phenotypes.

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
CVD-01cvdTypeEnum"None"None, Protanopia, Deuteranopia, Tritanopia, AchromatopsiaCVD phenotype classification; supports co-morbidity profiling.
CVD-02cvdSeverityFloat320.0[0.0, 1.0]Severity; 0 = no effect, 1 = full simulation of phenotype.

$V_{VF}$ — Visual Field Loss Domain domain

SymptomLog: hemianopiaSide, hemianopiaOpacity, tunnelVisionRadius, tunnelVisionSoftness

Peripheral or hemi-field vision loss patterns. Includes hemianopia (half-field loss following retrochiasmal pathology) and tunnel vision (concentric peripheral constriction).

CodeJSON fieldTypeDefaultRange / ValuesClinical Rationale
VF-01hemianopiaSideEnum"None"None, Left, Right, Superior, InferiorHemianopia side classification; retrochiasmal field defect mapping.
VF-02hemianopiaOpacityFloat320.0[0.0, 1.0]Affected-field opacity; 0 = transparent, 1 = fully occluded.
VF-03tunnelVisionRadiusFloat321.0[0.1, 1.0]Normalized radius of remaining visual field; 1.0 = no tunnel.
VF-04tunnelVisionSoftnessFloat320.5[0.0, 1.0]Edge feathering of tunnel boundary; gradual vs. abrupt field loss.

Session Metadata (Recommended)

The following contextual fields are RECOMMENDED in session snapshots alongside $V_{SVD}$. All are persisted in SymptomLog.

FieldJSON fieldTypeRangeClinical Rationale
AnxietyanxietyLevelInteger[0, 10]Symptom salience amplifier; stress-linked vs. visually-driven spikes.
DepressiondepressionLevelInteger[0, 10]Mood burden context for quality-of-life interpretation.
StressstressLevelInteger[0, 10]Trigger-response pattern detection across weeks.
Sleep DurationsleepHoursFloat32[0.0, 12.0] hSensory tolerance predictor; next-day severity correlation.
Energy LevelenergyLevelInteger[0, 10]Functional impact beyond raw visual severity.
Trigger NotesrecentTriggersStringfree textNon-standardized contextual factors (light, caffeine, workload…).
Session NotesnoteStringfree textQualitative nuance for clinician interpretation.
Is PresetisPresetBooleanMarks snapshot as a reusable reference profile.
Symptom TagssymptomsListStringfree textComma-separated self-reported symptom tags.
TimestamptimestampLong (epoch ms)ISO 8601Required for longitudinal alignment.
Import from Health ConnectoptionalpermissionedSleep/activity metadata; reduces manual entry burden.

Medical History Context Fields

Optional self-reported checklist items. These are relevance signals for pattern exploration and shall not be interpreted as diagnostic conclusions.

QuestionClinical Rationale
Long-term or childhood antibiotic useBroad history marker for developmental or systemic context; cohort stratification.
Logged medications (past or current)Avoids misattributing temporal symptom changes to visual causes.
Nose in vision (abnormal awareness)Altered visual filtering/awareness; atypical perceptual salience patterns.
Nystagmus (involuntary eye movement)Interacts with perceived visual instability; clinically relevant context.
Blood flow or circulation issuesVascular context for chronic neurologic symptom discussion.
High blood pressureCovariate in symptom trend analysis; altered visual comfort.
Kidney diseaseSystemic health affects fatigue, stress response, medication burden.
Severe head injury during childhoodNeurologic history marker for exploratory cohort comparisons.
Brain inflammation (post-accident or infection)Neuroinflammatory history; differential patterning.
Stressful periods causing traumaPsychophysiologic load amplifies symptom perception.
High stress hormones / chronic stressAffects sensory threshold and sleep architecture.
Cyclical Cushing's or high cortisolEndocrine variability alters neurologic and mood symptoms.
ADHDAttention regulation influences symptom salience and coping strategies.
Neurodivergent traitsDifferent sensory processing profiles affect symptom experience and reporting.
DyslexiaReading/visual processing history; task-specific functional burden.
AllergiesAllergic states influence fatigue, sleep, overall symptom load.
Insect bites (e.g., caterpillar exposure)Environmental exposure; exploratory cohort association metadata.
MTHFR gene variantOptional, non-diagnostic; high-level subgroup exploration only.
Ptosis (drooping eyelids)Ocular/neuromuscular signs; perceived visual effort.
Memory inhibition or memory issuesCognitive symptoms co-occur with chronic sensory strain.
Repetitive nightmaresSleep disturbance indicator; correlates with next-day symptom severity.
Neuronal excitability symptoms (sensory sensitivity)Hyperexcitability features relevant to sensory syndrome profiling.
Family history of similar symptomsEpidemiologic framing; hereditary clustering signal detection.

Potential Standardization Path

This is an open specification today. If clinical adoption grows, the path toward formal standardization is described in the full specification document. The immediate priority is research use and community feedback, not standardization itself.

This VSS/SVD-specific vector matrix is the reference implementation feeding into a broader, condition-agnostic effort: the Open Visual Symptom Standard (OVS), published at openvisual.org. Where this page documents the VSS app's concrete parameters, OVS defines the general schema hierarchy (visual noise, field defects, optical aberrations, persistence, hallucination, spatial distortion, entoptic, color perception, auditory) that this domain vector is a profile of.

Annex A — JSON Schema

Reference JSON serialization format for $V_{SVD}$ session snapshots covering all eleven domains.

Annex B — If Adoption Grows

DOI publication → clinical research use → HL7 FHIR profile → SNOMED CT codes → ISO/TC 215 (only if warranted by evidence).

Annex C — Related Standards

ICD-11 9E2Y · SNOMED CT 413997008 · HL7 FHIR Observation · WHO ICF b21022 · PROM frameworks.

Versioning Policy

Parameter codes are stable identifiers. Codes are never reassigned. New parameters get the next sequential code. Kotlin source is the ground truth.

Annex D — OVS (openvisual.org)

The condition-agnostic parent schema this specification maps to. See openvisual.org and the in-repo docs/ovs/OVS_SPEC.md.

← Back to website home