Skip to content

oisee/vivid-vibes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vivid Vibes

Probably the first ever demo for SAP ABAP

Real-time demoscene effects running in SAP ABAP

Demo Video

Click the image above to watch the demo in action


What is this?

Vivid Vibes is a demoscene engine written entirely in ABAP. It renders classic demo effects server-side and streams them to the browser via WebSockets (ABAP Push Channel). The browser renders vector primitives in real-time, synchronized to music.

Architecture

┌─────────────────────┐ ┌─────────────────────┐ │ ABAP │ │ Browser │ │ "Scene Engine" │ │ "Video Processor" │ ├─────────────────────┤ JSON ├─────────────────────┤ │ - Effect logic │ ─────► │ - Canvas 2D │ │ - 3D math │ WebSocket│ - WebGL shaders │ │ - Scene transitions │ │ - Audio sync │ │ - Timeline/BPM sync │ │ - CRT post-FX │ └─────────────────────┘ └─────────────────────┘ Calculates Renders what to draw the frames 

ABAP does all the heavy lifting: 3D transformations, effect calculations, scene orchestration, and beat synchronization. It outputs draw commands (lines, circles, polygons, text) as JSON.

JavaScript (Canvas/WebGL) acts as a "video processor" - it receives the primitives and renders them to screen. It also handles audio playback, post-processing effects (CRT scanlines, glow), and WebGL shaders for GPU-accelerated effects.


Effects

Preview Effect Class
Plasma ZCL_O4D_PLASMA
Copper Bars ZCL_O4D_COPPERBARS
Rotozoom ZCL_O4D_ROTOZOOM
Amiga Ball ZCL_O4D_AMIGABALL
Twister ZCL_O4D_TWISTER
Metaballs ZCL_O4D_METABALLS
Joy Division ZCL_O4D_JOYDIVISION
Mountains ZCL_O4D_MOUNTAINS
Voxel Landscape ZCL_O4D_VOXEL_LANDSCAPE
Tesseract (4D) ZCL_O4D_TESSERACT
24-Cell Polytope ZCL_O4D_CELL24
120-Cell Polytope ZCL_O4D_CELL120
Torus ZCL_O4D_TORUS
Quaternion Julia ZCL_O4D_QUATJULIA
Julia Morph ZCL_O4D_JULIA_MORPH
Sierpinski ZCL_O4D_SIERPINSKI
Neon City ZCL_O4D_NEONCITY
Constellation ZCL_O4D_CONSTELLATION
Ignition ZCL_O4D_IGNITION
Glitch ZCL_O4D_GLITCH

...and more effects!


Installation

1. Install the package

Clone and import using abapGit:

https://github.com/oisee/vivid-vibes 

2. Activate the HTTP Handler

  1. Go to transaction SICF
  2. Create/activate service node: /sap/bc/zo4d_demo
  3. Assign handler class: ZCL_O4D_HTTP_HANDLER

3. Activate the APC Handler

  1. Go to transaction SAPC (or SE80 -> Create APC Application)
  2. Create and activate the ABAP Push Channel service
  3. Assign handler class: ZCL_O4D_APC_HANDLER

Running the Demo

Open your browser and navigate to:

http://<your-sap-host>:<port>/sap/bc/zo4d_demo?player=megademo 

Example:

http://vhcala4hci:50000/sap/bc/zo4d_demo?player=megademo 

Architecture

Core Classes

Class Description
ZIF_O4D_EFFECT Effect interface with render context, timing, primitives
ZCL_O4D_DEMO Scene orchestrator with transitions
ZCL_O4D_COMPOSER Multi-scene timeline management
ZCL_O4D_HTTP_HANDLER Serves the HTML5 player
ZCL_O4D_APC_HANDLER WebSocket handler for real-time streaming

Rendering

  • Output: JSON primitives (lines, circles, polygons, text)
  • Resolution: 640x400 scalable vectors
  • Frame rate: ~20-60 FPS (configurable via fpt parameter)
  • Timing: Beat-synced at 76 BPM (configurable)

Related Projects

Vibing Steampunk

A complete demo production built with this framework:

github.com/oisee/vibing-steampunk


Credits

Code: OISEE + Claude // 2025

Music:

  • EA Rulez! by Oisee (AY-8910 1999 / rmx 2025)
  • Ole Lukøjle by Oisee (AY-8910 2001 / rmx 2025)

Demoscene meets Enterprise!


License

MIT

About

Old-school ABAP Demo

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors