From 16578bf175d5fc5b18732dc7c80ff64a856ceb2c Mon Sep 17 00:00:00 2001 From: DJP Date: Tue, 19 Aug 2025 10:50:47 -0400 Subject: [PATCH] Remove fallback system and add comprehensive documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Removed sound generation fallback functionality - Updated error handling to show proper music generation access errors - Added comprehensive README.md with full documentation - Included installation, usage, troubleshooting, and deployment guides - Updated UI messaging for better user experience 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 300 ++++++++++++++++++++++++ generated/audio_2025-08-19_14-34-49.mp3 | Bin 0 -> 33481 bytes generated/audio_2025-08-19_14-35-14.mp3 | Bin 0 -> 33481 bytes index.php | 47 +++- 4 files changed, 338 insertions(+), 9 deletions(-) create mode 100644 README.md create mode 100644 generated/audio_2025-08-19_14-34-49.mp3 create mode 100644 generated/audio_2025-08-19_14-35-14.mp3 diff --git a/README.md b/README.md new file mode 100644 index 0000000..c555de7 --- /dev/null +++ b/README.md @@ -0,0 +1,300 @@ +# 🎵 ElevenLabs Music Generator + +A web-based application for generating AI music using ElevenLabs' Music Generation API. This application provides both simple prompt-based music generation and advanced composition planning features. + +## 🌟 Features + +### 🎼 Two Generation Modes +- **Simple Mode**: Generate music directly from a text prompt +- **Advanced Mode**: Create detailed composition plans first, then generate music from those plans + +### 🎛️ Advanced Controls +- **Duration Control**: Set music length from 10 seconds to 5 minutes (300 seconds) +- **Composition Planning**: Generate structured plans with styles, sections, and arrangements +- **Real-time Preview**: Built-in audio player with download capability +- **Dark Mode**: Toggle between light and dark themes + +### 🔒 Enterprise Features +- **SSO Authentication**: Microsoft Azure AD integration (disabled for local development) +- **Webhook Integration**: Automatic provenance tracking for generated content +- **Auto-cleanup**: Generated files automatically deleted after 24 hours +- **Error Handling**: Comprehensive error reporting and logging + +## 📋 Requirements + +### System Requirements +- **PHP 7.4+** with cURL extension +- **Web Server** (Apache, Nginx, or PHP built-in server) +- **ElevenLabs API Key** with Music Generation access + +### ElevenLabs Subscription Requirements +- **Music Generation Access**: Requires special access and additional terms acceptance +- **Recommended**: Creator or Pro tier subscription +- **Contact**: Your ElevenLabs account team for music generation enablement + +## 🚀 Installation + +### 1. Clone the Repository +```bash +git clone https://bitbucket.org/zlalani/music-generation.git +cd music-generation +``` + +### 2. Configure API Key +Edit `config.php` and replace the API key: +```php +return [ + 'elevenlabs_api_key' => 'your-actual-api-key-here', + 'max_file_age_hours' => 24, + 'generated_files_dir' => 'generated/' +]; +``` + +### 3. Set Permissions +```bash +# Create generated files directory +mkdir -p generated/ +chmod 755 generated/ + +# Ensure PHP can write to the directory +chown www-data:www-data generated/ # On Ubuntu/Debian +# OR +chown apache:apache generated/ # On CentOS/RHEL +``` + +### 4. Local Development +For quick local testing: +```bash +# Using PHP built-in server +php -S localhost:8000 + +# Then visit: http://localhost:8000 +``` + +## 🎯 Usage Guide + +### Simple Mode +1. Select **"Simple Mode"** from the dropdown +2. Enter your music description (e.g., "Upbeat electronic dance track with driving bass") +3. Optionally set duration using the slider (0 = auto-duration) +4. Click **"Generate Music"** +5. Wait for generation (may take 30-60 seconds) +6. Play and download your generated music + +### Advanced Mode +1. Select **"Advanced Mode (with Composition Plan)"** +2. Enter your music description +3. Click **"Generate Composition Plan"** first +4. Review the generated plan (includes styles, sections, structure) +5. Click **"Generate Music"** to create audio from the plan +6. Play and download your generated music + +### Example Prompts +- **Electronic**: "Energetic EDM track with heavy bass drops and soaring synths" +- **Classical**: "Peaceful piano melody with subtle string accompaniment" +- **Ambient**: "Atmospheric soundscape with ethereal pads and gentle rain sounds" +- **Rock**: "Driving rock anthem with powerful drums and electric guitar" + +## 🔧 API Endpoints Used + +### Music Generation +- **Endpoint**: `POST https://api.elevenlabs.io/v1/music` +- **Purpose**: Generate music from prompts or composition plans +- **Parameters**: + - `prompt`: Text description (max 2000 characters) + - `music_length_ms`: Duration in milliseconds (10000-300000) + - `composition_plan`: Advanced structured plan (optional) + +### Composition Planning +- **Endpoint**: `POST https://api.elevenlabs.io/v1/music/plan` +- **Purpose**: Create detailed composition plans +- **Parameters**: + - `prompt`: Text description (max 2000 characters) + - `music_length_ms`: Duration in milliseconds (optional) +- **Note**: This endpoint doesn't consume credits but is rate-limited + +## 🏗️ Architecture + +### File Structure +``` +music-generation/ +├── index.php # Main application interface +├── config.php # Configuration settings +├── generate_plan.php # Composition plan generation endpoint +├── webhook_processor_audio.php # Webhook integration for provenance +├── generated/ # Auto-generated music files (auto-cleanup) +└── README.md # This documentation +``` + +### Key Components + +#### Authentication System +- **Microsoft SSO**: Azure AD integration for enterprise use +- **Local Override**: Disabled for development/testing +- **Session Management**: Token-based authentication + +#### Webhook Integration +- **Provenance Tracking**: Automatic logging of all generation events +- **Data Structure**: Standardized webhook payload format +- **Error Handling**: Graceful fallback if webhook fails + +#### File Management +- **Auto-naming**: Timestamped filename generation +- **Auto-cleanup**: Configurable file retention (default: 24 hours) +- **Storage**: Local filesystem with organized structure + +## 🛠️ Configuration Options + +### config.php Settings +```php +return [ + // ElevenLabs API configuration + 'elevenlabs_api_key' => 'your-api-key', + + // File management + 'max_file_age_hours' => 24, # Auto-delete after 24 hours + 'generated_files_dir' => 'generated/' # Storage directory +]; +``` + +### Webhook Configuration +The `AudioWebhookProcessor` class supports: +- Custom webhook URLs +- Configurable timeouts +- SSL verification settings +- Client/user identification +- Deliverable tracking + +## 🚨 Troubleshooting + +### Common Issues + +#### "Music generation requires additional access" +- **Cause**: ElevenLabs Music API requires special access +- **Solution**: Contact your ElevenLabs account team +- **Links**: [Music Terms](https://elevenlabs.io/music-terms) + +#### "Please configure your ElevenLabs API key" +- **Cause**: Invalid or missing API key in config.php +- **Solution**: Update config.php with valid API key + +#### "API Error (403): limited_access" +- **Cause**: API key doesn't have music generation permissions +- **Solution**: Upgrade subscription and accept music terms + +#### Files not generating +- **Check**: PHP error logs for detailed error messages +- **Verify**: Generated directory permissions (755) +- **Ensure**: Sufficient disk space available + +### Debug Mode +Enable PHP error reporting for development: +```php +// Add to top of index.php for debugging +error_reporting(E_ALL); +ini_set('display_errors', 1); +``` + +## 🔐 Security Considerations + +### API Key Protection +- Store API keys securely in config.php +- Never commit API keys to version control +- Use environment variables in production + +### File Security +- Generated files are automatically cleaned up +- No sensitive data stored in generated files +- Directory permissions properly configured + +### SSO Integration +- Microsoft Azure AD integration available +- Token-based session management +- Configurable for enterprise environments + +## 🚀 Deployment + +### Production Checklist +- [ ] Configure proper web server (Apache/Nginx) +- [ ] Set up HTTPS/SSL certificates +- [ ] Configure proper file permissions +- [ ] Enable SSO authentication +- [ ] Set up monitoring and logging +- [ ] Configure webhook endpoints +- [ ] Test music generation access +- [ ] Set up automated backups + +### Environment Variables +Consider using environment variables for sensitive config: +```php +// In config.php +return [ + 'elevenlabs_api_key' => $_ENV['ELEVENLABS_API_KEY'] ?? 'fallback-key', + // ... other settings +]; +``` + +## 📊 Monitoring & Analytics + +### Webhook Tracking +All generations are tracked via webhook with: +- Generation timestamp +- User identification +- Prompt/settings used +- File size and duration +- Success/failure status + +### File Management +- Automatic cleanup prevents disk space issues +- Configurable retention periods +- File size and generation tracking + +## 🤝 Contributing + +### Development Setup +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Test thoroughly +5. Submit a pull request + +### Code Standards +- Follow PHP PSR standards +- Comment complex functionality +- Test with both generation modes +- Verify webhook integration + +## 📄 License + +This project is proprietary software developed for Oliver Agency. All rights reserved. + +## 🆘 Support + +### For Technical Issues +- Check the troubleshooting section above +- Review PHP error logs +- Test with the provided example prompts + +### For ElevenLabs API Issues +- Contact ElevenLabs support +- Review your subscription tier +- Check API key permissions + +### For Feature Requests +- Submit issues to the repository +- Include detailed requirements +- Provide use case examples + +## 🔄 Version History + +### v1.0.0 - Initial Release +- Music generation with simple and advanced modes +- Composition plan generation +- Webhook integration for provenance tracking +- Dark mode support +- SSO authentication system +- Automatic file cleanup + +--- + +**Built with ❤️ using ElevenLabs Music Generation API** \ No newline at end of file diff --git a/generated/audio_2025-08-19_14-34-49.mp3 b/generated/audio_2025-08-19_14-34-49.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1c644a93de295315eb7ab014b1d951518e662efd GIT binary patch literal 33481 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 L92~m;uYdms*Kdr# literal 0 HcmV?d00001 diff --git a/generated/audio_2025-08-19_14-35-14.mp3 b/generated/audio_2025-08-19_14-35-14.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..46ab19eaec23381a8e141566ede2042b41ff6109 GIT binary patch literal 33481 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 k%^Fye|DL<_o^4VdE126$WoB#j- literal 0 HcmV?d00001 diff --git a/index.php b/index.php index 1f5d4ad..a4111ce 100644 --- a/index.php +++ b/index.php @@ -304,8 +304,8 @@ - -
+ + - - @@ -337,6 +337,12 @@

🎵 Music Generator

+
+ Note: ElevenLabs Music Generation requires special access and additional terms acceptance. + Contact your account team to enable music generation access. + Learn more about music terms +
+ $prompt, - 'model_id' => 'music_v1' + 'prompt' => $prompt ]; + // Only add music_length_ms if it's specified and valid (minimum 10 seconds) if (!empty($musicLengthMs) && is_numeric($musicLengthMs) && $musicLengthMs >= 10000) { $data['music_length_ms'] = (int)$musicLengthMs; } + // Don't include model_id as it defaults to music_v1 + return generateMusicRequest($url, $data, $apiKey, $error, 'ElevenLabs Music Generation', $prompt); } @@ -431,6 +439,9 @@ $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + // Log the request for debugging + error_log("Music API Request - URL: $url, Data: " . json_encode($data) . ", HTTP Code: $httpCode, Response: " . substr($response, 0, 500)); + if (curl_error($ch)) { $error = 'Connection error: ' . curl_error($ch); curl_close($ch); @@ -484,8 +495,24 @@ return false; } } else { + // Better error handling $errorResponse = json_decode($response, true); - $error = 'API Error (' . $httpCode . '): ' . ($errorResponse['detail'] ?? 'Unknown error occurred'); + if (json_last_error() === JSON_ERROR_NONE && is_array($errorResponse)) { + // Successfully parsed JSON response + if (isset($errorResponse['detail'])) { + $errorDetail = is_array($errorResponse['detail']) ? json_encode($errorResponse['detail']) : $errorResponse['detail']; + } elseif (isset($errorResponse['message'])) { + $errorDetail = is_array($errorResponse['message']) ? json_encode($errorResponse['message']) : $errorResponse['message']; + } elseif (isset($errorResponse['error'])) { + $errorDetail = is_array($errorResponse['error']) ? json_encode($errorResponse['error']) : $errorResponse['error']; + } else { + $errorDetail = json_encode($errorResponse); + } + } else { + // Raw response if JSON parsing failed + $errorDetail = substr($response, 0, 500); + } + $error = 'API Error (' . $httpCode . '): ' . $errorDetail; return false; } } @@ -622,8 +649,10 @@ // Initialize authentication on page load document.addEventListener('DOMContentLoaded', function() { - // Disable SSO for local testing - auto show protected content - showProtectedContent(); + // Disable SSO for local testing - directly show protected content + document.getElementById('login-container').style.display = 'none'; + document.getElementById('protected-content').style.display = 'block'; + document.getElementById('logout-button').style.display = 'none'; // Dark mode toggle functionality // Check for saved dark mode preference