Embeddable components for any site. No frameworks, no build steps.
Add one script tag before </body>. The component auto-injects itself.
<script src="https://cdn.lucianlabs.ca/scripts/ll-shop.js"></script>
That's it. The <ll-shop> element is created automatically. Shadow DOM isolates all styles — no CSS conflicts with your page.
| Action | Result |
|---|---|
| Page load | Widget appears bottom-right (or as orb if previously minimized) |
| Click X | Machine shrinks into a golden orb with a scale animation |
| Click orb | Machine expands back from the orb |
| Click product slot | Opens App Store link, fires gtag event if available |
| Key | Values | Purpose |
|---|---|---|
ll-shop-min | "0" / "1" | Persists minimized state |
<script src="https://cdn.lucianlabs.ca/scripts/yamabruh-notify.js"></script>
const yb = new YamaBruhNotify();
// Play a seeded ringtone (deterministic melody from the string)
yb.play('user-abc123');
// Play with options
yb.play('order-456', {
preset: 88, // 0–98, default 88 (Telephone Bell)
bpm: 160, // tempo, default 140
volume: 0.5, // 0–1, default 0.8
mode: 'jazzy' // mood — controls scale/movement palette
});
// Stop playback
yb.stop();
Each call to .play(seed) hashes the seed string into a deterministic RNG, generates a short melody (notes, rhythm, octave), renders it through the full YM2413 signal chain (2-op FM, ADSR envelopes, waveform selection, tremolo, vibrato, KSR, KSL), and plays it via the Web Audio API. Same seed + preset + mood always produces the same ringtone.
| Option | Default | Description |
|---|---|---|
preset | 88 | YM2413 preset index (0–98). 88 = Telephone Bell. |
bpm | 140 | Tempo in beats per minute |
volume | 0.8 | Master volume (0–1) |
mode | 'experimental' | Mood — selects scale pool and sequence behavior |
sampleRate | 44100 | AudioContext sample rate |
seed | null | Root seed combined with per-call seed |
Moods control which scales, intervals, and rhythms the sequence generator draws from. Set via constructor mode or per-call override.
| Mood | Character |
|---|---|
pretty | Major/pentatonic, gentle movement, resolves to root |
experimental | All scales, wide intervals, no resolution |
depressing | Minor modes, descending motion, low register |
spooky | Diminished/whole-tone, wide leaps, unsettling |
dreamy | Lydian/whole-tone, slow durations, resolves |
aggressive | Phrygian/blues, fast rhythms, low root |
exotic | Persian/Arabian/Balinese, non-Western scales |
jazzy | Dorian/bebop/blues, syncopated, resolves |
ethereal | Whole-tone/augmented, slow, spacious |
mechanical | Diminished/symmetric, repetitive, fast |
Click a button to hear the preset. Each uses a different seed string.
Mood:
| # | Name | # | Name |
|---|---|---|---|
| 0 | Piano 1 | 68 | Synth Lead |
| 18 | Vibraphone | 88 | Telephone Bell |
| 37 | Flute | 97 | Steel Drum |
| 44 | Brass Ensemble | 104 | Fireworks |
| 56 | String Ensemble | 116 | Wave |
Full preset and mood reference at yama-bruh.lucianlabs.ca/ringtones.
Drop this in <head> on any Lucian Labs site.
<script async src="https://www.googletagmanager.com/gtag/js?id=G-HJPFEY11D7"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-HJPFEY11D7');
</script>
Fire custom events with gtag('event', ...) anywhere after the snippet loads.
gtag('event', 'download_click', {
event_category: 'engagement',
event_label: 'choppa-ios'
});
| Property | Value |
|---|---|
| Measurement ID | G-HJPFEY11D7 |
| Scope | All *.lucianlabs.ca properties |