Apple's AI Playlist Is Bad at Music — Here's How Developers Can Build It Better (Free API)
Published: March 29, 2026 | Source: The Verge
🎵 Apple Music AI Fail of the Day
User: "Atmospheric instrumental black metal to write to." Apple: serves doom jazz and field recordings.
Apple Music just launched its AI Playlist Playground feature, and the reviews are... not great.
Here's a real exchange from The Verge's review:
Apple Music: "What do you want to hear?"
User: "Atmospheric instrumental black metal to write to."
Apple Music: serves up three metal songs with vocals, a field recording, an ambient electronic track, and a piece of doom jazz.
Doom jazz. For atmospheric black metal. 🤦
It gets worse. When asked for "kid-friendly modern hip hop," Apple's AI included explicit content. Not exactly preschool material. When asked for "modern ambient black metal from the American South," it suggested a band from South Dakota. (South Dakota is not the American South.)
The failure isn't just embarrassing — it's instructive. Apple, with all its resources, is struggling with something developers can actually build better themselves. Today, I'll show you how.
What Apple Got Wrong
Apple's Playlist Playground fails on multiple dimensions:
- Genre nuance: "Atmospheric instrumental black metal" ≠ doom jazz + field recordings
- Geography: "American South" somehow includes South Dakota
- Time: "Modern" hip-hop includes tracks from 1998 and 25-year-old songs
- Content filtering: "Kid-friendly" content that is decidedly not kid-friendly
The core problem? Apple's AI doesn't understand context — the subtle interplay of genre, mood, era, and intent that makes music recommendations feel human.
Why AI Music Understanding Is Hard
Music is deeply contextual. "Atmospheric black metal" isn't just a genre tag — it's a mood, a tempo range, a production aesthetic, a cultural context. Getting this right requires:
- Semantic understanding of genre relationships (black metal ≠ doom jazz, even if both are "dark")
- Temporal awareness (modern = last 5 years, not 1998)
- Content classification beyond simple profanity filters
- Geographic knowledge (South Dakota is not the American South)
These are solvable problems. And as a developer, you have access to the same AI models that can crack them — at a fraction of the cost of building your own music service.
What If You Could Build Your Own?
Here's the thing: you don't need Apple's infrastructure to build a smarter music experience. With NexaAPI, you can access 50+ AI models — including audio generation, TTS, and multimodal models — starting at $0.003 per call.
💡 The Approach
Use LLMs to understand nuanced music requests with explicit constraints. Pass genre, era, mood, and content requirements directly. No more doom jazz surprises.
Python Tutorial: AI Music Generation with NexaAPI
# Install: pip install nexaapi
# Get your free API key: https://nexa-api.com
from nexaapi import NexaAPI
client = NexaAPI(api_key='YOUR_API_KEY')
# Generate atmospheric instrumental music
# (Unlike Apple, we specify exactly what we want)
response = client.audio.generate(
model='music-gen-v1', # Check nexa-api.com/models for latest
prompt='atmospheric instrumental black metal, dark, brooding, no vocals, reverb-heavy guitars, perfect for writing',
duration=30 # seconds
)
# Save the output
with open('my_atmospheric_track.mp3', 'wb') as f:
f.write(response.audio_data)
print(f'Track generated! Cost: ~$0.003')
print(f'URL: {response.audio_url}')Building a Smart Playlist Generator
from nexaapi import NexaAPI
import json
client = NexaAPI(api_key='YOUR_API_KEY')
def generate_smart_playlist(mood: str, genre: str, era: str = "2020s",
kid_friendly: bool = False):
"""
Generate a playlist with proper context understanding.
Unlike Apple's AI, we pass explicit constraints.
"""
response = client.chat.completions.create(
model='claude-3-5-sonnet',
messages=[{
"role": "user",
"content": f"""Create a playlist of 10 songs for:
Mood: {mood}
Genre: {genre}
Era: {era}
Kid-friendly: {kid_friendly}
Return JSON with: title, description, songs (list of artist + track).
Be strict about era and content requirements."""
}]
)
return json.loads(response.choices[0].message.content)
# Test it with Apple's failing prompts
playlist = generate_smart_playlist(
mood="atmospheric, dark, focused",
genre="instrumental black metal",
era="2010s-2020s",
kid_friendly=False
)
print(f"Playlist: {playlist['title']}")
for song in playlist['songs']:
print(f" - {song['artist']} — {song['track']}")Bonus: AI Voice Narration for Your Playlists
# Add AI-narrated playlist intros — something Apple definitely doesn't do
response = client.audio.tts(
model='tts-v1',
text='Now playing: Atmospheric black metal for deep focus and creative writing. No doom jazz, we promise.',
voice='deep_narrator'
)
with open('playlist_intro.mp3', 'wb') as f:
f.write(response.audio_data)JavaScript Tutorial
// Install: npm install nexaapi
import NexaAPI from 'nexaapi';
const client = new NexaAPI({ apiKey: 'YOUR_API_KEY' });
// Generate atmospheric music
async function generateAtmosphericTrack(prompt) {
const response = await client.audio.generate({
model: 'music-gen-v1',
prompt: prompt,
duration: 30
});
console.log(`Track generated! URL: ${response.audioUrl}`);
console.log('Cost: ~$0.003');
return response;
}
// Build a context-aware playlist generator
async function buildSmartPlaylist(request) {
const { mood, genre, era = '2020s', kidFriendly = false } = request;
const response = await client.chat.completions.create({
model: 'claude-3-5-sonnet',
messages: [{
role: 'user',
content: `Create a playlist for: ${mood} ${genre} from the ${era}.
Kid-friendly: ${kidFriendly}.
Return 10 songs as JSON. Be strict about era and content.`
}]
});
return JSON.parse(response.choices[0].message.content);
}
// Test it
const playlist = await buildSmartPlaylist({
mood: 'atmospheric, focused',
genre: 'instrumental black metal',
era: '2010s-2020s'
});
console.log('Playlist:', playlist.title);
playlist.songs.forEach(song => {
console.log(` ${song.artist} — ${song.track}`);
});
// Generate a custom track for the vibe
await generateAtmosphericTrack(
'atmospheric instrumental black metal, dark and brooding, no vocals, reverb-heavy'
);What Developers Can Build (That Apple Can't)
Apple is constrained by its existing music catalog. You're not.
- Mood-based music generator: Generate original tracks that exactly match a mood description — no catalog limitations
- Genre-aware playlist curator: Use LLMs to understand nuanced genre requests, then generate or recommend accordingly
- Kid-safe content filter: Build proper content classification before serving any music
- Atmospheric work music generator: Infinite, royalty-free background music generated to spec
- Podcast/video background scorer: Generate custom music that fits your content's mood
🚀 Getting Started with NexaAPI
- Sign up free at nexa-api.com — no credit card required
- Try instantly on RapidAPI — free tier available
- Install the SDK:
pip install nexaapiornpm install nexaapi - Browse 50+ models at nexa-api.com/models
🐍 Python SDK (PyPI) | 📦 Node.js SDK (npm) | 🌐 nexa-api.com | 🚀 RapidAPI
Apple's Playlist Playground is in beta, and maybe it'll improve. But the core lesson stands: AI music understanding is a solved problem for developers who know how to pass the right context. You don't need to wait for Apple to figure it out.
Build it yourself. It'll cost you $0.003 per generation and about 20 minutes of your time.
Source: Apple's AI Playlist Playground is bad at music — The Verge
Questions? Email: [email protected]