BeatBlocks Documentation
Create and experience generative music on Bitcoin
Introduction
BeatBlocks is a protocol for creating and experiencing generative music directly on the Bitcoin blockchain. It enables musicians, producers, and developers to create dynamic, interactive musical compositions that can be inscribed as NFTs and played directly from the blockchain.
The protocol uses a deterministic generation algorithm with a seed-based random number generator to create unique but reproducible musical arrangements from a set of audio stems and template rules.
Key Features
Generative Audio
Create dynamic compositions with deterministic generation using seed values for reproducible arrangements.
Layer System
Organize audio stems with groups and mutex categories to control how layers interact and combine.
Audio Processing
Built-in audio processing with compressors, limiters, and stereo panning for professional sound quality.
Getting Started
Creating a BeatBlock JSONCreate JSON
The core of every BeatBlock is a JSON file that defines the stems, generation parameters, and playback settings.Define stems, generation parameters, and playback settings in JSON format.
{
"details": {
"title": "Midnight Voyage",
"author": "RareScrilla",
"bpm": 128,
"imgId": "<INSCRIPTION_ID>"
},
"generationConfig": {
"seed": "0x3f7a912e",
"groups": ["drums", "bass", "melody", "fx"],
"mutexes": ["percussion", "basslines", "leads"]
},
"layers": [
{
"id": "kick_drum",
"name": "Kick Drum",
"loopLength": 2,
"path": "/content/<INSCRIPTION_ID>",
"volume": 1,
"loop": true,
"alignment": "start",
"groups": ["drums"],
"mutex": ["percussion"]
}
]
}
Protocol Steps
Create BeatBlock JSON
Structure your audio stems with properties like loop settings, groups, and mutex categories in the BeatBlock JSON format.
{
"details": {
"title": "Midnight Voyage",
"author": "RareScrilla",
"bpm": 128
},
"layers": [
{
"id": "kick_drum",
"name": "Kick Drum",
"loopLength": 2,
"path": "/content/<INSCRIPTION_ID>",
"volume": 1,
"loop": true,
"groups": ["drums"],
"mutex": ["percussion"]
}
]
}
Design Generation Rules
Define generation parameters with seed values and constraints for group and mutex categories.
{
"generationConfig": {
"seed": "0x3f7a912e",
"groups": ["drums", "bass", "melody", "fx"],
"mutexes": ["percussion", "basslines", "leads"]
}
}
Set Audio Properties
Configure audio properties including volume, looping, and alignment for each stem.
{
"layers": [
{
"id": "synth_pad",
"name": "Synth Pad",
"loopLength": 8,
"path": "/content/<INSCRIPTION_ID>",
"volume": 0.7,
"loop": true,
"alignment": "end",
"groups": ["melody"],
"mutex": ["leads"]
}
]
}
Inscribe Your Composition
Inscribe your BeatBlock JSON to the blockchain to create a permanent, playable musical composition.
# Command to inscribe to Bitcoin
ord wallet inscribe beatblock.json \
--fee-rate 10 \
--content-type application/json