SOTCD DJ Bot

Adaptive generative acid house driven by real-world cosmic data.


Status

  • βœ… SuperCollider audio synthesis
  • βœ… Node.js signal bridge (multi-source)
  • βœ… USGS Earthquake integration
  • βœ… NOAA Solar X-ray integration
  • βœ… GOES Plasma data (density, speed, temp)
  • βœ… Planetary position calculations
  • βœ… WebSocket feed for Hydra visuals
  • βœ… OPERATIONAL (2026-02-01)

Architecture

╔═══════════════════════════════════════════════════════════════╗
β•‘                      DATA SOURCES                              β•‘
╠═══════════════╦═══════════════╦═══════════════╦═══════════════╣
β•‘ 🌍 USGS       β•‘ β˜€οΈ NOAA X-ray β•‘ 🌬️ GOES Plasmaβ•‘ πŸŒ™ Planetary  β•‘
β•‘ Earthquakes   β•‘ Solar Flux    β•‘ Density/Speed β•‘ Positions     β•‘
β•šβ•β•β•β•β•β•β•β•€β•β•β•β•β•β•β•β•©β•β•β•β•β•β•β•β•€β•β•β•β•β•β•β•β•©β•β•β•β•β•β•β•β•€β•β•β•β•β•β•β•β•©β•β•β•β•β•β•β•β•€β•β•β•β•β•β•β•β•
        β”‚               β”‚               β”‚               β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   SIGNAL BRIDGE       β”‚
                    β”‚   (Node.js)           β”‚
                    β”‚   signal_bridge_visual.js β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚                 β”‚                 β”‚
              β–Ό                 β–Ό                 β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚    OSC    β”‚    β”‚ WebSocket β”‚    β”‚  Console  β”‚
        β”‚ :57120    β”‚    β”‚  :8080    β”‚    β”‚   Logs    β”‚
        β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚                β”‚
              β–Ό                β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚SuperColliderβ”‚   β”‚   Hydra   β”‚
        β”‚  (Audio)  β”‚    β”‚ (Visuals) β”‚
        β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ VB-Cable  β”‚
        β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
              β”‚
              β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  FFmpeg   β”‚
        β”‚  β†’ Twitch β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Location

ShadowMaster (192.168.1.214): C:\Users\shdwadmin\sotcd\
Local backup: ~/projects/sunsofthecosmicdust/adaptive/

Files

FilePurpose
headless_boot.scdSuperCollider synth definitions + patterns
signal_bridge_visual.jsData fetcher + OSC + WebSocket server
signal_bridge.jsSimple version (no visuals)
go_live.batFull stream launcher
test_audio.batAudio test (no stream)

Data Sources & Mapping

Earthquake (USGS)

  • Source: earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson
  • Data: Event count, max magnitude
  • Maps to: Chaos, distortion, intensity

Solar X-ray (NOAA GOES)

  • Source: services.swpc.noaa.gov/json/goes/primary/xrays-1-day.json
  • Data: X-ray flux level
  • Levels: X-class (πŸ”₯), M-class, C-class, B-class, Quiet
  • Maps to: Filter brightness, energy, color (visuals)

Plasma (GOES Solar Wind)

  • Source: services.swpc.noaa.gov/products/solar-wind/plasma-1-day.json
  • Data: Density (p/cmΒ³), Speed (km/s), Temperature (K)
  • Maps to: Chorus depth, chorus rate, texture

Planetary Positions

  • Source: Calculated from current date/time
  • Data: Mercury, Venus, Mars, Jupiter, Saturn, Moon positions
  • Aspects: Conjunctions, oppositions, squares, trines
  • Maps to: Visual geometry, sigil selection, rotation

Signal β†’ Music Mapping

SignalBPMFilterChaosMood
0.080200HzLowDeep Trance
0.31041640HzLow-MedHypnotic
0.51202600HzMediumGrooving
0.71363560HzMed-HighEnergetic
1.01605000HzHighChaos

OSC Messages

AddressTypeDescription
/signalfloatMaster intensity (0-1)
/bpmfloatBeats per minute
/filterfloatFilter cutoff (Hz)
/chaosfloatChaos amount (0-1)
/kick_densityfloatKick pattern density
/chorus_depthfloatPlasma density β†’ chorus
/chorus_ratefloatPlasma speed β†’ chorus

WebSocket Feed (Hydra)

URL: ws://localhost:8080

Payload:

{
  "signal": 0.5,
  "earthquake": 0.3,
  "solar": 0.4,
  "plasma": { "density": 0.3, "speed": 0.5, "temp": 0.2 },
  "planets": { "mercury": 45, "venus": 120, ... },
  "moonPhase": 0.75,
  "aspects": [{ "planet": "mars", "type": "trine", "strength": 0.8 }],
  "bpm": 120,
  "sigil": "phi",
  "time": 1706799600000
}

Setup (Windows/ShadowMaster)

Prerequisites

  • SuperCollider 3.14.1
  • Node.js 24+
  • VB-Audio Virtual Cable
  • FFmpeg (for streaming)

Windows Port Fix

Hyper-V reserves UDP ports. Fix with (Admin PowerShell):

netsh int ipv4 set dynamic udp start=49152 num=16383
# Then reboot

1. Start SuperCollider

1. Open SuperCollider (Run as Admin first time)
2. File β†’ Open β†’ C:\Users\shdwadmin\sotcd\headless_boot.scd
3. Ctrl+A (select all)
4. Ctrl+Enter (execute)
5. Wait for "πŸ”₯ SOTCD Adaptive Acid is LIVE!"

2. Start Signal Bridge

cd C:\Users\shdwadmin\sotcd
node signal_bridge_visual.js

3. Hear Audio (VB-Cable)

Windows Sound Settings β†’ Recording β†’ CABLE Output
β†’ Properties β†’ Listen β†’ "Listen to this device" β†’ Your speakers

4. Stream to Twitch

ffmpeg -f dshow -i audio="CABLE Output (VB-Audio Virtual Cable)" ^
  -f gdigrab -framerate 15 -i desktop ^
  -c:v libx264 -preset veryfast -b:v 2500k ^
  -c:a aac -b:a 128k ^
  -f flv "rtmp://live.twitch.tv/app/YOUR_STREAM_KEY"

Hydra Visuals

Open hydra.ojack.xyz and connect:

// SOTCD Hydra - Cosmic Data Visuals
let d = { signal: 0.5, earthquake: 0.2, solar: 0.3, 
          plasma: {density: 0.3, speed: 0.4}, moonPhase: 0.5 }
 
// Connect to Signal Bridge
let ws = new WebSocket('ws://localhost:8080')
ws.onmessage = (e) => { d = JSON.parse(e.data) }
 
// Data-driven visuals
osc(3, 0.1, () => d.plasma.speed)
  .rotate(() => d.moonPhase * Math.PI * 2)
  .color(() => d.solar, 0.3, () => 1 - d.earthquake)
  .modulate(noise(() => d.earthquake * 3), () => d.signal * 0.3)
  .kaleid(() => Math.floor(d.plasma.density * 8) + 3)
  .scale(() => 1 + d.signal * 0.5)
  .out()

Synth Definitions

acidBass

  • Saw + Pulse oscillators
  • ADSR envelope
  • Resonant lowpass filter with envelope

acid303

  • TB-303 style acid lead
  • Filter envelope with resonance
  • Soft saturation distortion

kick

  • Sine wave with pitch envelope
  • White noise transient
  • Tanh distortion

hihat

  • Highpass filtered white noise
  • Short decay envelope
  • Random panning

chaosPad

  • Dual detuned saws
  • LFO modulation based on chaos
  • Pad envelope

Troubleshooting

”Unable to bind UDP socket”

  • Run SuperCollider as Administrator
  • Check Hyper-V port reservation: netsh interface ipv4 show excludedportrange protocol=udp
  • Apply nuclear fix and reboot

No audio

  • Check VB-Cable is installed
  • Verify SC output device: ServerOptions.outDevices in SC
  • Enable β€œListen to this device” on CABLE Output

Signal bridge won’t connect

  • Ensure SuperCollider is running first
  • Check OSC port 57120 is free
  • Firewall may need exception

Lore Integration

β€œThe Church of the Universal Vibration teaches that all sound emerges from cosmic resonance. When the Earth trembles, the bass responds. When the Sun flares, the frequencies brighten. The plasma wind shapes the chorus. The planets align the geometry.”

β€œAs above, so below. As the cosmos moves, so moves the beat.” β€” The Vibration Manifesto