SplitWav is a decentralized royalty distribution engine for independent musicians and producers. Upload your split sheet, deploy it as a smart contract, and every time money hits the contract — producers, songwriters, featured artists, and engineers get paid automatically. No labels skimming off the top. No "we'll sort it out later." Just math.
Every day, independent artists release music and shake hands on splits:
"60/40, right?" "Yeah bro, I got you."
Then the money comes in. And the calls stop getting answered.
In the Nigerian music industry alone, split disputes kill more collaborations than bad beats ever could. Producers wait months for their cut. Songwriters get forgotten. Featured artists get promises instead of payments.
SplitWav makes splits enforceable. Not by lawyers — by code.
┌─────────────────────┐
│ Revenue Source │
│ (DSP, Sync, Shows) │
└──────────┬──────────┘
│
USDC deposit
│
▼
┌─────────────────────┐
│ │
│ SplitWav Contract │
│ │
│ ┌───────────────┐ │
│ │ Split Sheet │ │
│ │ │ │
│ │ Artist: 50% │ │
│ │ Producer: 30% │ │
│ │ Writer: 15% │ │
│ │ Engineer: 5% │ │
│ └───────────────┘ │
│ │
└──┬───┬───┬───┬──────┘
│ │ │ │
▼ ▼ ▼ ▼
Auto-distributed to
each collaborator's
wallet instantly
Step 1 — The lead artist creates a SplitWav contract for a track or project, adding collaborators and their percentage splits.
Step 2 — All collaborators sign the contract on-chain, locking in the agreement. No one can change splits after everyone signs.
Step 3 — Revenue from any source (streaming payouts, sync licenses, merch, show fees) is sent to the contract address.
Step 4 — The contract automatically distributes funds to each collaborator based on their agreed percentage. No delays, no disputes, no "I forgot."
// ── Track Split Agreement ────────────────────────
TrackSplit {
track_id: String, // unique identifier for the track
title: String, // "OBT (One Big Transaction)"
lead_artist: Address, // who created the split
collaborators: Vec<Collaborator>,
status: SplitStatus, // Draft | PendingSigs | Active | Frozen
total_distributed: i128, // lifetime earnings distributed
created_at: u64,
}
Collaborator {
wallet: Address,
role: String, // "Producer", "Songwriter", "Featured Artist"
split_bps: u32, // basis points (3000 = 30%)
has_signed: bool, // on-chain signature confirmation
total_received: i128, // lifetime earnings received
}
// ── Split Rules ──────────────────────────────────
// • All splits must total exactly 10,000 bps (100%)
// • Minimum split: 100 bps (1%)
// • Maximum collaborators per track: 10
// • Once all parties sign, splits are immutable
// • Lead artist can void a draft before all signatures// ── Artist Functions ─────────────────────────────
fn create_split(title: String, collaborators: Vec<CollaboratorInput>) -> u32;
fn void_draft(split_id: u32); // only before all sign
// ── Collaborator Functions ───────────────────────
fn sign_split(split_id: u32); // confirm agreement
fn reject_split(split_id: u32); // decline and void
// ── Revenue Functions ────────────────────────────
fn deposit(split_id: u32, amount: i128); // send revenue to split
fn distribute(split_id: u32); // trigger payout
fn auto_distribute(split_id: u32); // deposit + distribute
// ── View Functions ───────────────────────────────
fn get_split(split_id: u32) -> TrackSplit;
fn get_my_splits(wallet: Address) -> Vec<TrackSplit>;
fn get_earnings(split_id: u32, wallet: Address) -> i128;
fn get_pending_balance(split_id: u32) -> i128;SplitWav isn't just a contract — it's a full platform for managing music money.
For Artists:
- Create split agreements for individual tracks, EPs, or albums
- Invite collaborators via wallet address or shareable link
- Track lifetime earnings per track in a clean dashboard
- Export payment history for tax and accounting
For Producers & Writers:
- See all your active splits in one place
- Get notified when revenue is deposited
- Verify you're getting the right percentage — it's all on-chain
- Build a verifiable track record of collaborations
For Labels & Distributors:
- Integrate SplitWav via API to auto-route royalty payments
- Reduce payment disputes and support tickets
- Offer transparent splits as a feature to your roster
| Layer | Technology |
|---|---|
| Smart Contracts | Rust, Soroban SDK |
| Frontend | Next.js 14, TypeScript, Tailwind CSS |
| Backend | NestJS, PostgreSQL, TypeORM |
| Payments | USDC on the network |
| Auth | Wallet connect + email-based onboarding |
| Notifications | Email + in-app (webhook support for labels) |
splitwav/
│
├── contracts/
│ ├── split-core/ # Main royalty split contract
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ ├── split.rs # Split creation & management
│ │ │ ├── distribution.rs # Revenue distribution logic
│ │ │ ├── signing.rs # Multi-party signature flow
│ │ │ └── storage.rs # On-chain state
│ │ └── Cargo.toml
│ │
│ └── split-registry/ # Index of all splits (discovery)
│
├── app/
│ ├── app/ # Next.js app router
│ │ ├── dashboard/ # Artist dashboard
│ │ ├── splits/ # Split management pages
│ │ ├── track/[id]/ # Individual track view
│ │ └── api/ # API routes
│ ├── components/
│ │ ├── SplitCreator.tsx # Split sheet builder UI
│ │ ├── CollaboratorList.tsx
│ │ ├── EarningsChart.tsx
│ │ └── SignatureFlow.tsx
│ └── lib/
│ ├── contract.ts # Soroban contract client
│ └── wallet.ts # Wallet connection utils
│
├── backend/
│ ├── src/
│ │ ├── modules/
│ │ │ ├── tracks/ # Track metadata
│ │ │ ├── notifications/ # Email & webhook alerts
│ │ │ └── analytics/ # Earnings analytics
│ │ └── services/
│ └── migrations/
│
└── docs/
├── for-artists.md
├── for-producers.md
├── api-reference.md
└── label-integration.md
# Clone
git clone https://github.com/your-org/splitwav.git && cd splitwav
# Build contracts
cd contracts && cargo build --target wasm32-unknown-unknown --release
# Run frontend
cd ../app && npm install && npm run dev
# Run backend
cd ../backend && npm install && npm run start:devsoroban contract deploy \
--wasm target/wasm32-unknown-unknown/release/split_core.wasm \
--source artist-wallet \
--rpc-url https://soroban-testnet.stellar.org \
--network-passphrase "Test SDF Network ; September 2015"- Split contract architecture & design
- Multi-party signature flow
- Revenue distribution engine
- Frontend split builder UI
- Artist dashboard with earnings analytics
- Email notifications for deposits & signatures
- Label/distributor API integration
- Album-level splits (parent-child contracts)
- ISRC metadata linking
- Mobile app
- Mainnet launch
Music people and code people — we need both.
- Fork it
- Branch it (
git checkout -b feat/your-thing) - Build it
- Test it (
cargo test) - PR it
Read CONTRIBUTING.md for the full rundown.
MIT — See LICENSE
SplitWav — Split fair. Get paid. Keep making music.