To fulfill this, I have designed a self-contained, interactive, multimodal art-science artifact. Taking inspiration from the bio-hackery, surveillance critiques, and weird-tech vibes of we-make-money-not-art, this experiment explores the intersection of organic cognition and digital finance.
It is designed to be a "runnable" package. I have written it as a standalone HTML file. It uses your browser to simulate the multimodal outputs of Flash 3.7—specifically mapping visual biological growth data into generative, spatial audio and haptic/visual feedback.
project-physarum.html on your desktop.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PROJECT P.H.Y.S.A.R.U.M. // Flash 3.7 Multimodal I/O</title>
<style>
:root {
--bg: #050505;
--text: #c0c0c0;
--accent: #bada55;
--accent-dim: rgba(186, 218, 85, 0.2);
--fungal: #ff0055;
--font-mono: 'Courier New', Courier, monospace;
}
body {
background-color: var(--bg);
color: var(--text);
font-family: var(--font-mono);
margin: 0;
padding: 2rem;
line-height: 1.6;
overflow-x: hidden;
}
h1, h2, h3 {
color: var(--accent);
text-transform: uppercase;
letter-spacing: 2px;
font-weight: normal;
}
h1 {
font-size: 2.5rem;
border-bottom: 1px solid var(--accent);
padding-bottom: 10px;
margin-bottom: 30px;
position: relative;
}
/* Glitch Effect */
h1::before {
content: "PROJECT P.H.Y.S.A.R.U.M.";
position: absolute;
top: 0; left: -2px;
text-shadow: 2px 0 var(--fungal);
clip: rect(44px, 450px, 56px, 0);
animation: glitch 5s infinite linear alternate-reverse;
}
@keyframes glitch {
0% { clip: rect(10px, 9999px, 15px, 0); }
5% { clip: rect(50px, 9999px, 60px, 0); }
10% { clip: rect(30px, 9999px, 40px, 0); }
15% { clip: rect(70px, 9999px, 80px, 0); }
20% { clip: rect(20px, 9999px, 25px, 0); }
25% { clip: rect(90px, 9999px, 100px, 0); }
100% { clip: rect(10px, 9999px, 15px, 0); }
}
.container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
max-width: 1400px;
margin: 0 auto;
}
.panel {
border: 1px solid #333;
background: rgba(25, 25, 25, 0.8);
padding: 1.5rem;
position: relative;
}
.panel::after {
content: '';
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(186, 218, 85, 0.03) 2px,
rgba(186, 218, 85, 0.03) 4px
);
pointer-events: none;
}
.tag {
display: inline-block;
background: var(--accent-dim);
color: var(--accent);
padding: 2px 8px;
font-size: 0.8rem;
margin-right: 5px;
border: 1px solid var(--accent);
}
button {
background: var(--bg);
color: var(--accent);
border: 1px solid var(--accent);
padding: 15px 30px;
font-family: var(--font-mono);
font-size: 1.2rem;
cursor: pointer;
transition: all 0.3s ease;
width: 100%;
margin-top: 20px;
text-transform: uppercase;
}
button:hover {
background: var(--accent);
color: var(--bg);
box-shadow: 0 0 15px var(--accent);
}
/* Bio-Visualizer */
#petri-dish {
width: 100%;
height: 300px;
background: #000;
position: relative;
overflow: hidden;
border: 1px solid #444;
}
.spore {
position: absolute;
width: 4px;
height: 4px;
background: var(--fungal);
border-radius: 50%;
box-shadow: 0 0 8px var(--fungal);
transition: all 2s ease-in-out;
opacity: 0;
}
.log-window {
height: 200px;
overflow-y: auto;
background: #000;
padding: 10px;
border: 1px solid #333;
font-size: 0.85rem;
color: #888;
}
.log-window p { margin: 5px 0; }
.highlight { color: var(--fungal); }
@media (max-width: 800px) {
.container { grid-template-columns: 1fr; }
}
</style>
</head>
<body>
<h1>PROJECT P.H.Y.S.A.R.U.M.</h1>
<div style="margin-bottom: 2rem;">
<span class="tag">BIO-ART</span>
<span class="tag">SURVEILLANCE CAPITALISM</span>
<span class="tag">MULTIMODAL TACTILITY</span>
<span class="tag">FLASH 3.7 I/O</span>
</div>
<div class="container">
<!-- Left Column: Context -->
<div class="panel">
<h2>Abstract</h2>
<p>We interfaced a living culture of <i>Physarum polycephalum</i> (slime mold) with a high-frequency trading algorithm scraping Chicago Mercantile Exchange micro-fluctuations. Using <strong>Flash 3.7's multimodal vision-to-audio-to-haptic pipeline</strong>, the physical topology of the mold's search for oat flakes (representing arbitrage opportunities) is translated in real-time.</p>
<h3>Apparatus setup</h3>
<ul>
<li><strong>Input [Visual]:</strong> 4K macro-lens feed of mycelial networking over a 3D-printed topographic map of Wall Street.</li>
<li><strong>Input [Data]:</strong> Live NASDAQ CSV firehose.</li>
<li><strong>Flash 3.7 Logic:</strong> Cross-modal translation. If the slime mold avoids a sector experiencing stock depreciation, the model outputs dissonant acoustic frequencies and visual bio-markers.</li>
<li><strong>Output [Audio/Haptic]:</strong> Generative drone synthesis (simulated here via Web Audio API).</li>
</ul>
</div>
<!-- Right Column: Interactive Multimodal Interface -->
<div class="panel">
<h2>Flash 3.7 Cross-Modal Output</h2>
<p>Live Bio-Telemetry feed. Initialize link to commence algorithmic synthesis.</p>
<div id="petri-dish"></div>
<button id="init-btn">[ INITIALIZE MULTIMODAL LINK ]</button>
<h3 style="margin-top: 20px;">Telemetry Log</h3>
<div class="log-window" id="log">
<p>> Awaiting connection to Flash 3.7 socket...</p>
<p>> Status: Dormant.</p>
</div>
</div>
</div>
<script>
const initBtn = document.getElementById('init-btn');
const petriDish = document.getElementById('petri-dish');
const logWindow = document.getElementById('log');
let audioCtx;
let isRunning = false;
let sporeInterval;
const jargon = [
"Analyzing localized nutrient deprivation...",
"Flash 3.7 detected macro-fluctuation in bio-mass.",
"Translating topological routing into acoustic dissonance...",
"Slime mold avoiding tech stock depreciation zone.",
"Arbitrage opportunity found in oat-flake cluster 7.",
"<span class='highlight'>WARNING: Aggressive mycelial expansion in sub-prime sectors.</span>",
"Synthesizing haptic response to organic decay...",
"Micro-market crash simulated in agar substrate."
];
function logMessage(msg) {
const p = document.createElement('p');
const timestamp = new Date().toISOString().substring(11, 19);
p.innerHTML = `> [${timestamp}] ${msg}`;
logWindow.appendChild(p);
logWindow.scrollTop = logWindow.scrollHeight;
}
// Simulating Flash 3.7 Vision-to-Visual Output
function growSpores() {
const spore = document.createElement('div');
spore.classList.add('spore');
// Random positioning
const x = Math.random() * 95;
const y = Math.random() * 95;
spore.style.left = `${x}%`;
spore.style.top = `${y}%`;
petriDish.appendChild(spore);
// Trigger animation
setTimeout(() => {
spore.style.opacity = Math.random() * 0.8 + 0.2;
spore.style.transform = `scale(${Math.random() * 5 + 1})`;
}, 50);
// Generative audio tick based on position
if(audioCtx) generateBioSound(y);
// Occasional logging
if(Math.random() > 0.7) {
logMessage(jargon[Math.floor(Math.random() * jargon.length)]);
}
// Cleanup old spores to prevent DOM bloat
if(petriDish.children.length > 50) {
petriDish.removeChild(petriDish.firstChild);
}
}
// Simulating Flash 3.7 Vision-to-Audio Output via Web Audio API
function initAudio() {
audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// Create background drone
const osc = audioCtx.createOscillator();
const gain = audioCtx.createGain();
const filter = audioCtx.createBiquadFilter();
osc.type = 'sawtooth';
osc.frequency.setValueAtTime(45, audioCtx.currentTime); // Low sub drone
filter.type = 'lowpass';
filter.frequency.setValueAtTime(200, audioCtx.currentTime);
gain.gain.setValueAtTime(0, audioCtx.currentTime);
gain.gain.linearRampToValueAtTime(0.1, audioCtx.currentTime + 2); // Fade in
osc.connect(filter);
filter.connect(gain);
gain.connect(audioCtx.destination);
osc.start();
// Modulate filter based on "market data" loop
setInterval(() => {
const newFreq = 100 + Math.random() * 400;
filter.frequency.exponentialRampToValueAtTime(newFreq, audioCtx.currentTime + 1);
}, 2000);
}
function generateBioSound(yPos) {
if(!audioCtx) return;
const osc = audioCtx.createOscillator();
const gain = audioCtx.createGain();
// Map physical y-position to pitch (Simulating cross-modal translation)
const pitch = 100 + (yPos * 4);
osc.type = 'sine';
osc.frequency.setValueAtTime(pitch, audioCtx.currentTime);
gain.gain.setValueAtTime(0.05, audioCtx.currentTime);
gain.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 0.5);
osc.connect(gain);
gain.connect(audioCtx.destination);
osc.start();
osc.stop(audioCtx.currentTime + 0.5);
}
initBtn.addEventListener('click', () => {
if (!isRunning) {
isRunning = true;
initBtn.textContent = "[ LINK ACTIVE - STREAMING MULTIMODAL DATA ]";
initBtn.style.background = "var(--fungal)";
initBtn.style.color = "#000";
initBtn.style.borderColor = "var(--fungal)";
logMessage("Handshake with Flash 3.7 established.");
logMessage("Initiating organic/synthetic bridge...");
initAudio();
sporeInterval = setInterval(growSpores, 400);
} else {
isRunning = false;
initBtn.textContent = "[ INITIALIZE MULTIMODAL LINK ]";
initBtn.style.background = "var(--bg)";
initBtn.style.color = "var(--accent)";
initBtn.style.borderColor = "var(--accent)";
clearInterval(sporeInterval);
if(audioCtx) audioCtx.suspend();
logMessage("Connection severed. Biology returning to baseline.");
}
});
</script>
</body>
</html>