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:

  1. Genre nuance: "Atmospheric instrumental black metal" ≠ doom jazz + field recordings
  2. Geography: "American South" somehow includes South Dakota
  3. Time: "Modern" hip-hop includes tracks from 1998 and 25-year-old songs
  4. 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:

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.

🚀 Getting Started with NexaAPI

  1. Sign up free at nexa-api.com — no credit card required
  2. Try instantly on RapidAPI — free tier available
  3. Install the SDK: pip install nexaapi or npm install nexaapi
  4. 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]