Files
musicgen/composition-schema.toml
2025-06-23 23:54:23 -06:00

386 lines
12 KiB
TOML

# MusicGen TOML Configuration Schema
# Complete reference for all available fields and options
# ============================================================================
# METADATA SECTION
# Optional information about your composition
# ============================================================================
[metadata]
title = "My Composition" # Title of the track
artist = "Artist Name" # Your name or band name
description = "An electronic song" # Description of the composition
tags = ["electronic", "ambient", "chill"] # Genre tags or keywords
# ============================================================================
# COMPOSITION SECTION
# Core musical settings that define the overall structure
# ============================================================================
[composition]
# Musical key - can be MIDI note number (60 = C4) or note name
key = "C4" # Options: MIDI numbers 0-127 OR note names like "C4", "F#3", "Bb5"
# Scale type - defines which notes are used
scale = "major" # Options: "major", "minor", "dorian", "phrygian", "lydian",
# "mixolydian", "aeolian", "locrian", "pentatonic",
# "blues", "chromatic"
# Tempo in beats per minute
tempo = 120.0 # Range: 40.0 - 300.0 BPM
# Time signature - how many beats per measure
[composition.time_signature]
numerator = 4 # Beats per measure (1-16)
denominator = 4 # Note value for one beat (2, 4, 8, or 16)
# Composition length and complexity
measures = 32 # Number of measures (1-1000)
complexity = 0.7 # Overall complexity (0.0-1.0, default: 0.6)
harmony_density = 0.8 # How much harmony/chords (0.0-1.0, default: 0.7)
rhythmic_density = 0.6 # How busy the rhythm is (0.0-1.0, default: 0.8)
seed = 12345 # Random seed for reproducible generation (optional)
# ============================================================================
# TRACKS SECTION
# Each track is like one instrument in your band
# ============================================================================
# Example 1: Custom melody track
[[tracks]]
name = "main_melody"
instrument = "piano" # Options: "sine", "square", "sawtooth", "triangle", "noise", "piano"
volume = 0.8 # Track volume (0.0-1.0)
[tracks.pattern]
type = "custom" # Pattern type: "custom", "chord", "arpeggio", "sequence"
loop_length = 16.0 # How long before pattern repeats (in beats)
# Individual notes in the pattern
[[tracks.pattern.steps]]
time = 0.0 # When to play (in beats from start of loop)
note = "C5" # MIDI number or note name
duration = 1.5 # How long to hold the note (in beats)
velocity = 0.7 # How loud to play this note (0.0-1.0)
[[tracks.pattern.steps]]
time = 2.0
note = "E5"
duration = 1.0
velocity = 0.6
[[tracks.pattern.steps]]
time = 4.0
note = "G5"
duration = 2.0
velocity = 0.8
# Effects for this track
[[tracks.effects]]
type = "reverb"
room_size = 0.7 # Size of the reverb space (0.0-1.0)
damping = 0.5 # How much high frequencies are absorbed (0.0-1.0)
mix = 0.3 # How much effect to blend in (0.0-1.0)
[[tracks.effects]]
type = "delay"
time = 0.25 # Delay time in seconds (0.01-2.0)
feedback = 0.3 # How much delay repeats (0.0-0.95)
mix = 0.2 # How much effect to blend in (0.0-1.0)
# Example 2: Chord progression track
[[tracks]]
name = "harmony"
instrument = "sawtooth"
volume = 0.6
[tracks.pattern]
type = "chord"
loop_length = 16.0
voicing = "spread" # Options: "close", "spread", "drop2", "drop3"
octave = 3 # Which octave to play chords in (0-8)
# Chord progression
[[tracks.pattern.chord_progression]]
time = 0.0
chord = "Cmaj7" # Chord name (e.g., "C", "Am", "F#dim", "Bbmaj7")
duration = 4.0
[[tracks.pattern.chord_progression]]
time = 4.0
chord = "Am7"
duration = 4.0
[[tracks.pattern.chord_progression]]
time = 8.0
chord = "Fmaj7"
duration = 4.0
[[tracks.pattern.chord_progression]]
time = 12.0
chord = "G7"
duration = 4.0
# Effects for chord track
[[tracks.effects]]
type = "lowpass"
cutoff = 2000.0 # Cutoff frequency in Hz (20-20000)
resonance = 1.2 # Filter resonance (0.1-10.0)
# Example 3: Bass track
[[tracks]]
name = "bass"
instrument = "sine"
volume = 0.9
[tracks.pattern]
type = "custom"
loop_length = 8.0
[[tracks.pattern.steps]]
time = 0.0
note = "C2"
duration = 1.0
velocity = 0.9
[[tracks.pattern.steps]]
time = 2.0
note = "G2"
duration = 1.0
velocity = 0.8
[[tracks.pattern.steps]]
time = 4.0
note = "A2"
duration = 1.0
velocity = 0.8
[[tracks.pattern.steps]]
time = 6.0
note = "F2"
duration = 1.0
velocity = 0.9
# Bass effects
[[tracks.effects]]
type = "highpass"
cutoff = 80.0 # Remove very low frequencies
resonance = 0.7
# Example 4: Percussion track
[[tracks]]
name = "drums"
instrument = "noise"
volume = 0.7
[tracks.pattern]
type = "custom"
loop_length = 4.0
# Kick drum
[[tracks.pattern.steps]]
time = 0.0
note = "C1" # Low note for kick
duration = 0.1
velocity = 1.0
[[tracks.pattern.steps]]
time = 2.0
note = "C1"
duration = 0.1
velocity = 1.0
# Snare/hi-hat
[[tracks.pattern.steps]]
time = 1.0
note = "D4" # Higher note for snare
duration = 0.05
velocity = 0.7
[[tracks.pattern.steps]]
time = 3.0
note = "D4"
duration = 0.05
velocity = 0.7
# Drum effects
[[tracks.effects]]
type = "distortion"
drive = 1.5 # Amount of distortion (1.0-10.0)
tone = 0.6 # Tone control (0.0-1.0)
[[tracks.effects]]
type = "chorus"
rate = 1.2 # Modulation rate in Hz (0.1-10.0)
depth = 0.4 # Modulation depth (0.0-1.0)
layers = 3 # Number of chorus layers (1-8)
mix = 0.3
# ============================================================================
# SECTIONS SECTION (Optional)
# For structured compositions with different parts
# ============================================================================
[[sections]]
name = "intro"
measures = 8
tempo = 100.0 # Optional tempo change for this section
complexity = 0.3 # Lower complexity for intro
repeat = 1 # How many times to repeat this section
[[sections]]
name = "verse"
measures = 16
complexity = 0.6
repeat = 2
[[sections]]
name = "chorus"
measures = 16
tempo = 125.0 # Faster tempo for chorus
complexity = 0.8
key = "F4" # Optional key change
scale = "major" # Optional scale change
repeat = 2
[[sections]]
name = "bridge"
measures = 8
complexity = 0.9
key = "Am" # Relative minor
repeat = 1
[[sections]]
name = "outro"
measures = 8
tempo = 90.0 # Slower outro
complexity = 0.2
repeat = 1
# ============================================================================
# EXPORT SECTION
# How to save your finished composition
# ============================================================================
[export]
filename = "my_song" # Output filename (without extension)
format = "wav" # Only "wav" currently supported
sample_rate = 44100 # Options: 22050, 44100, 48000, 96000
bit_depth = 24 # Options: 16, 24, 32
stereo = true # true for stereo, false for mono
max_duration = 180.0 # Maximum length in seconds (optional)
# Optional: Generate variations of your composition
[export.variations]
count = 3 # Number of variations to generate
vary_complexity = true # Vary the complexity between versions
vary_rhythm = true # Vary the rhythmic patterns
vary_harmony = false # Vary the chord progressions
vary_tempo = false # Vary the tempo
# ============================================================================
# EFFECT TYPES REFERENCE
# Complete list of all available effects and their parameters
# ============================================================================
# FILTERS
# [[tracks.effects]]
# type = "lowpass" # Removes high frequencies (makes sound warmer/duller)
# cutoff = 1000.0 # Frequency cutoff in Hz (20-20000)
# resonance = 1.0 # Emphasis at cutoff frequency (0.1-10.0)
# [[tracks.effects]]
# type = "highpass" # Removes low frequencies (makes sound thinner/brighter)
# cutoff = 100.0 # Frequency cutoff in Hz (20-20000)
# resonance = 1.0 # Emphasis at cutoff frequency (0.1-10.0)
# TIME-BASED EFFECTS
# [[tracks.effects]]
# type = "delay" # Echo effect
# time = 0.25 # Delay time in seconds (0.01-2.0)
# feedback = 0.3 # How much delay feeds back (0.0-0.95)
# mix = 0.3 # Wet/dry mix (0.0-1.0)
# [[tracks.effects]]
# type = "reverb" # Spatial reverb
# room_size = 0.5 # Size of reverb space (0.0-1.0)
# damping = 0.5 # High frequency absorption (0.0-1.0)
# mix = 0.3 # Wet/dry mix (0.0-1.0)
# [[tracks.effects]]
# type = "chorus" # Thickening/modulation effect
# rate = 1.0 # Modulation rate in Hz (0.1-10.0)
# depth = 0.5 # Modulation depth (0.0-1.0)
# layers = 3 # Number of voices (1-8)
# mix = 0.3 # Wet/dry mix (0.0-1.0)
# DISTORTION
# [[tracks.effects]]
# type = "distortion" # Hard clipping distortion
# drive = 2.0 # Amount of distortion (1.0-10.0)
# tone = 0.5 # Tone control (0.0-1.0, 0=dark, 1=bright)
# LO-FI EFFECTS
# [[tracks.effects]]
# type = "vinyl" # Vinyl crackle and surface noise
# intensity = 0.5 # Crackle intensity (0.0-1.0)
# frequency = 0.5 # Crackle frequency (0.0-1.0)
# mix = 0.3 # Wet/dry mix (0.0-1.0)
# [[tracks.effects]]
# type = "tape" # Tape saturation and warmth
# drive = 2.0 # Saturation amount (1.0-10.0)
# warmth = 0.7 # Warmth/color (0.0-1.0)
# mix = 0.5 # Wet/dry mix (0.0-1.0)
# [[tracks.effects]]
# type = "bitcrusher" # Digital degradation
# bit_depth = 8.0 # Bit depth reduction (1.0-16.0)
# sample_rate_reduction = 2.0 # Sample rate reduction factor (1.0-10.0)
# mix = 0.5 # Wet/dry mix (0.0-1.0)
# ============================================================================
# INSTRUMENT TYPES REFERENCE
# ============================================================================
# instrument = "sine" # Pure sine wave - smooth, warm, flute-like
# instrument = "square" # Square wave - classic video game sound, punchy
# instrument = "sawtooth" # Sawtooth wave - bright, buzzy, good for leads
# instrument = "triangle" # Triangle wave - mellow, soft, like filtered square
# instrument = "noise" # White noise - for percussion and texture
# instrument = "piano" # Natural piano with harmonics
# ============================================================================
# PATTERN TYPES REFERENCE
# ============================================================================
# type = "custom" # Specify exact notes and timing
# type = "chord" # Play chord progressions
# type = "arpeggio" # Arpeggiate chords (play notes one after another)
# type = "sequence" # Step sequencer patterns
# ============================================================================
# CHORD NAMES REFERENCE
# ============================================================================
# Basic triads: "C", "Dm", "E", "F#", "Bb"
# Seventh chords: "Cmaj7", "Dm7", "E7", "F#m7b5", "Bbmaj7"
# Extended chords: "C9", "Dm11", "E13"
# Altered chords: "C7#11", "Dm7b5", "E7alt"
# Diminished/Augmented: "Cdim", "Caug", "C°7", "C+7"
# ============================================================================
# NOTE NAMES REFERENCE
# ============================================================================
# Format: [Note][Accidental][Octave]
# Notes: C, D, E, F, G, A, B
# Accidentals: # (sharp), b (flat), ♯, ♭
# Octaves: 0-9 (C4 = middle C = MIDI 60)
# Examples: "C4", "F#3", "Bb5", "A0", "G9"
# MIDI equivalents:
# C4 = 60, C#4 = 61, D4 = 62, D#4 = 63, E4 = 64, F4 = 65
# F#4 = 66, G4 = 67, G#4 = 68, A4 = 69, A#4 = 70, B4 = 71
# Add/subtract 12 for different octaves