Open this lesson in your favourite AI. It'll walk you through the why, explain the demo, and quiz you on the try-it list.
Before you generate anything, you need a personal reference library — 20 tracks you love, with specific notes on WHY. This is not a nostalgia playlist; it's your ear-training corpus. Every AI prompt session, you'll pull a reference track from this library and prompt 'in the vein of X but with Y different' — this reference-driven prompting produces dramatically better results than vibes-based prompting. Music professionals do this reflexively; hobbyists rarely do. Ten minutes now saves a hundred hours later.
A structured library template: 20 tracks, each with genre, tempo, mood, and the ONE specific thing you love. Reference this before every session.
Use these three in order. Each builds on the one before.
In one paragraph, explain why a reference library beats a vibes-based prompt.
Walk me through why 'in the vein of X' works better than 'a sad electronic song' — the model has heard X and knows what surrounds it in latent space.
My reference library covers 6 genres. My AI music always sounds like blends of those 6. How do I intentionally break out into genres NOT in my library?
# Your reference library. Fill in your own 20; delete these placeholders.
library = [
{"track": "Cornelius — Drop", "genre": "shibuya-kei", "bpm": 105,
"mood": "playful, obsessive", "love_this": "the water-drop sample as a rhythmic element"},
{"track": "Aphex Twin — Xtal", "genre": "ambient techno", "bpm": 116,
"mood": "washed-out melancholy", "love_this": "how the pad chord shifts imperceptibly"},
{"track": "Nujabes — Aruarian Dance", "genre": "jazzy hip-hop", "bpm": 85,
"mood": "warm, contemplative", "love_this": "the harp sample against the boom-bap"},
# ... add 17 more
]
# Prompt template that uses the library
def prompt_from_reference(ref, twist: str) -> str:
r = library[ref] if isinstance(ref, int) else next((x for x in library if x["track"] == ref), None)
return f"{r['genre']}, {r['bpm']} BPM, mood: {r['mood']}, use {r['love_this']}, but {twist}"
print(prompt_from_reference("Cornelius — Drop", "add distorted breakbeats in the second half"))
python3 main.py