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.