amcs-style-generator
Generate detailed style specification from SDS style entity and plan. Enforces blueprint tempo ranges, resolves tag conflicts using conflict matrix, and maximizes information density with minimal tags. Use when creating genre-specific musical identity including tempo, key, mood, instrumentation, and vocal profile.
When & Why to Use This Skill
The AMCS Style Generator is a specialized Claude skill designed to automate the creation of high-fidelity musical style specifications. It translates high-level creative plans into precise technical parameters—including genre-specific tempo ranges, keys, moods, and instrumentation—while utilizing a conflict matrix to ensure stylistic consistency. By enforcing blueprint constraints and maximizing information density with minimal tags, it provides a robust, production-ready foundation for AI-driven music composition and creative direction.
Use Cases
- Genre-Specific Identity Design: Automatically generating detailed musical profiles (vocal style, instrumentation, and mood) that strictly adhere to professional genre blueprints like 'Christmas Pop' or 'Electronic'.
- Automated Technical Validation: Ensuring musical technicality by clamping BPM to genre-appropriate ranges and aligning energy levels with tempo to prevent stylistic contradictions.
- Creative Conflict Resolution: Using a standardized conflict matrix to resolve overlapping or contradictory tags, such as preventing the simultaneous use of 'dry mix' and 'lush reverb'.
- Production-Ready Spec Generation: Streamlining the music production workflow by converting user preferences into a validated JSON specification that feeds directly into composition and arrangement engines.
- Instrumentation Optimization: Refining creative output by limiting instrumentation to the most impactful elements (max 3), ensuring a focused and professional sound profile without tag dilution.
| name | amcs-style-generator |
|---|---|
| description | Generate detailed style specification from SDS style entity and plan. Enforces blueprint tempo ranges, resolves tag conflicts using conflict matrix, and maximizes information density with minimal tags. Use when creating genre-specific musical identity including tempo, key, mood, instrumentation, and vocal profile. |
AMCS Style Generator
Creates a complete musical style specification that defines genre, tempo, key, mood, energy, instrumentation, and tags while enforcing blueprint constraints and resolving tag conflicts.
When to Use
Invoke this skill after PLAN generation to produce the style specification. This node runs in parallel with LYRICS and PRODUCER nodes and feeds into COMPOSE.
Input Contract
inputs:
- name: sds_style
type: amcs://schemas/style-1.0.json
required: true
description: Style entity from SDS containing user preferences
- name: plan
type: amcs://schemas/plan-1.0.json
required: true
description: Execution plan with section structure and targets
- name: blueprint
type: amcs://schemas/blueprint-1.0.json
required: true
description: Genre-specific rules, tempo ranges, and tag priorities
- name: seed
type: integer
required: true
description: Determinism seed (use seed+1 for this node)
Output Contract
outputs:
- name: style
type: amcs://schemas/style-1.0.json
description: |
Complete style spec with:
- genre_detail: primary, subgenres, fusions
- tempo_bpm: validated against blueprint ranges
- key: primary and modulations
- mood, energy, instrumentation, vocal_profile
- tags: conflict-free, high-weight tags from blueprint
- negative_tags: quality filters
Determinism Requirements
- Seed:
run_seed + 1for any stochastic tag selection - Temperature: 0.2 if LLM used for tag prioritization
- Top-p: 0.8
- Retrieval: None (blueprint is local)
- Hashing: Hash final style JSON for provenance
Constraints & Policies
- Tempo MUST fall within blueprint's
tempo_rangefor the primary genre - Tags MUST NOT conflict per
taxonomies/tag_conflict_matrix.json - Maximum 3 instrumentation tags to avoid dilution
- Maximum 1-2 tags per category (Era, Rhythm, Mix, Mood)
- Energy level MUST align with tempo: "anthemic" incompatible with <80 BPM
- Profanity filter applies to all text fields (mood descriptors, vocal profile)
- If
sds_style.tagsconflicts with blueprint high-priority tags, blueprint wins
Implementation Guidance
Step 1: Validate and Normalize Genre
- Extract
sds_style.genre_detail.primary - Load corresponding blueprint from
docs/hit_song_blueprint/AI/[genre]_blueprint.md - If genre not found, fallback to
general_fingerprint.md - Validate
subgenresandfusionsare compatible per blueprint - Store normalized genre in output
Step 2: Enforce Tempo Range
- Read blueprint
tempo_range(e.g., [100, 140] for Pop) - If
sds_style.tempo_bpmis single value:- Verify it falls within blueprint range
- If outside, clamp to nearest boundary and log warning
- If
sds_style.tempo_bpmis array [min, max]:- Clamp to blueprint range:
[max(min, bp_min), min(max, bp_max)]
- Clamp to blueprint range:
- Validate energy alignment:
- "anthemic" requires ≥100 BPM
- "low" requires ≤90 BPM
- Log warning if mismatch
Step 3: Select High-Weight Tags
- Load blueprint's recommended tags with weights
- Merge with
sds_style.tags - For each category (Era, Rhythm, Mix, Mood, Instrumentation):
- Select top 1-2 tags by weight
- Ensure no conflicts using
tag_conflict_matrix.json - If conflict detected, keep higher-weight tag and drop lower
- Total tag count should be ≤12 across all categories
Step 4: Resolve Tag Conflicts
- Load
taxonomies/tag_conflict_matrix.json - For each tag pair in final tag list:
- Check matrix for conflicts
- If conflict exists, drop the tag with lower blueprint weight
- Log dropped tag and reason
- Common conflicts to check:
- "whisper" vs "anthemic"
- "dry mix" vs "lush reverb"
- "1970s" vs "2020s modern production"
Step 5: Validate Instrumentation
- Limit to ≤3 instruments from
sds_style.instrumentation - Prioritize instruments mentioned in blueprint
- Remove generic instruments like "guitar" in favor of specific "acoustic guitar" or "electric guitar"
- Validate compatibility with genre (no "808s" in Classical)
Step 6: Finalize and Hash
- Assemble complete style JSON
- Validate against
amcs://schemas/style-1.0.json - Apply profanity filter to
moodandvocal_profiletext - Compute SHA-256 hash of JSON
- Return style with hash metadata
Examples
Example 1: Christmas Pop
Input:
{
"sds_style": {
"genre_detail": {"primary": "Christmas Pop", "subgenres": ["Big Band Pop"], "fusions": ["Electro Swing"]},
"tempo_bpm": [116, 124],
"key": {"primary": "C major", "modulations": ["E major"]},
"mood": ["upbeat", "cheeky", "warm"],
"energy": "anthemic",
"instrumentation": ["brass", "upright bass", "handclaps", "sleigh bells"],
"vocal_profile": "male/female duet, crooner + bright pop",
"tags": ["Era:2010s", "Rhythm:four-on-the-floor", "Mix:modern-bright", "Genre:swing", "Instr:brass"]
},
"blueprint": {
"tempo_range": [100, 140],
"recommended_tags": [
{"tag": "Era:2010s", "weight": 0.9},
{"tag": "Mix:modern-bright", "weight": 0.85},
{"tag": "Rhythm:four-on-the-floor", "weight": 0.8}
]
},
"seed": 43
}
Output:
{
"genre_detail": {
"primary": "Christmas Pop",
"subgenres": ["Big Band Pop"],
"fusions": ["Electro Swing"]
},
"tempo_bpm": [116, 124],
"time_signature": "4/4",
"key": {"primary": "C major", "modulations": ["E major"]},
"mood": ["upbeat", "cheeky", "warm"],
"energy": "anthemic",
"instrumentation": ["brass", "upright bass", "sleigh bells"],
"vocal_profile": "male/female duet, crooner + bright pop",
"tags": [
"Era:2010s",
"Rhythm:four-on-the-floor",
"Mix:modern-bright",
"Instr:brass"
],
"negative_tags": ["muddy low-end"],
"_hash": "def456...",
"_dropped_tags": [{"tag": "handclaps", "reason": "exceeds 3 instrument limit"}]
}
Common Pitfalls
- Tempo Violations: Accepting tempo outside blueprint range breaks genre authenticity
- Tag Conflicts: Not checking conflict matrix produces contradictory prompts
- Over-Specification: Including >3 instruments dilutes production focus
- Energy Mismatch: "anthemic" at 60 BPM fails validation and sounds wrong
- Blueprint Ignore: Using user tags over blueprint high-priority tags reduces hit potential
- Hash Omission: Missing provenance hash breaks determinism tracking