Music
Root Cause
sakurasounds.mp3
SAKURA SOUNDS
Audio Tools for Second Life®

Where music meets
Second Life®.

by Rika Sakura · SX Creations

Browser-based audio tools built for Second Life® musicians and enthusiasts. Split any audio file into SL-ready OGG chunks using the exact BeanOS algorithm — no server, no upload, just results.

Everything you need to upload music to SL.

✂️
Audio Splitter
Drop any audio file. Produces numbered .ogg chunks + a single ZIP download, ready for SL bulk upload.
📋
Notecard Builder
Paste your chunk UUIDs and generate a properly formatted BeanOS notecard ready to drop into your SL jukebox.
📐
Technical Guide
The real math behind segmentedCuts() — SL format rules, the while-loop algorithm, ffmpeg flags, and notecard format.
🌸
BeanOS Tribute
A heartfelt thank you to B E A N (moo.boo) — whose incredible work made this all possible.
🎧
Root Cause
Music, releases, streaming links and everything about the artist behind Sakura Sounds.
⚖️
Legal & Copyright
Compliance with Second Life® TOS and copyright law. Know your rights and responsibilities before uploading music.

Built for the SL music community.

Sakura Sounds is a free set of audio tools created by Rika Sakura of SX Creations for the Second Life® music community. Everything runs entirely in your browser — your files never leave your device.

The audio splitter replicates the exact algorithm used by BeanOS — dividing audio into equal chunks using multiples of 10, with a 29.5 second threshold — producing numbered .ogg files identical to what BeanOS would have produced.

All tools are provided free of charge, with no registration required.

Common questions.

No — never. Everything runs entirely inside your browser. Your audio file is decoded and processed locally on your device. Nothing is sent to any server, cloud service, or third party. Once you close the tab, nothing is retained.
Any format your browser can decode — typically mp3, wav, ogg, flac, m4a, and aac. The splitter uses the Web Audio API to decode the file, so support depends on your browser. Chrome and Edge support the widest range of formats.
Second Life® accepts both WAV and OGG, but WAV has a 10-second maximum duration while OGG allows up to 30 seconds. Using OGG means fewer chunks per song — a 3-minute track needs 10 OGG chunks at 18 seconds each, but would need 18+ WAV chunks at under 10 seconds each. Fewer chunks means fewer uploads and a simpler notecard.
The BeanOS algorithm uses a 29.5 second threshold, not 30. A 5-minute (300 second) song divided by 10 gives exactly 30.0 seconds per chunk — which is still greater than 29.5, so the algorithm skips to the next multiple of 10 (20 chunks at 15 seconds each). See the Guide tab for the full while-loop explanation.
No. Uploading copyrighted music without the rights holder's permission violates Second Life®'s Terms of Service and copyright law. You must own the rights, have a proper licence, or use music that is in the public domain or released under a Creative Commons licence that permits your use. See the Legal page for full details.
It's the duration of each chunk in seconds (e.g. 22.5). Your SL jukebox script uses this value to know when to stop playing one chunk and start the next. After uploading your chunks, paste this value into your script or notecard exactly as shown — do not round it.
Always upload in numeric order starting from 0.ogg. In the SL viewer go to Build → Upload → Bulk, select all files, and make sure they are sorted by name so 0.ogg is first, 1.ogg is second, and so on. The UUIDs you collect must be stored in the same order in your sl_uuids string.
No. Sakura Sounds is an independent project by Rika Sakura / SX Creations. The splitter algorithm is based on the original open-source BeanOS code by B E A N (moo.boo), used with credit and gratitude. Sakura Sounds has no affiliation with Linden Lab or Second Life® beyond being a tool made for their platform.
Second Life® plays audio in mono regardless of whether the file is stereo — the viewer collapses stereo to mono during playback. Splitting in mono means smaller file sizes, faster uploads, and identical results to what you'd hear in SL. The splitter downmixes all channels to mono automatically before encoding.
Yes. The splitter handles any duration by calculating the correct number of chunks automatically. A 10-minute song produces more chunks than a 3-minute song, but the math is the same — the algorithm finds the right multiple of 10 so every chunk stays under 29.5 seconds. The only practical limit is your browser's memory for decoding very large files.
No. Sakura Sounds requires no account, no registration, and no login — ever. Every tool runs entirely in your browser. Nothing is stored on any server.
🎵
Drop audio file here
or click to browse · mp3, wav, ogg, flac, m4a, aac
songLength
Math.floor(duration)
clipLength
sl_cliplength
Chunks
files to upload
Each chunk
seconds
while-loop trace — songLength ÷ increment until ≤ 29.5 s
incrementsongLength ÷ increment≤ 29.5?
Chunks
0
Clip Length
Status
Song details
Copy the exact value shown in the Splitter — do not round it.
BeanOS picks from 6 vinyl textures at random. Leave blank to use the same behaviour.
Chunk UUIDs
UUIDs entered: 0
After bulk uploading in SL, copy each UUID from the upload confirmation in order. One UUID per line.
Generated notecard

Copy this text, then in Second Life® create a new notecard and paste it in.

Fill in the fields on the left to generate your notecard...
sl_uuids string

Pipe-separated UUID string for your jukebox script's sl_uuids variable.

UUIDs will appear here...
How to create the notecard in SL
  1. Open your inventory in the SL viewer
  2. Click + Create → New Note
  3. Select all text in the note (Ctrl+A) and delete it
  4. Paste the generated notecard text (Ctrl+V)
  5. Save the note and rename it to your song title
  6. Drop the notecard into your jukebox script object

What Second Life® accepts

Max duration
<30s
29.99 s works, 30.0 fails
Max samples
1.32M
30 × 44,100
Sample rate
44.1kHz
Exactly — no exceptions
Channels
Mono
Stereo auto-downmixed
Format
OGG
Vorbis via Corrade
Threshold
29.5s
BeanOS safety margin

segmentedCuts() — exact source

This is the verbatim logic from include/ytdl.js. Copied directly from the file — not a guess.

let songLength = Math.floor(metadata.format.duration);
let clipLength = songLength;
if(clipLength => 29.5) {   // ← BUG: => is arrow fn, not >=
    let increment = 0;     // always enters (harmless)
    while(clipLength > 29.5) {
        increment += 10;
        clipLength = songLength / increment;
    }
}
Step 1   songLength = Math.floor( rawDuration )
Step 2   while ( clipLength > 29.5 ) :   increment += 10,   clipLength = songLength ÷ increment
Result   increment equal chunks · each clipLength seconds
Threshold: 29.5 s · Divisor: always a multiple of 10 · All chunks identical duration

At a glance

PropertyValue
Source functionytdl.js → segmentedCuts()
Duration usedMath.floor(duration) — decimal part discarded
Threshold29.5 s — clipLength must be at or below this
Divisor stepMultiples of 10 only: 10, 20, 30, 40…
Split typeEqual — all chunks identical duration
Output formatOGG Vorbis (libvorbis -q:a 10), mono
Output filenames0.ogg, 1.ogg, 2.ogg… (zero-indexed)
sl_cliplengthThe clipLength value (e.g. 22.5)
sl_uuidsuuid0|uuid1|uuid2|… (pipe-separated, trailing pipe)
Last chunk checksegmentedValidation() deletes last file if < 1.0 s

The SL notecard BeanOS generates

=========================================================
Song Title Here
592650a0-06cf-e00a-f3ab-28330fa85209   ← texture UUID (random from 6)
22.5                                     ← sl_cliplength
uuid-of-chunk-0
uuid-of-chunk-1
... one UUID per line per chunk
🌸
BeanOS · by B E A N (moo.boo)
August 2023 — February 2025 · Second Life® · ~270,000 songs uploaded
~270k
Songs uploaded
~5M
OGG chunks created
18
Months of service
Free
Always free

BeanOS was not just a tool. It was an act of generosity — a free service built with care, maintained through countless hours, and offered openly to the Second Life® music community without asking for anything in return.

Beanie built something remarkable: a full pipeline that could take any YouTube link, download the audio, remove silence, normalize volume, split it into equal OGG chunks using a clever while-loop algorithm, upload each chunk to Second Life® via a Corrade bot, generate a properly formatted notecard, and deliver the entire package to a user's inventory — automatically, reliably, and completely free of charge.

At its peak, BeanOS processed around 1,500 songs per day. Over 18 months it quietly became essential infrastructure for the SL music community — jukeboxes, music systems, clubs, and private collections all built on the foundation Beanie created.

The service ran until February 2025, when the bot account was permanently banned by Linden Lab — not through any wrongdoing, but through the unpredictable nature of automated systems. Beanie faced the 50,000-song inventory limit bug, YouTube's constant attempts to block downloads, and the relentless pressure of maintaining a free public service, and did so with grace and dedication until the very end.

"The source code, the math, the algorithm, the architecture — all of it is preserved here. Not because BeanOS is gone, but because great work deserves to be remembered." — Sakura Sounds, in tribute

This website, the splitter tool, and everything here exists because of Beanie's work. The algorithm this site runs is her algorithm. The notecard format this site documents is her format. The understanding of how Second Life® handles sound assets came from her documentation and her code.

Thank you, Beanie. Truly. The Second Life® music community is richer for everything you built. 🌸

🌸🌸🌸🌸🌸Five sakura out of five.

The code lives on

The full BeanOS source code is preserved on GitHub, open for anyone who wants to study it, run their own instance, or build on top of it.

View on GitHub ↗ Download ZIP
Root Cause
Root Cause · Rika Sakura in SL · SX Creations
Club Music Electronic Underground Producer Vandalism Musique

Root Cause is a multifaceted artist whose journey spans gaming, streaming, art, and music. The name "Root Cause" is inspired by episode 13 of Person of Interest season 1, where the character "Root" first appears — symbolizing deep connections and impactful influence. The surname "Cause" reflects the artist's role as a catalyst in all their pursuits.

Passionate about gaming and streaming, Root Cause engages with a vibrant community while venturing into music that reflects diverse interests, driven by a commitment to exploring new creative paths.

As A&R of Vandalism Label Group, Root Cause is dedicated to discovering talent, shaping releases, and fostering collaboration across the underground electronic music scene.

Root Cause thrives on creativity, leaving a mark across multiple domains. For all social media links and more, visit linktr.ee/ProjectRoot ↗

🎵 桜の余韻 (Sakura no Yoin) is the theme of this site — playing in the corner player below left.
🌸 Latest Release
桜の余韻 (Sakura no Yoin · Echo of Sakura)
Root Cause · 2026
Original Mix
Extended Vocal Mix
Extended Dub Mix

B E A N — moo.boo

The audio splitting algorithm this site runs is her algorithm. The notecard format this site documents is her format. BeanOS ran from August 2023 to February 2025, processing over 270,000 songs for the Second Life® music community — entirely free of charge.

Source code preserved at github.com/tooolz/SL-BeanOS ↗

Design & BuildRika Sakura · SX Creations
ArtistRoot Cause · Vandalism Label Group
Music theme桜の余韻 (Sakura no Yoin) · Root Cause
OGG Encoderhiguma/ogg-vorbis-encoder-js
ZIPJSZip — Stuk
FontsNoto Serif JP · DM Sans · Space Mono — Google Fonts
PlatformSecond Life® — Linden Research, Inc.

This page is not linked anywhere. If you found it, you were curious enough to look — and that's exactly the kind of person this site was made for. 🌸

Secrets found this session: 0 / 22