{"id":49134073,"url":"https://github.com/adrianwedd/lunar_tools_prototypes","last_synced_at":"2026-04-21T20:34:24.147Z","repository":{"id":346826328,"uuid":"1030400009","full_name":"adrianwedd/lunar_tools_prototypes","owner":"adrianwedd","description":"Oneiric interfaces and audiovisual installations: Dream Interpreters, Fingerprint Painters, and Cosmic Murals.","archived":false,"fork":false,"pushed_at":"2026-03-25T15:44:57.000Z","size":225,"stargazers_count":0,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-26T17:51:44.373Z","etag":null,"topics":["audio-reactive","creative-coding","generative-ai","generative-art","immersive","installations","interactive-art","midi","realtime-visuals"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adrianwedd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-01T15:15:51.000Z","updated_at":"2026-03-25T15:46:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adrianwedd/lunar_tools_prototypes","commit_stats":null,"previous_names":["adrianwedd/lunar_tools_prototypes"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/adrianwedd/lunar_tools_prototypes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Flunar_tools_prototypes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Flunar_tools_prototypes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Flunar_tools_prototypes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Flunar_tools_prototypes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adrianwedd","download_url":"https://codeload.github.com/adrianwedd/lunar_tools_prototypes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Flunar_tools_prototypes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32108774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-reactive","creative-coding","generative-ai","generative-art","immersive","installations","interactive-art","midi","realtime-visuals"],"created_at":"2026-04-21T20:34:22.044Z","updated_at":"2026-04-21T20:34:24.131Z","avatar_url":"https://github.com/adrianwedd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lunar Tools Project\n\nThis repository contains a collection of interactive audiovisual art installations built with Lunar Tools. Leveraging AI-driven text, audio, and image generation, real-time MIDI and keyboard controls, and dynamic visuals, this toolkit enables immersive, reactive experiences.\n\n⸻\n\nTable of Contents\n\t1.\tFeatures\n\t2.\tPrototypes \u0026 Demos\n\t3.\tCLI Entrypoint\n\t4.\tShared Core\n\t5.\tRepository Structure\n\t6.\tGetting Started\n\t7.\tCustomization\n\t8.\tTroubleshooting\n\t9.\tContributing\n\t10.\tLicense\n\n⸻\n\nFeatures\n\t•\tSpeech-to-Text Input: Capture visitor input via microphone using Lunar Tools’ Speech2Text.\n\t•\tAI Story Generation: Continue the narrative in real time with GPT-4 (including gpt-4o-mini).\n\t•\tAudio Narration: Convert generated story segments back to audio using OpenAI’s Text-to-Speech.\n\t•\tDynamic Background Music: Generate ambient background music via Meta’s MusicGen API.\n\t•\tAudio Prompt Signals: Generate gentle prompt tones with pydub to cue visitor input.\n\t•\tReal-Time Visuals: Render images generated by DALL·E-3/SDXL Turbo and display them via Tkinter or Lunar Tools’ OpenGL renderer.\n\t•\tMIDI \u0026 Keyboard Control: Pause/resume or stop the experience using a MIDI controller or keyboard inputs.\n\t•\tSession Monitoring: Track and log interactions using LangSmith sessions and API.\n\t•\tComprehensive Logging: Detailed console and file logging of all requests, responses, and events.\n\t•\tShared Core: Centralized initialization and management of Lunar Tools instances for easier configuration and extension.\n\t•\tCLI Entrypoint: Unified command-line interface to launch any demo.\n\n⸻\n\nPrototypes \u0026 Demos\n\nExplore experimental prototypes demonstrating Lunar Tools’ versatility in audiovisual installations, located in the `prototypes/` directory:\n\nScript\tDescription\n`interactive_storytelling.py`\tThe core interactive storytelling application.\n`acoustic-fingerprint-painter.py`\t\"Paints\" unique abstract brushstrokes driven by each visitor’s voice fingerprint.\n`ai-dream-interpreter-prototype.py`\tListens to visitor speech, interprets dream-like phrases, and visualizes them via Stable Diffusion pipelines.\n`ai-fashion-show-prototype.py`\tGenerates runway visuals from AI prompts and syncs audio beats with fashion transitions via MIDI triggers.\n`apocalypse_experience.py`\tEncapsulates logic for an apocalypse experience with visual generation.\n`audio-reactive-fractal-forest.py`\tCreates an ever-evolving fractal “forest” whose shape and colors respond in real time to ambient audio.\n`augmented_audio_tours.py`\tEncapsulates logic for augmented audio tours with position detection.\n`chat-room-narrative-quilt.py`\tHosts a live chat where each message spawns a visual “patch” in a growing narrative quilt.\n`collaborative_art.py`\tEncapsulates logic for collaborative art with server management.\n`collaborative-canvas.py`\tEnables multiple visitors on different machines to paint together on a shared digital canvas, with periodic AI style suggestions.\n`cosmic-soundscape.py`\tCreates an evolving soundscape using 4-channel audio mixing, controlled via OSC and randomized AI prompts.\n`data-driven-cityscape.py`\tRenders a generative skyline whose architecture morphs according to live data feeds (weather, markets, social media).\n`dynamic_visuals.py`\tEncapsulates logic for dynamic visuals with actual visual generation.\n`emotional-landscape-generator-prototype.py`\tCaptures ambient sounds, analyzes sentiment via GPT, and renders abstract landscapes reflecting emotions.\n`escape_room.py`\tEncapsulates logic for an escape room game with puzzle logic.\n`evolving-cosmic-mural-prototype.py`\tGenerates a continuously morphing mural using SDL rendering, driven by AI descriptions and MIDI controls.\n`generative-poetry-mosaic.py`\tBuilds an interactive, growing mosaic of AI-written couplets illustrated by DALL·E backgrounds.\n`interactive-storytelling-canvas-prototype.py`\tIntegrates Canvas UI to display story text, images, and controls in a single web-like interface.\n`neural-transfer-music-visualizer.py`\tSynchronizes neural style-transfer effects to live music beats for a dynamic visual experience.\n`real-time-glitch-art-lab.py`\tStreams live camera frames through a glitch “corruption” pipeline for surreal visual art.\n`sentiment_analysis_display.py`\tEncapsulates logic for sentiment analysis display with actual sentiment analysis.\n`speech_activated_art.py`\tEncapsulates logic for speech-activated art with improved error handling.\n`temporal-art-gallery-prototype.py`\tStreams remote images and audio across locations, creating a synchronized, time-based art exhibition.\n`time-shifted-echo-chamber.py`\tConstructs a looping echo chamber that replays what visitors say after programmable delays, layered and pitch-shifted.\n`virtual_time_travel.py`\tEncapsulates logic for virtual time travel with MIDI input handling.\n`virtual-cloud-chamber.py`\tSimulates a 2D particle-track cloud chamber where events spawn drifting “particles.”\n`whispers.py`\t(Add description if available)\n\n⸻\n\nCLI Entrypoint\n\nThe `lunar_tools_demo.py` script provides a unified command-line interface to launch any of the installations by name.\n\nUsage:\n`python lunar_tools_demo.py --demo \u003cdemo_name\u003e [--config \u003cconfig_string\u003e]`\n\nExample:\n`python lunar_tools_demo.py --demo fractal_forest --config \"{'mic_device': 'default', 'window_size': (800, 600)}\"`\n\n⸻\n\nShared Core\n\nThe `lunar_tools_art.py` module centralizes the initialization and management of Lunar Tools instances, such as `Speech2Text`, `GPT4`, `Text2SpeechOpenAI`, `AudioRecorder`, `SoundPlayer`, `Renderer`, `KeyboardInput`, and `WebCam`. This promotes code reusability and simplifies configuration across all demos.\n\n⸻\n\nRepository Structure\n\n```\n.\n├── .gemini/                     # Gemini agent configuration and tasks\n├── .github/                     # GitHub Actions workflows (e.g., CI)\n├── .output/                     # Generated output files (audio, images, logs)\n├── .pytest_cache/               # Pytest cache directory\n├── .ruff_cache/                 # Ruff linter cache directory\n├── .temp/                       # Temporary files\n├── logs/                        # Application logs\n├── prototypes/                  # All interactive art installation prototypes\n│   ├── acoustic-fingerprint-painter.py\n│   ├── ai-dream-interpreter-prototype.py\n│   ├── ai-fashion-show-prototype.py\n│   ├── apocalypse_experience.py\n│   ├── audio-reactive-fractal-forest.py\n│   ├── augmented_audio_tours.py\n│   ├── chat-room-narrative-quilt.py\n│   ├── collaborative_art.py\n│   ├── collaborative-canvas.py\n│   ├── cosmic-soundscape.py\n│   ├── data-driven-cityscape.py\n│   ├── dynamic_visuals.py\n│   ├── emotional-landscape-generator-prototype.py\n│   ├── escape_room.py\n│   ├── evolving-cosmic-mural-prototype.py\n│   ├── generative-poetry-mosaic.py\n│   ├── interactive_storytelling.py\n│   ├── interactive-storytelling-canvas-prototype.py\n│   ├── neural-transfer-music-visualizer.py\n│   ├── real-time-glitch-art-lab.py\n│   ├── sentiment_analysis_display.py\n│   ├── speech_activated_art.py\n│   ├── temporal-art-gallery-prototype.py\n│   ├── time-shifted-echo-chamber.py\n│   ├── virtual_time_travel.py\n│   ├── virtual-cloud-chamber.py\n│   └── whispers.py\n├── tests/                       # Unit and integration tests\n│   ├── conftest.py\n│   ├── test_lunar_tools_art.py\n│   └── test_utils.py\n├── .DS_Store                    # macOS directory metadata\n├── .env                         # Environment variables (e.g., API keys)\n├── ai_dream_interpreter_20250627_014142.log # Example log file\n├── ai_dream_interpreter_20250627_014159.log # Example log file\n├── interactive_storytelling_20250627_013530.log # Example log file\n├── interactive_storytelling_20250627_013555.log # Example log file\n├── interactive_storytelling_20250627_014002.log # Example log file\n├── lunar_tools_art.py           # Shared core module for Lunar Tools instances\n├── lunar_tools_demo.py          # CLI entrypoint for launching demos\n├── README.md                    # Project documentation\n├── requirements.txt             # Python dependencies\n├── settings.json                # Project settings\n├── setup.py                     # Package setup file\n├── test_response_\u003cMagicMock name='datetime.datetime.now().strftime()' id='5622620448'\u003e.txt # Example test response\n├── test_response_20240101_120000.txt # Example test response\n├── utils.py                     # Utility functions\n└── __pycache__/                 # Python cache directory\n```\n\n⸻\n\nGetting Started\n\n1. Clone the Repository\n\n`git clone https://github.com/yourusername/lunar_tools.git`\n`cd lunar_tools`\n\n2. Create a Virtual Environment\n\n`python3 -m venv env`\n`source env/bin/activate`\n\n3. Install Dependencies\n\n`pip install -r requirements.txt`\n`pip install .` (to install the `lunar_tools_art` package)\n\n4. Configure API Keys\n\nCreate a `.env` file with your API keys:\n\n`OPENAI_API_KEY=\"\u003cyour_openai_api_key\u003e\"`\n`REPLICATE_API_TOKEN=\"\u003cyour_replicate_api_token\u003e\"`\n(Add any other required API keys here)\n\n5. Run a Demo\n\nTo run a specific demo, use the `lunar_tools_demo.py` script:\n\n`python lunar_tools_demo.py --demo interactive_storytelling`\n\nTo see available demos and options:\n\n`python lunar_tools_demo.py --help`\n\n⸻\n\nCustomization\n\n(To be added: Details on how to customize various aspects of the demos, e.g., model names, canvas size, audio durations, by modifying `settings.json` or passing `--config` arguments.)\n\n⸻\n\nTroubleshooting\n\n(To be added: Common issues and their solutions.)\n\n⸻\n\nContributing\n\n(To be added: Guidelines for contributing to the project.)\n\n⸻\n\nLicense\n\n(To be added: Project license information.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianwedd%2Flunar_tools_prototypes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrianwedd%2Flunar_tools_prototypes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianwedd%2Flunar_tools_prototypes/lists"}