AMCS Producer Notes Generator
Creates comprehensive production notes that define arrangement structure, hook placement, instrumentation details, per-section dynamics, and mix parameters aligned with style specifications.
When to Use
Invoke this skill after PLAN and STYLE generation to create production notes. Runs in parallel with LYRICS node and feeds into COMPOSE.
Input Contract
inputs:
- name: sds_producer
type: amcs://schemas/producer-notes-1.0.json
required: true
description: Producer notes entity from SDS with user preferences
- name: plan
type: amcs://schemas/plan-1.0.json
required: true
description: Section order and duration targets
- name: style
type: amcs://schemas/style-1.0.json
required: true
description: Musical style for alignment
- name: seed
type: integer
required: true
description: Determinism seed (use seed+3 for this node)
Output Contract
outputs:
- name: producer_notes
type: amcs://schemas/producer-notes-1.0.json
description: |
Complete production spec with:
- structure: Section arrangement string
- hooks: Hook count and placement
- instrumentation: Additional instrument notes
- section_meta: Per-section tags and durations
- mix: LUFS, space, stereo width parameters
Determinism Requirements
- Seed:
run_seed + 3 for any stochastic section tag selection
- Temperature: 0.2 if LLM used for production recommendations
- Top-p: 0.8
- Retrieval: None (blueprint and style are local)
- Hashing: Hash final producer_notes JSON for provenance
Constraints & Policies
- Structure MUST match
plan.section_order
- Per-section
target_duration_sec MUST sum to within ±30s of sds.constraints.duration_sec
- Section names in
section_meta MUST exist in structure
- Hook count (
hooks) MUST be ≥1 for genres requiring memorable elements
- Instrumentation MUST NOT conflict with style instrumentation
- Per-section tags MUST NOT conflict with global style tags
- If
hooks = 0, log warning about memorability risk
Implementation Guidance
Step 1: Build Structure String
- Extract
plan.section_order
- Format as hyphen-separated string:
"Intro–Verse–PreChorus–Chorus–..."
- Store in
producer_notes.structure
- Validate all sections from plan are included
Step 2: Determine Hook Count and Placement
- Read
sds_producer.hooks as base count
- If
plan.evaluation_targets.hook_density exists:
- Calculate recommended hooks:
num_chorus_sections * 1.5
- Use max(sds_hooks, recommended_hooks)
- If hooks < 1 and genre requires hooks (Pop, Hip-Hop), log warning
- Store final count in
producer_notes.hooks
Step 3: Expand Instrumentation
- Copy
style.instrumentation as base
- Add
sds_producer.instrumentation if provided
- Remove duplicates
- For each section in
plan.section_order:
- Determine section-specific instruments from blueprint production guidelines
- Example: "Bridge" often features minimal instrumentation
- Add to
section_meta[section].tags as instrument tags
Step 4: Generate Per-Section Metadata
For each section in structure:
Determine Tags:
- Load blueprint production guidelines for section type
- Example guidelines:
- Intro: ["instrumental", "low energy", "atmospheric"]
- Verse: ["storytelling", "moderate energy"]
- PreChorus: ["build-up", "rising energy", "add percussion"]
- Chorus: ["anthemic", "full instrumentation", "hook-forward"]
- Bridge: ["minimal", "dramatic shift", "breakdown"]
- Outro: ["fade-out", "reflective"]
- Merge with
sds_producer.section_meta[section].tags if provided
- Validate no conflicts with global style tags
Set Duration:
- Use
sds_producer.section_meta[section].target_duration_sec if provided
- Otherwise calculate proportionally from
sds.constraints.duration_sec
- Store in
section_meta[section].target_duration_sec
Store Section Metadata:
{
"section_meta": {
"Intro": {
"tags": ["instrumental", "low energy"],
"target_duration_sec": 10
},
"Chorus": {
"tags": ["anthemic", "hook-forward", "full instrumentation"],
"target_duration_sec": 25
}
}
}
Step 5: Define Mix Parameters
LUFS Target:
- Default: -12.0 LUFS (modern streaming standard)
- Adjust for genre:
- Electronic/Hip-Hop: -9.0 to -11.0 (louder)
- Jazz/Classical: -14.0 to -16.0 (more dynamic range)
- Use
sds_producer.mix.lufs if provided
Space/Reverb:
- Map from style mood:
- "intimate" → "dry"
- "epic" → "lush"
- "vintage" → "vintage tape"
- Use
sds_producer.mix.space if provided
Stereo Width:
- Default: "normal"
- "anthemic" energy → "wide"
- "intimate" mood → "narrow"
- Use
sds_producer.mix.stereo_width if provided
Store in producer_notes.mix
Step 6: Validate and Return
- Validate structure matches plan section order
- Check section duration sum:
abs(sum - duration_sec) ≤ 30
- Ensure all
section_meta keys exist in structure
- Validate against
amcs://schemas/producer-notes-1.0.json
- Compute SHA-256 hash
- Return producer_notes with hash metadata
Examples
Example 1: Christmas Pop Production
Input:
{
"sds_producer": {
"structure": "",
"hooks": 2,
"instrumentation": ["sleigh bells"],
"section_meta": {
"Chorus": {"tags": ["crowd-chant"]}
},
"mix": {"lufs": -12.0, "space": "lush"}
},
"plan": {
"section_order": ["Intro", "Verse", "PreChorus", "Chorus", "Bridge", "Chorus"]
},
"style": {
"energy": "anthemic",
"instrumentation": ["brass", "upright bass", "handclaps"],
"mood": ["upbeat", "cheeky"]
},
"seed": 45
}
Output:
{
"structure": "Intro–Verse–PreChorus–Chorus–Bridge–Chorus",
"hooks": 2,
"instrumentation": ["brass", "upright bass", "handclaps", "sleigh bells"],
"section_meta": {
"Intro": {
"tags": ["instrumental", "low energy", "sleigh bells"],
"target_duration_sec": 10
},
"Verse": {
"tags": ["storytelling", "moderate energy"],
"target_duration_sec": 30
},
"PreChorus": {
"tags": ["build-up", "handclaps", "rising energy"],
"target_duration_sec": 15
},
"Chorus": {
"tags": ["anthemic", "hook-forward", "full instrumentation", "crowd-chant"],
"target_duration_sec": 25
},
"Bridge": {
"tags": ["minimal", "dramatic shift", "brass feature"],
"target_duration_sec": 20
}
},
"mix": {
"lufs": -12.0,
"space": "lush",
"stereo_width": "wide"
},
"_hash": "jkl012...",
"_total_duration": 175
}
Common Pitfalls
- Structure Mismatch: Not matching plan section order breaks composition
- Duration Overflow: Section durations summing >30s beyond target causes rendering issues
- Missing Sections: Not including section_meta for all sections in structure
- Tag Conflicts: Per-section tags conflicting with global style tags
- Zero Hooks: Setting hooks=0 for hook-dependent genres fails validation
- Invalid LUFS: Using LUFS values outside reasonable range (-20 to -6)
- Instrumentation Duplication: Not deduplicating combined instrument lists
1---2name: amcs-producer-notes-generator3description: Generate production notes defining song structure, hooks, instrumentation hints, per-section tags, and mix parameters. Aligns with style spec and blueprint production guidelines. Use when creating arrangement, dynamics, and audio engineering guidance for composition and rendering.4---5
6# AMCS Producer Notes Generator
7
8Creates comprehensive production notes that define arrangement structure, hook placement, instrumentation details, per-section dynamics, and mix parameters aligned with style specifications.
9
10## When to Use
11
12Invoke this skill after PLAN and STYLE generation to create production notes. Runs in parallel with LYRICS node and feeds into COMPOSE.
13
14## Input Contract
15
16```yaml
17inputs:
18 - name: sds_producer
19 type: amcs://schemas/producer-notes-1.0.json
20 required: true
21 description: Producer notes entity from SDS with user preferences
22 - name: plan
23 type: amcs://schemas/plan-1.0.json
24 required: true
25 description: Section order and duration targets
26 - name: style
27 type: amcs://schemas/style-1.0.json
28 required: true
29 description: Musical style for alignment
30 - name: seed
31 type: integer
32 required: true
33 description: Determinism seed (use seed+3 for this node)
34```
35
36## Output Contract
37
38```yaml
39outputs:
40 - name: producer_notes
41 type: amcs://schemas/producer-notes-1.0.json
42 description: |
43 Complete production spec with:
44 - structure: Section arrangement string
45 - hooks: Hook count and placement
46 - instrumentation: Additional instrument notes
47 - section_meta: Per-section tags and durations
48 - mix: LUFS, space, stereo width parameters
49```
50
51## Determinism Requirements
52
53- **Seed**: `run_seed + 3` for any stochastic section tag selection
54- **Temperature**: 0.2 if LLM used for production recommendations
55- **Top-p**: 0.8
56- **Retrieval**: None (blueprint and style are local)
57- **Hashing**: Hash final producer_notes JSON for provenance
58
59## Constraints & Policies
60
61- Structure MUST match `plan.section_order`
62- Per-section `target_duration_sec` MUST sum to within ±30s of `sds.constraints.duration_sec`
63- Section names in `section_meta` MUST exist in `structure`
64- Hook count (`hooks`) MUST be ≥1 for genres requiring memorable elements
65- Instrumentation MUST NOT conflict with style instrumentation
66- Per-section tags MUST NOT conflict with global style tags
67- If `hooks = 0`, log warning about memorability risk
68
69## Implementation Guidance
70
71### Step 1: Build Structure String
72
731. Extract `plan.section_order`
742. Format as hyphen-separated string: `"Intro–Verse–PreChorus–Chorus–..."`
753. Store in `producer_notes.structure`
764. Validate all sections from plan are included
77
78### Step 2: Determine Hook Count and Placement
79
801. Read `sds_producer.hooks` as base count
812. If `plan.evaluation_targets.hook_density` exists:
82 - Calculate recommended hooks: `num_chorus_sections * 1.5`
83 - Use max(sds_hooks, recommended_hooks)
843. If hooks < 1 and genre requires hooks (Pop, Hip-Hop), log warning
854. Store final count in `producer_notes.hooks`
86
87### Step 3: Expand Instrumentation
88
891. Copy `style.instrumentation` as base
902. Add `sds_producer.instrumentation` if provided
913. Remove duplicates
924. For each section in `plan.section_order`:
93 - Determine section-specific instruments from blueprint production guidelines
94 - Example: "Bridge" often features minimal instrumentation
95 - Add to `section_meta[section].tags` as instrument tags
96
97### Step 4: Generate Per-Section Metadata
98
99For each section in `structure`:
100
1011. **Determine Tags**:
102 - Load blueprint production guidelines for section type
103 - Example guidelines:
104 - Intro: ["instrumental", "low energy", "atmospheric"]
105 - Verse: ["storytelling", "moderate energy"]
106 - PreChorus: ["build-up", "rising energy", "add percussion"]
107 - Chorus: ["anthemic", "full instrumentation", "hook-forward"]
108 - Bridge: ["minimal", "dramatic shift", "breakdown"]
109 - Outro: ["fade-out", "reflective"]
110 - Merge with `sds_producer.section_meta[section].tags` if provided
111 - Validate no conflicts with global style tags
112
1132. **Set Duration**:
114 - Use `sds_producer.section_meta[section].target_duration_sec` if provided
115 - Otherwise calculate proportionally from `sds.constraints.duration_sec`
116 - Store in `section_meta[section].target_duration_sec`
117
1183. **Store Section Metadata**:
119 ```json
120 {
121 "section_meta": {
122 "Intro": {
123 "tags": ["instrumental", "low energy"],
124 "target_duration_sec": 10
125 },
126 "Chorus": {
127 "tags": ["anthemic", "hook-forward", "full instrumentation"],
128 "target_duration_sec": 25
129 }
130 }
131 }
132 ```
133
134### Step 5: Define Mix Parameters
135
1361. **LUFS Target**:
137 - Default: -12.0 LUFS (modern streaming standard)
138 - Adjust for genre:
139 - Electronic/Hip-Hop: -9.0 to -11.0 (louder)
140 - Jazz/Classical: -14.0 to -16.0 (more dynamic range)
141 - Use `sds_producer.mix.lufs` if provided
142
1432. **Space/Reverb**:
144 - Map from style mood:
145 - "intimate" → "dry"
146 - "epic" → "lush"
147 - "vintage" → "vintage tape"
148 - Use `sds_producer.mix.space` if provided
149
1503. **Stereo Width**:
151 - Default: "normal"
152 - "anthemic" energy → "wide"
153 - "intimate" mood → "narrow"
154 - Use `sds_producer.mix.stereo_width` if provided
155
1564. Store in `producer_notes.mix`
157
158### Step 6: Validate and Return
159
1601. Validate structure matches plan section order
1612. Check section duration sum: `abs(sum - duration_sec) ≤ 30`
1623. Ensure all `section_meta` keys exist in `structure`
1634. Validate against `amcs://schemas/producer-notes-1.0.json`
1645. Compute SHA-256 hash
1656. Return producer_notes with hash metadata
166
167## Examples
168
169### Example 1: Christmas Pop Production
170
171**Input**:
172```json
173{
174 "sds_producer": {
175 "structure": "",
176 "hooks": 2,
177 "instrumentation": ["sleigh bells"],
178 "section_meta": {
179 "Chorus": {"tags": ["crowd-chant"]}
180 },
181 "mix": {"lufs": -12.0, "space": "lush"}
182 },
183 "plan": {
184 "section_order": ["Intro", "Verse", "PreChorus", "Chorus", "Bridge", "Chorus"]
185 },
186 "style": {
187 "energy": "anthemic",
188 "instrumentation": ["brass", "upright bass", "handclaps"],
189 "mood": ["upbeat", "cheeky"]
190 },
191 "seed": 45
192}
193```
194
195**Output**:
196```json
197{
198 "structure": "Intro–Verse–PreChorus–Chorus–Bridge–Chorus",
199 "hooks": 2,
200 "instrumentation": ["brass", "upright bass", "handclaps", "sleigh bells"],
201 "section_meta": {
202 "Intro": {
203 "tags": ["instrumental", "low energy", "sleigh bells"],
204 "target_duration_sec": 10
205 },
206 "Verse": {
207 "tags": ["storytelling", "moderate energy"],
208 "target_duration_sec": 30
209 },
210 "PreChorus": {
211 "tags": ["build-up", "handclaps", "rising energy"],
212 "target_duration_sec": 15
213 },
214 "Chorus": {
215 "tags": ["anthemic", "hook-forward", "full instrumentation", "crowd-chant"],
216 "target_duration_sec": 25
217 },
218 "Bridge": {
219 "tags": ["minimal", "dramatic shift", "brass feature"],
220 "target_duration_sec": 20
221 }
222 },
223 "mix": {
224 "lufs": -12.0,
225 "space": "lush",
226 "stereo_width": "wide"
227 },
228 "_hash": "jkl012...",
229 "_total_duration": 175
230}
231```
232
233## Common Pitfalls
234
2351. **Structure Mismatch**: Not matching plan section order breaks composition
2362. **Duration Overflow**: Section durations summing >30s beyond target causes rendering issues
2373. **Missing Sections**: Not including section_meta for all sections in structure
2384. **Tag Conflicts**: Per-section tags conflicting with global style tags
2395. **Zero Hooks**: Setting hooks=0 for hook-dependent genres fails validation
2406. **Invalid LUFS**: Using LUFS values outside reasonable range (-20 to -6)
2417. **Instrumentation Duplication**: Not deduplicating combined instrument lists