Initial commit

This commit is contained in:
2025-06-20 18:52:55 -06:00
commit 9e3bf41d61
18 changed files with 8429 additions and 0 deletions

231
examples/bliss.json Normal file
View File

@ -0,0 +1,231 @@
{
"metadata": {
"title": "Bliss",
"artist": "Atridad Lahiji",
"description": "A chill sample track."
},
"composition": {
"key": 60,
"scale": "minor",
"tempo": 85.0,
"time_signature": {
"numerator": 4,
"denominator": 4
},
"measures": 18
},
"tracks": [
{
"name": "deep_bass",
"instrument": "sine",
"volume": 0.7,
"pattern": {
"type": "custom",
"steps": [
{ "time": 0.0, "note": "C2", "duration": 0.75, "velocity": 0.9 },
{ "time": 1.0, "note": "C2", "duration": 0.75, "velocity": 0.8 },
{ "time": 2.0, "note": "G1", "duration": 0.75, "velocity": 0.85 },
{ "time": 3.0, "note": "G1", "duration": 0.75, "velocity": 0.8 }
],
"loop_length": 4.0
},
"effects": [
{
"type": "lowpass",
"cutoff": 400.0,
"resonance": 1.8
}
]
},
{
"name": "sub_bass",
"instrument": "square",
"volume": 0.5,
"pattern": {
"type": "custom",
"steps": [
{ "time": 0.5, "note": "C3", "duration": 0.25, "velocity": 0.6 },
{ "time": 1.5, "note": "Eb3", "duration": 0.25, "velocity": 0.6 },
{ "time": 2.5, "note": "G3", "duration": 0.25, "velocity": 0.6 },
{ "time": 3.5, "note": "F3", "duration": 0.25, "velocity": 0.6 }
],
"loop_length": 4.0
},
"effects": [
{
"type": "lowpass",
"cutoff": 800.0,
"resonance": 2.0
}
]
},
{
"name": "lofi_kick",
"instrument": "sine",
"volume": 0.6,
"pattern": {
"type": "custom",
"steps": [
{ "time": 0.0, "note": "C1", "duration": 0.1, "velocity": 1.0 },
{ "time": 1.0, "note": "C1", "duration": 0.1, "velocity": 0.8 },
{ "time": 2.0, "note": "C1", "duration": 0.1, "velocity": 0.9 },
{ "time": 3.0, "note": "C1", "duration": 0.1, "velocity": 0.7 }
],
"loop_length": 4.0
},
"effects": [
{
"type": "lowpass",
"cutoff": 200.0,
"resonance": 1.0
},
{
"type": "distortion",
"drive": 0.3,
"tone": 0.2
}
]
},
{
"name": "lofi_snare",
"instrument": "noise",
"volume": 0.3,
"pattern": {
"type": "custom",
"steps": [
{ "time": 1.0, "note": "E3", "duration": 0.05, "velocity": 0.7 },
{ "time": 3.0, "note": "E3", "duration": 0.05, "velocity": 0.8 }
],
"loop_length": 4.0
},
"effects": [
{
"type": "highpass",
"cutoff": 200.0,
"resonance": 1.0
},
{
"type": "lowpass",
"cutoff": 600.0,
"resonance": 1.5
}
]
},
{
"name": "lofi_hihat",
"instrument": "noise",
"volume": 0.2,
"pattern": {
"type": "custom",
"steps": [
{ "time": 0.5, "note": "A4", "duration": 0.02, "velocity": 0.4 },
{ "time": 1.5, "note": "A4", "duration": 0.02, "velocity": 0.4 },
{ "time": 2.5, "note": "A4", "duration": 0.02, "velocity": 0.5 },
{ "time": 3.5, "note": "A4", "duration": 0.02, "velocity": 0.3 }
],
"loop_length": 4.0
},
"effects": [
{
"type": "highpass",
"cutoff": 1000.0,
"resonance": 1.0
},
{
"type": "lowpass",
"cutoff": 2000.0,
"resonance": 1.0
}
]
},
{
"name": "warm_pad",
"instrument": "sine",
"volume": 0.2,
"pattern": {
"type": "chord",
"chord_progression": [
{ "time": 0.0, "chord": "Cm7", "duration": 4.0 },
{ "time": 4.0, "chord": "Fm7", "duration": 4.0 },
{ "time": 8.0, "chord": "Gm7", "duration": 4.0 },
{ "time": 12.0, "chord": "Cm7", "duration": 4.0 }
],
"voicing": "spread",
"octave": 3
},
"effects": [
{
"type": "lowpass",
"cutoff": 600.0,
"resonance": 1.2
},
{
"type": "reverb",
"room_size": 0.8,
"damping": 0.8,
"mix": 0.4
}
]
},
{
"name": "peaceful_melody",
"instrument": "sine",
"volume": 0.9,
"pattern": {
"type": "custom",
"steps": [
{ "time": 16.0, "note": "Eb4", "duration": 1.0, "velocity": 0.6 },
{ "time": 17.5, "note": "G4", "duration": 1.0, "velocity": 0.5 },
{ "time": 19.0, "note": "C5", "duration": 1.5, "velocity": 0.7 },
{ "time": 21.0, "note": "Bb4", "duration": 0.75, "velocity": 0.5 },
{ "time": 22.0, "note": "Ab4", "duration": 1.0, "velocity": 0.6 },
{ "time": 23.5, "note": "F4", "duration": 1.25, "velocity": 0.5 },
{ "time": 25.0, "note": "G4", "duration": 1.0, "velocity": 0.6 },
{ "time": 26.5, "note": "Bb4", "duration": 0.75, "velocity": 0.5 },
{ "time": 27.5, "note": "D5", "duration": 1.0, "velocity": 0.7 },
{ "time": 29.0, "note": "C5", "duration": 1.5, "velocity": 0.6 },
{ "time": 31.0, "note": "G4", "duration": 1.0, "velocity": 0.5 },
{ "time": 32.5, "note": "Eb4", "duration": 1.5, "velocity": 0.6 },
{ "time": 34.5, "note": "C5", "duration": 1.0, "velocity": 0.7 },
{ "time": 36.0, "note": "G4", "duration": 2.0, "velocity": 0.5 },
{ "time": 38.5, "note": "Eb4", "duration": 1.0, "velocity": 0.4 },
{ "time": 40.0, "note": "C5", "duration": 1.5, "velocity": 0.6 },
{ "time": 42.0, "note": "Bb4", "duration": 0.75, "velocity": 0.5 },
{ "time": 43.0, "note": "Ab4", "duration": 1.0, "velocity": 0.6 },
{ "time": 44.5, "note": "F4", "duration": 1.25, "velocity": 0.5 },
{ "time": 46.0, "note": "G4", "duration": 1.0, "velocity": 0.6 },
{ "time": 47.5, "note": "Bb4", "duration": 0.75, "velocity": 0.5 },
{ "time": 48.5, "note": "D5", "duration": 1.0, "velocity": 0.7 },
{ "time": 50.0, "note": "C5", "duration": 1.5, "velocity": 0.6 },
{ "time": 52.0, "note": "G4", "duration": 1.0, "velocity": 0.5 },
{ "time": 53.5, "note": "Eb4", "duration": 1.5, "velocity": 0.6 },
{ "time": 55.5, "note": "C5", "duration": 1.0, "velocity": 0.7 },
{ "time": 57.0, "note": "G4", "duration": 2.0, "velocity": 0.5 },
{ "time": 60.0, "note": "Eb4", "duration": 1.0, "velocity": 0.4 },
{ "time": 62.0, "note": "C5", "duration": 2.0, "velocity": 0.6 },
{ "time": 65.0, "note": "G4", "duration": 2.0, "velocity": 0.5 },
{ "time": 68.0, "note": "Eb4", "duration": 4.0, "velocity": 0.4 }
],
"loop_length": 72.0
},
"effects": [
{
"type": "lowpass",
"cutoff": 2000.0,
"resonance": 1.1
},
{
"type": "reverb",
"room_size": 0.9,
"damping": 0.7,
"mix": 0.5
}
]
}
],
"export": {
"filename": "bliss",
"format": "wav",
"stereo": true
}
}

View File

@ -0,0 +1,666 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://example.com/schemas/composition-config.json",
"title": "Generate electronic music without AI",
"description": "JSON schema for configuring musicgen",
"type": "object",
"properties": {
"metadata": {
"type": "object",
"description": "Metadata about the composition",
"properties": {
"title": {
"type": "string",
"description": "Composition title",
"default": ""
},
"artist": {
"type": "string",
"description": "Artist or composer name",
"default": ""
},
"description": {
"type": "string",
"description": "Description of the composition",
"default": ""
},
"tags": {
"type": "array",
"description": "Tags or genres",
"items": {
"type": "string"
},
"default": []
}
},
"additionalProperties": false
},
"composition": {
"type": "object",
"description": "Global composition settings",
"required": ["key", "scale", "tempo", "measures"],
"properties": {
"key": {
"description": "Musical key",
"oneOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 127,
"description": "MIDI note number (60 = C4)"
},
{
"type": "string",
"pattern": "^[A-G][#b♯♭]?[0-9]$",
"description": "Note name (e.g., 'C4', 'F#3', 'Bb5')"
}
]
},
"scale": {
"type": "string",
"description": "Scale type",
"enum": [
"major",
"minor",
"dorian",
"phrygian",
"lydian",
"mixolydian",
"aeolian",
"locrian",
"pentatonic",
"blues",
"chromatic"
]
},
"tempo": {
"type": "number",
"description": "Tempo in beats per minute (BPM)",
"minimum": 40,
"maximum": 300
},
"time_signature": {
"type": "object",
"properties": {
"numerator": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"description": "Number of beats per measure"
},
"denominator": {
"type": "integer",
"enum": [2, 4, 8, 16],
"description": "Note value that gets one beat"
}
},
"required": ["numerator", "denominator"],
"additionalProperties": false,
"default": {
"numerator": 4,
"denominator": 4
}
},
"measures": {
"type": "integer",
"description": "Number of measures in the composition",
"minimum": 1,
"maximum": 1000
},
"complexity": {
"type": "number",
"description": "Musical complexity level (0.0 = simple, 1.0 = complex)",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.6
},
"harmony_density": {
"type": "number",
"description": "Harmonic density (0.0 = sparse, 1.0 = dense)",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.7
},
"rhythmic_density": {
"type": "number",
"description": "Rhythmic density (0.0 = sparse, 1.0 = dense)",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.8
},
"seed": {
"type": "integer",
"description": "Random seed for reproducible generation",
"minimum": 0,
"maximum": 18446744073709551615
}
},
"additionalProperties": false
},
"tracks": {
"type": "array",
"description": "Individual track definitions",
"items": {
"type": "object",
"required": ["name", "instrument", "pattern"],
"properties": {
"name": {
"type": "string",
"description": "Track name (e.g., 'bass', 'kick', 'hihat', 'pad')"
},
"instrument": {
"type": "string",
"description": "Instrument/waveform type",
"enum": ["sine", "square", "sawtooth", "triangle", "noise"]
},
"volume": {
"type": "number",
"description": "Track volume level (0.0 = silent, 1.0 = full)",
"minimum": 0.0,
"maximum": 1.0,
"default": 1.0
},
"pattern": {
"type": "object",
"description": "Pattern definition for this track",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "Pattern type",
"enum": ["custom", "chord", "arpeggio", "sequence"]
},
"loop_length": {
"type": "number",
"description": "Pattern loop length in beats",
"minimum": 0.1,
"maximum": 64.0,
"default": 4.0
}
},
"allOf": [
{
"if": {
"properties": {
"type": {
"const": "custom"
}
}
},
"then": {
"properties": {
"steps": {
"type": "array",
"description": "Individual pattern steps",
"items": {
"type": "object",
"required": ["time", "note", "duration", "velocity"],
"properties": {
"time": {
"type": "number",
"description": "Time in beats when note starts",
"minimum": 0.0
},
"note": {
"description": "Note to play",
"oneOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 127,
"description": "MIDI note number"
},
{
"type": "string",
"pattern": "^[A-G][#b♯♭]?[0-9]$",
"description": "Note name (e.g., 'C4', 'F#3')"
}
]
},
"duration": {
"type": "number",
"description": "Note duration in beats",
"minimum": 0.01,
"maximum": 16.0
},
"velocity": {
"type": "number",
"description": "Note velocity/volume (0.0 to 1.0)",
"minimum": 0.0,
"maximum": 1.0
}
},
"additionalProperties": false
}
}
},
"required": ["steps"]
}
},
{
"if": {
"properties": {
"type": {
"const": "chord"
}
}
},
"then": {
"properties": {
"chord_progression": {
"type": "array",
"description": "Chord progression steps",
"items": {
"type": "object",
"required": ["time", "chord", "duration"],
"properties": {
"time": {
"type": "number",
"description": "Time in beats when chord starts",
"minimum": 0.0
},
"chord": {
"type": "string",
"description": "Chord name (e.g., 'Cm7', 'F', 'G#maj7')"
},
"duration": {
"type": "number",
"description": "Chord duration in beats",
"minimum": 0.1,
"maximum": 16.0
}
},
"additionalProperties": false
}
},
"voicing": {
"type": "string",
"description": "Chord voicing style",
"enum": ["close", "spread", "drop2", "drop3"],
"default": "close"
},
"octave": {
"type": "integer",
"description": "Base octave for chord",
"minimum": 0,
"maximum": 8,
"default": 4
}
},
"required": ["chord_progression"]
}
}
],
"additionalProperties": false
},
"effects": {
"type": "array",
"description": "Audio effects to apply to this track",
"items": {
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "Effect type",
"enum": [
"lowpass",
"highpass",
"bandpass",
"delay",
"reverb",
"chorus",
"distortion",
"compressor"
]
}
},
"allOf": [
{
"if": {
"properties": {
"type": {
"const": "lowpass"
}
}
},
"then": {
"properties": {
"cutoff": {
"type": "number",
"description": "Cutoff frequency in Hz",
"minimum": 20,
"maximum": 20000,
"default": 1000
},
"resonance": {
"type": "number",
"description": "Resonance factor",
"minimum": 0.1,
"maximum": 10.0,
"default": 1.0
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "highpass"
}
}
},
"then": {
"properties": {
"cutoff": {
"type": "number",
"description": "Cutoff frequency in Hz",
"minimum": 20,
"maximum": 20000,
"default": 100
},
"resonance": {
"type": "number",
"description": "Resonance factor",
"minimum": 0.1,
"maximum": 10.0,
"default": 1.0
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "delay"
}
}
},
"then": {
"properties": {
"time": {
"type": "number",
"description": "Delay time in seconds",
"minimum": 0.001,
"maximum": 2.0,
"default": 0.25
},
"feedback": {
"type": "number",
"description": "Feedback amount",
"minimum": 0.0,
"maximum": 0.95,
"default": 0.3
},
"mix": {
"type": "number",
"description": "Wet/dry mix",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.3
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "reverb"
}
}
},
"then": {
"properties": {
"room_size": {
"type": "number",
"description": "Room size",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.5
},
"damping": {
"type": "number",
"description": "High frequency damping",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.5
},
"mix": {
"type": "number",
"description": "Wet/dry mix",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.3
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "chorus"
}
}
},
"then": {
"properties": {
"rate": {
"type": "number",
"description": "LFO rate in Hz",
"minimum": 0.1,
"maximum": 10.0,
"default": 1.0
},
"depth": {
"type": "number",
"description": "Modulation depth",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.5
},
"layers": {
"type": "integer",
"description": "Number of chorus layers",
"minimum": 1,
"maximum": 4,
"default": 2
},
"mix": {
"type": "number",
"description": "Wet/dry mix",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.5
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "distortion"
}
}
},
"then": {
"properties": {
"drive": {
"type": "number",
"description": "Distortion amount",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.5
},
"tone": {
"type": "number",
"description": "Tone control (0.0 = dark, 1.0 = bright)",
"minimum": 0.0,
"maximum": 1.0,
"default": 0.5
}
}
}
}
],
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"sections": {
"type": "array",
"description": "Section definitions for structured compositions",
"items": {
"type": "object",
"required": ["name", "measures"],
"properties": {
"name": {
"type": "string",
"description": "Section name (e.g., 'intro', 'verse', 'chorus', 'bridge', 'outro')"
},
"measures": {
"type": "integer",
"description": "Number of measures in this section",
"minimum": 1,
"maximum": 1000
},
"tempo": {
"type": "number",
"description": "Tempo override for this section",
"minimum": 40,
"maximum": 300
},
"key": {
"description": "Key change for this section",
"oneOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 127
},
{
"type": "string",
"pattern": "^[A-G][#b♯♭]?[0-9]$"
}
]
},
"scale": {
"type": "string",
"description": "Scale override for this section",
"enum": [
"major",
"minor",
"dorian",
"phrygian",
"lydian",
"mixolydian",
"aeolian",
"locrian",
"pentatonic",
"blues",
"chromatic"
]
},
"complexity": {
"type": "number",
"description": "Complexity override for this section",
"minimum": 0.0,
"maximum": 1.0
},
"repeat": {
"type": "integer",
"description": "Number of times to repeat this section",
"minimum": 1,
"maximum": 100,
"default": 1
}
},
"additionalProperties": false
}
},
"export": {
"type": "object",
"description": "Export settings",
"properties": {
"filename": {
"type": "string",
"description": "Output filename (without extension)",
"default": "output"
},
"format": {
"type": "string",
"description": "Export format",
"enum": ["wav", "mp3", "flac"],
"default": "wav"
},
"sample_rate": {
"type": "integer",
"description": "Sample rate in Hz",
"enum": [22050, 44100, 48000, 88200, 96000],
"default": 44100
},
"bit_depth": {
"type": "integer",
"description": "Bit depth",
"enum": [16, 24, 32],
"default": 16
},
"stereo": {
"type": "boolean",
"description": "Export in stereo (true) or mono (false)",
"default": false
},
"max_duration": {
"type": "number",
"description": "Maximum duration in seconds (null for full composition)",
"minimum": 1.0,
"maximum": 3600.0
},
"variations": {
"type": "object",
"description": "Variation generation settings",
"properties": {
"count": {
"type": "integer",
"description": "Number of variations to generate",
"minimum": 1,
"maximum": 100
},
"vary_complexity": {
"type": "boolean",
"description": "Vary complexity between variations",
"default": false
},
"vary_rhythm": {
"type": "boolean",
"description": "Vary rhythm between variations",
"default": false
},
"vary_harmony": {
"type": "boolean",
"description": "Vary harmony between variations",
"default": false
},
"vary_tempo": {
"type": "boolean",
"description": "Vary tempo between variations",
"default": false
}
},
"required": ["count"],
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"required": ["composition"],
"additionalProperties": false
}