chaoscope.github.io

Chaoscope for Android

A modern Android reimagining of the legendary Chaoscope desktop tool, originally created by Nicolas Desprez in the early 2000s. His pioneering work introduced countless people to the visual world of strange attractors — this app carries that spirit forward, rebuilt from scratch for today’s mobile devices.

Note: No original code, assets, or binaries from Nicolas Desprez’s Chaoscope were used. All source code was written independently. The name is used in tribute and with attribution.


What is it?

Strange attractors are the visual fingerprints of chaotic systems — mathematical structures that trace hypnotic, infinitely detailed shapes when iterated millions of times. Chaoscope for Android lets you explore, tweak, and export them right from your phone.


Features

Attractors included

Name Dimensions
Clifford 3D
Peter de Jong 3D
Gumowski-Mira 2D
Lorenz 3D
Rössler 3D
Aizawa 3D
Thomas 3D
Chaotic Flow 3D
Icon 2D
Barnsley Fern 2D
Julia 2D
Pickover 3D

Architecture

Kotlin / Jetpack Compose  (UI layer)
         │
         ▼
  ChaoscopeViewModel      (render state, export logic)
         │
         ▼
  ChaoscopeEngine.kt      (JNI bridge)
         │
         ▼
  libchaoscope.so  (C++17 native library)
  ├── attractors.cpp   ← iterate attractor equations
  └── renderer.cpp     ← histogram accumulation + tone-mapping + palette

The rendering pipeline follows the classic Chaoscope approach:

  1. Iterate the attractor equation for millions of steps → collect (x, y, z) points
  2. Project 3D points through a configurable camera → (u, v) screen coordinates
  3. Accumulate into a density histogram
  4. Apply logarithmic tone-mapping to compress the dynamic range
  5. Map through a colour palette → final RGBA bitmap

Requirements

Tool Version
Android Studio Hedgehog or newer
Android Gradle Plugin 8.x
Kotlin 2.x
CMake 3.22.1+
NDK r25 or newer
Min SDK 26 (Android 8.0)
Target SDK 35

Building

# Clone the repo
git clone https://github.com/joeyaresius/chaoscope.git
cd chaoscope-android/android

# Build debug APK
./gradlew assembleDebug

# Install on connected device
./gradlew installDebug

The C++ native library is compiled automatically by the Gradle CMake integration. No manual NDK steps are needed.


Project structure

android/              ← Android app
  app/src/main/
    cpp/              ← C++17 native rendering engine
    java/com/chaoscope/app/
      ui/             ← Compose screens (SplashScreen, AttractorScreen)
      AttractorDefs.kt
      ChaoscopeEngine.kt
      ChaoscopeViewModel.kt
      MainActivity.kt
    res/              ← resources, icons, themes
prototype/            ← Python proof-of-concept (Phases 1–4)
LICENSE
README.md

Privacy

This app collects no user data. All processing is performed locally on the device. No third-party analytics, crash reporting, or advertising SDKs are included.

See the full Privacy Policy for details.


Contributing

Issues and pull requests are welcome. Please open an issue first for significant changes so we can discuss the direction.

Feedback and suggestions can also be sent directly to chaoscope@duck.com.


License

Licensed under the Apache License 2.0 — see LICENSE for the full text.

Copyright 2026 Lucas (Chaoscope for Android)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Acknowledgements