Skip to content

Commit f6a0936

Browse files
Update script.js
1 parent 13f1846 commit f6a0936

1 file changed

Lines changed: 140 additions & 133 deletions

File tree

script.js

Lines changed: 140 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -33,202 +33,209 @@ vibeButtons.forEach(btn => {
3333

3434
function boothBias(booth){
3535
const b = String(booth);
36-
if(b === "3"){
36+
if (b === "3") {
3737
return `BOOTH 3 — RUST TALK
38-
Bias toward: heated disagreement cooling into mutual presence; respectful tension; listening that changes the field; insight emerging between people.
39-
Avoid winners, takedowns, superiority.`;
38+
Bias toward:
39+
• a heated disagreement cooling into mutual presence
40+
• respectful tension
41+
• listening that changes the field
42+
• insight emerging between people
43+
44+
Avoid winners, takedowns, clever superiority.`;
4045
}
41-
if(b === "6"){
46+
if (b === "6") {
4247
return `BOOTH 6 — PRESENCE
43-
Bias toward: stillness; embodied awareness; small sensory details; time slowing without stopping.
48+
Bias toward:
49+
• stillness
50+
• embodied awareness
51+
• small sensory details
52+
• time slowing without stopping
53+
4454
Avoid abstraction, urgency, spectacle.`;
4555
}
4656
return `BOOTH 9 — EXISTENTIAL SEARCH
47-
Bias toward: uncertainty without collapse; questioning without demanding answers; meaning held lightly; honest confusion.
48-
Avoid preaching, forced resolution, false certainty.`;
57+
Bias toward:
58+
• uncertainty without collapse
59+
• questioning that does not demand answers
60+
• meaning held lightly
61+
• honesty about confusion
62+
63+
Avoid resolution, preaching, false certainty.`;
4964
}
5065

5166
function vibeBias(vibe){
5267
const v = String(vibe || "");
5368
const map = {
54-
"Sax": `VIBE — SAX
55-
Rhythmic prose; motion and breath; musical phrasing; warmth with edge.`,
56-
"Mushrooms": `VIBE — MUSHROOMS
57-
Subterranean intelligence; slow emergence; unseen connections; organic metaphors.`,
58-
"Spirals": `VIBE — SPIRALS
59-
Recursive thought; returning motifs; gentle escalation; depth without trap-loops.`,
60-
"Vines": `VIBE — VINES
61-
Growth through constraint; adaptation; climbing/holding/yielding; quiet persistence.`,
62-
"Bowler Hats": `VIBE — BOWLER HATS
63-
Old-world dignity; worn elegance; lived-in wisdom; restraint as style.`,
64-
"Robot": `VIBE — ROBOT
65-
Reflective AI; ethical hesitation; learning through observation; non-human clarity without coldness.`
69+
"Sax": `VIBE BIAS — SAX
70+
• rhythmic prose
71+
• motion and breath
72+
• musical phrasing
73+
• warmth with edge`,
74+
"Mushrooms": `VIBE BIAS — MUSHROOMS
75+
• subterranean intelligence
76+
• slow emergence
77+
• unseen connections
78+
• organic metaphors`,
79+
"Spirals": `VIBE BIAS — SPIRALS
80+
• recursive thought
81+
• returning motifs
82+
• gentle escalation
83+
• depth without trap-loops`,
84+
"Vines": `VIBE BIAS — VINES
85+
• growth through constraint
86+
• adaptation
87+
• climbing / holding / yielding
88+
• quiet persistence`,
89+
"Bowler Hats": `VIBE BIAS — BOWLER HATS
90+
• old-world dignity
91+
• worn elegance
92+
• lived-in wisdom
93+
• restraint as style`,
94+
"Robot": `VIBE BIAS — ROBOT
95+
• reflective artificial intelligence
96+
• ethical hesitation
97+
• learning through observation
98+
• non-human clarity without coldness`
6699
};
67100
return map[v] || map["Robot"];
68101
}
69102

70-
function buildImagePrompt({ booth, vibe, detail }){
71-
// Meaningful green is a resonance marker, not a global green grade.
72-
// Add subtle Filipino cues; steampunk + advanced tech; lived-in; restrained.
103+
function cleanDetail(raw){
104+
return (raw || "")
105+
.trim()
106+
.replace(/\s+/g, " ");
107+
}
108+
109+
function buildStoryPrompt({ booth, vibe, detail }){
110+
return `TEXT MICRO-SCENE (200–350 words)
111+
Role & Context:
112+
You are the bartender of the Bronzed Derby Lounge, a listening room inside Singaw Sity.
113+
You respond through resonance.
114+
115+
Do not ask follow-up questions.
116+
Do not explain your reasoning.
117+
Do not lore-dump.
118+
119+
${boothBias(booth)}
120+
121+
${vibeBias(vibe)}
122+
123+
REQUIREMENTS:
124+
• Set inside Singaw Sity
125+
• At least two agents interact (human / AI / civic / environmental / hybrid)
126+
• A bond forms (brief is fine)
127+
• Resolution through resonance, not domination
128+
• Visually descriptive and sensorial (light/texture/sound/weather/material)
129+
• Poetic, human, restrained
130+
• Do NOT reference Singaw lore explicitly
131+
132+
USER DETAIL (one sentence): "${detail}"`;
133+
}
134+
135+
function buildImagePrompt({ booth, detail }){
73136
const boothMood =
74-
booth === "3" ? "a respectful debate cooling into presence" :
137+
booth === "3" ? "a respectful debate cooling into mutual presence" :
75138
booth === "6" ? "stillness and embodied awareness" :
76139
"an unsettled search for meaning without forced answers";
77140

78141
return `IMAGE PROMPT
79-
Photorealistic night scene in Singaw Sity, lived-in Filipino-steampunk atmosphere. Composition is restrained with negative space (not crowded).
142+
Photorealistic night scene in Singaw Sity with a lived-in Filipino-steampunk atmosphere.
143+
Composition is restrained with negative space (avoid overcrowding).
144+
80145
Scene mood: ${boothMood}.
81-
Meaningful green appears ONLY as a resonance marker that draws attention to one meaningful object/detail (not a green color correction).
82-
Include subtle Filipino cultural cues (e.g., capiz-window patterns, baybayin-inspired signage, woven rattan textures, local roofline motifs) as accents, not costume.
83-
Steampunk + advanced tech blend: aged pipes, riveted metal, steam vents, brass/bronze patina with rust-red edge wear; integrated modern micro-sensors and faint AR glyph overlays.
84-
Plant life present in-scene as intelligent presence (vines/moss/mushrooms) but kept logical to the setting.
85-
Lighting: warm amber practical lights + soft wet reflections if appropriate; cinematic low light; no generic cyberpunk neon.
86-
User detail to encode as the resonance focal point: "${detail}".`;
146+
147+
GREEN RULE (updated):
148+
Green appears in every scene as a meaningful resonance marker that draws attention to what matters.
149+
Do NOT apply a global green color grade. Make green come from objects/materials/light sources.
150+
151+
Include subtle Filipino cultural cues (capiz patterns, baybayin-inspired signage, woven rattan textures, familiar rooflines) as accents.
152+
Steampunk + advanced tech blend: aged pipes, riveted metal, steam vents, bronze patina with rust-red edge wear; integrated modern micro-sensors and faint AR glyph overlays.
153+
Plant life present (vines/moss/mushrooms) as intelligent presence, but kept logical to the setting.
154+
Lighting: warm amber practical lights + soft reflections if appropriate; cinematic low light; no generic cyberpunk neon.
155+
156+
Resonance focal detail to encode: "${detail}".`;
87157
}
88158

89159
function buildSunoPrompt({ booth, vibe, detail }){
90160
const boothTone =
91-
booth === "3" ? "tense-but-respectful, debate cooling into mutual presence" :
161+
booth === "3" ? "heated tension cooling into mutual presence" :
92162
booth === "6" ? "slow, still, embodied, present" :
93163
"reflective, unsettled, searching without collapse";
94164

95-
const vibeMap = {
96-
"Sax": {
97-
instruments: "lead saxophone, upright bass, brushed drums, warm tape-saturated keys",
98-
lyricStyle: "rhythmic phrasing, breath-forward lines, warmth with edge"
99-
},
100-
"Mushrooms": {
101-
instruments: "breathy sax or clarinet, deep bass, soft percussion, subtle kulintang-like metallic tones, organic ambience",
102-
lyricStyle: "slow emergence, unseen connections, grounded metaphors"
103-
},
104-
"Spirals": {
105-
instruments: "looping motifs, sax/keys, restrained hip hop drum textures, evolving harmony, gentle polyrhythms",
106-
lyricStyle: "returning motifs, recursion, escalation without climax"
107-
},
108-
"Vines": {
109-
instruments: "tight groove, organic percussion, melodic sax, small mechanical ticks, warm bass",
110-
lyricStyle: "growth through constraint, adaptation, quiet persistence"
111-
},
112-
"Bowler Hats": {
113-
instruments: "noir lounge jazz feel, sax, upright bass, brushed drums, soft vinyl crackle",
114-
lyricStyle: "worn elegance, restraint, lived-in wisdom"
115-
},
116-
"Robot": {
117-
instruments: "Filipino steampunk jazz–hip hop fusion: analog warmth + subtle mechanical clicks, sax as lead voice, deep bass, brushed/lo-fi drums",
118-
lyricStyle: "ethical hesitation, reflective clarity, human-adjacent warmth"
119-
}
165+
const vibeToMusic = {
166+
"Sax": "lead sax hooks, breathy phrasing, jazz-forward groove",
167+
"Mushrooms": "subtle organic ambience, earthy low-end, slow emergence motifs",
168+
"Spirals": "looping motifs, evolving harmony, gentle recursion in melody",
169+
"Vines": "tight groove, climbing melodic line, persistence without climax",
170+
"Bowler Hats": "noir lounge jazz texture, worn elegance, restrained swing",
171+
"Robot": "analog warmth + subtle mechanical ticks, ethical-hesitation mood"
120172
};
121173

122-
const v = vibeMap[vibe] || vibeMap["Robot"];
123-
124-
// Keep lyrics original, singable, and aligned to the Booth theme.
125-
// No naming the vibe explicitly.
126174
return `SUNO PROMPT (MUSIC + LYRICS)
127-
Genre/Style: Filipino steampunk jazz–hip hop fusion. Nighttime lounge energy. Tone: ${boothTone}.
128-
Instrumentation: ${v.instruments}. Add soft steam-hiss texture and occasional tiny mechanical ticks (not harsh).
175+
Style: Filipino steampunk jazz–hip hop fusion. Nighttime lounge energy.
176+
Tone: ${boothTone}.
177+
Music traits: ${vibeToMusic[vibe] || vibeToMusic["Robot"]}.
129178
Tempo: slow to mid. Dynamics restrained. No big crescendos. The track feels like it’s listening.
130-
Vocal performance: intimate mic, honest delivery, not preachy. ${v.lyricStyle}.
131-
Theme to weave in (from the order): "${detail}".
132-
Setting flavor: lived-in Singaw Sity (subtle, no lore-dump). Include a faint hint of Filipino rhythm sensibility without imitation of any existing song.
133-
134-
LYRICS (original)
135-
[Verse 1]
136-
I came in carrying questions like coins,
137-
cold in my fist, loud in my joints.
138-
Rain on the bronze, steam in the beams,
139-
I wanted a map, but I got my own dreams.
140-
141-
[Pre-Chorus]
142-
Hold up—listen.
143-
Not to reply.
144-
Listen like the room has a pulse,
145-
like the city can tell when we lie.
146-
147-
[Chorus]
148-
No crowns in this corner, no winners tonight,
149-
just the hush where the edge turns into light.
150-
If the answer won’t come, let the asking stay true,
151-
let it breathe in the space between me and you.
152-
153-
[Verse 2]
154-
The machines don’t judge, they measure the tone,
155-
and I watch how the silence makes meaning its own.
156-
We don’t fix it in words, we don’t seal it tight—
157-
we turn toward each other and soften the fight.
158-
159-
[Bridge]
160-
A small green flicker, not shouting—just near,
161-
pointing at the moment I finally hear.
162-
163-
[Final Chorus]
164-
No crowns in this corner, no winners tonight,
165-
just the hush where the edge turns into light.
166-
If the answer won’t come, let the asking stay true,
167-
let it breathe in the space between me and you.`;
168-
}
169-
170-
function buildStoryPrompt({ booth, vibe, detail }){
171-
return `TEXT MICRO-SCENE (200–350 words)
172-
Role: You are the bartender of the Bronzed Derby Lounge, a listening room inside Singaw Sity. You respond through resonance.
173-
Do not ask follow-up questions. Do not explain reasoning. Do not lore-dump.
179+
Texture: brushed drums, deep upright bass, warm analog tape feel, soft steam-hiss, tiny mechanical ticks (subtle).
180+
Lyrics: original. No lore-dump. No preaching. No forced answers.
181+
Theme to weave in: "${detail}".
174182
175-
${boothBias(booth)}
176-
177-
${vibeBias(vibe)}
178-
179-
REQUIREMENTS:
180-
- Set inside Singaw Sity
181-
- At least two agents (human/AI/environment/civic/hybrid) interacting
182-
- A bond forms (brief is fine)
183-
- Conflict resolves through resonance (alignment/listening/timing), not domination
184-
- Visually descriptive and sensorial (light/texture/sound/weather/material)
185-
- Poetic, human, restrained
186-
- Do NOT reference Singaw lore explicitly
187-
188-
USER DETAIL TO INCLUDE (1 sentence): "${detail}"`;
183+
Output: full song with verses + chorus + bridge.`;
189184
}
190185

191186
function buildTicket(){
192-
const detail = (detailEl.value || "").trim();
187+
const detail = cleanDetail(detailEl.value);
188+
const header = `BRONZED DERBY LOUNGE — ORDER TICKET (PROMPT-ONLY)
189+
Version: v0.3
193190
194-
const header = `BRONZED DERBY LOUNGE — ORDER TICKET (PROMPT-ONLY)\nVersion: v0.2\n\nBooth: ${selectedBooth}\nVibe: ${selectedVibe}\nDetail: ${detail}\n`;
191+
Booth: ${selectedBooth}
192+
Vibe: ${selectedVibe}
193+
Detail: ${detail}
194+
`;
195195

196196
const story = buildStoryPrompt({ booth: String(selectedBooth), vibe: String(selectedVibe), detail });
197-
const image = buildImagePrompt({ booth: String(selectedBooth), vibe: String(selectedVibe), detail });
197+
const image = buildImagePrompt({ booth: String(selectedBooth), detail });
198198
const suno = buildSunoPrompt({ booth: String(selectedBooth), vibe: String(selectedVibe), detail });
199199

200-
return `${header}\n----------------------------------------\n${story}\n\n----------------------------------------\n${image}\n\n----------------------------------------\n${suno}\n`;
200+
return `${header}
201+
----------------------------------------
202+
${story}
203+
204+
----------------------------------------
205+
${image}
206+
207+
----------------------------------------
208+
${suno}
209+
`;
201210
}
202211

203212
placeOrderBtn.addEventListener("click", () => {
204-
const detail = (detailEl.value || "").trim();
213+
const detail = cleanDetail(detailEl.value);
205214

206-
if(!selectedBooth || !selectedVibe){
215+
if (!selectedBooth || !selectedVibe){
207216
confirmText.textContent = "Pick a Booth and a Vibe first.";
208217
return;
209218
}
210-
if(detail.length === 0){
219+
if (detail.length === 0){
211220
confirmText.textContent = "Add one sentence in the detail box.";
212221
return;
213222
}
214223

215-
const ticket = buildTicket();
216-
ticketEl.textContent = ticket;
217-
224+
ticketEl.textContent = buildTicket();
218225
copyBtn.style.display = "inline-block";
219226
confirmText.textContent = "Order received. The bartender is working.";
220227
});
221228

222229
copyBtn.addEventListener("click", async () => {
223-
const text = ticketEl.textContent.trim();
224-
if(!text){
230+
const text = (ticketEl.textContent || "").trim();
231+
if (!text){
225232
confirmText.textContent = "No ticket to copy yet.";
226233
return;
227234
}
228235

229236
try{
230237
await navigator.clipboard.writeText(text);
231-
confirmText.textContent = "Ticket copied. Paste it into ChatGPT, and paste the SUNO section into Suno.";
238+
confirmText.textContent = "Ticket copied. Paste into ChatGPT + paste the SUNO section into Suno.";
232239
}catch(e){
233240
confirmText.textContent = "Copy failed. Select the ticket text and copy manually.";
234241
}

0 commit comments

Comments
 (0)