![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/soundstudiopro.com/private_html/utils/ |
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>SoundStudioPro - Advanced AI Music Creation Platform</title>
<meta name="description" content="Create professional, watermark-free music with AI. Generate original tracks, lyrics, and music videos for your projects.">
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
<!-- Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
/* Reset & Base Styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: 62.5%;
scroll-behavior: smooth;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
color: #1a202c;
background: #0a0a0a;
min-height: 100vh;
overflow-x: hidden;
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #1a1a1a;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(135deg, #667eea, #764ba2);
border-radius: 4px;
}
/* Container & Layout */
.container {
max-width: 140rem;
margin: 0 auto;
padding: 0 2rem;
}
/* Header */
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
background: rgba(10, 10, 10, 0.95);
backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
z-index: 1000;
padding: 2rem 0;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
display: flex;
align-items: center;
gap: 1.2rem;
text-decoration: none;
color: white;
}
.logo-icon {
font-size: 3rem;
background: linear-gradient(135deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.logo-text {
font-size: 2.4rem;
font-weight: 800;
background: linear-gradient(135deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.nav {
display: flex;
gap: 3rem;
align-items: center;
}
.nav-link {
text-decoration: none;
color: #a0aec0;
font-size: 1.6rem;
font-weight: 500;
transition: all 0.3s ease;
}
.nav-link:hover {
color: #667eea;
transform: translateY(-2px);
}
/* Hero Section */
.hero {
padding: 20rem 0 15rem;
text-align: center;
color: white;
background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0a0a0a 100%);
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse"><path d="M 10 0 L 0 0 0 10" fill="none" stroke="rgba(102,126,234,0.1)" stroke-width="0.5"/></pattern></defs><rect width="100" height="100" fill="url(%23grid)"/></svg>');
opacity: 0.3;
}
.hero-content {
max-width: 90rem;
margin: 0 auto;
position: relative;
z-index: 2;
}
.hero-badge {
display: inline-block;
background: linear-gradient(135deg, rgba(102, 126, 234, 0.2), rgba(118, 75, 162, 0.2));
color: #667eea;
padding: 1.2rem 2.4rem;
border-radius: 50px;
font-size: 1.4rem;
font-weight: 600;
margin-bottom: 3rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(102, 126, 234, 0.3);
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
.hero-title {
font-size: 7.2rem;
font-weight: 900;
line-height: 1.1;
margin-bottom: 2.4rem;
background: linear-gradient(135deg, #ffffff, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: gradientShift 3s ease-in-out infinite;
}
@keyframes gradientShift {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
.hero-subtitle {
font-size: 2.4rem;
font-weight: 400;
margin-bottom: 4rem;
opacity: 0.9;
max-width: 70rem;
margin-left: auto;
margin-right: auto;
color: #a0aec0;
}
.hero-actions {
display: flex;
gap: 2rem;
justify-content: center;
flex-wrap: wrap;
}
/* Buttons */
.btn {
display: inline-flex;
align-items: center;
gap: 1rem;
padding: 2rem 4rem;
border-radius: 16px;
font-size: 1.6rem;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
border: none;
cursor: pointer;
position: relative;
overflow: hidden;
}
.btn-primary {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 20px 50px rgba(102, 126, 234, 0.4);
}
.btn-secondary {
background: rgba(255, 255, 255, 0.1);
color: white;
border: 2px solid rgba(255, 255, 255, 0.2);
backdrop-filter: blur(10px);
}
.btn-secondary:hover {
background: rgba(255, 255, 255, 0.2);
transform: translateY(-3px);
border-color: rgba(255, 255, 255, 0.3);
}
/* Music Creation Interface */
.music-creator {
background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%);
padding: 8rem 0;
border-radius: 40px 40px 0 0;
margin-top: -4rem;
position: relative;
z-index: 10;
}
.creator-container {
max-width: 80rem;
margin: 0 auto;
}
.creator-header {
text-align: center;
margin-bottom: 6rem;
}
.creator-title {
font-size: 4.8rem;
font-weight: 700;
color: white;
margin-bottom: 2rem;
}
.creator-subtitle {
font-size: 2rem;
color: #a0aec0;
}
.creator-form {
background: rgba(255, 255, 255, 0.05);
padding: 4rem;
border-radius: 24px;
backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.form-group {
margin-bottom: 3rem;
}
.form-label {
display: block;
font-size: 1.6rem;
font-weight: 600;
color: white;
margin-bottom: 1rem;
}
.form-input,
.form-textarea,
.form-select {
width: 100%;
padding: 1.5rem 2rem;
border: 2px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
background: rgba(255, 255, 255, 0.05);
color: white;
font-size: 1.6rem;
transition: all 0.3s ease;
}
.form-input:focus,
.form-textarea:focus,
.form-select:focus {
outline: none;
border-color: #667eea;
background: rgba(255, 255, 255, 0.1);
}
.form-textarea {
min-height: 12rem;
resize: vertical;
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
.create-btn {
width: 100%;
padding: 2rem;
font-size: 1.8rem;
font-weight: 700;
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
border: none;
border-radius: 16px;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.create-btn:hover {
transform: translateY(-2px);
box-shadow: 0 15px 40px rgba(102, 126, 234, 0.4);
}
.create-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
transform: none;
}
/* Results Section */
.results-section {
margin-top: 4rem;
display: none;
}
.results-header {
text-align: center;
margin-bottom: 3rem;
}
.results-title {
font-size: 3.2rem;
font-weight: 700;
color: white;
margin-bottom: 1rem;
}
.audio-player {
background: rgba(255, 255, 255, 0.05);
padding: 3rem;
border-radius: 20px;
margin-bottom: 2rem;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.audio-player audio {
width: 100%;
border-radius: 12px;
}
.download-btn {
display: inline-flex;
align-items: center;
gap: 1rem;
padding: 1.5rem 3rem;
background: linear-gradient(135deg, #48bb78, #38a169);
color: white;
text-decoration: none;
border-radius: 12px;
font-weight: 600;
transition: all 0.3s ease;
}
.download-btn:hover {
transform: translateY(-2px);
box-shadow: 0 10px 30px rgba(72, 187, 120, 0.3);
}
/* Loading Animation */
.loading {
display: none;
text-align: center;
padding: 4rem;
}
.spinner {
width: 50px;
height: 50px;
border: 4px solid rgba(255, 255, 255, 0.1);
border-left: 4px solid #667eea;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto 2rem;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Features Section */
.features {
padding: 10rem 0;
background: #0a0a0a;
}
.section-header {
text-align: center;
margin-bottom: 8rem;
}
.section-title {
font-size: 4.8rem;
font-weight: 700;
color: white;
margin-bottom: 2rem;
}
.section-subtitle {
font-size: 2rem;
color: #a0aec0;
max-width: 60rem;
margin: 0 auto;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(35rem, 1fr));
gap: 4rem;
}
.feature-card {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02));
padding: 4rem 3rem;
border-radius: 24px;
border: 1px solid rgba(255, 255, 255, 0.1);
transition: all 0.3s ease;
text-align: center;
backdrop-filter: blur(20px);
}
.feature-card:hover {
transform: translateY(-8px);
border-color: rgba(102, 126, 234, 0.3);
box-shadow: 0 20px 60px rgba(102, 126, 234, 0.1);
}
.feature-icon {
font-size: 6rem;
margin-bottom: 2rem;
display: block;
background: linear-gradient(135deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.feature-title {
font-size: 2.4rem;
font-weight: 600;
color: white;
margin-bottom: 1.5rem;
}
.feature-description {
font-size: 1.6rem;
color: #a0aec0;
line-height: 1.6;
}
/* Pricing Section */
.pricing {
padding: 10rem 0;
background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%);
}
.pricing-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(30rem, 1fr));
gap: 4rem;
margin-top: 6rem;
}
.pricing-card {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02));
padding: 4rem 3rem;
border-radius: 24px;
border: 2px solid rgba(255, 255, 255, 0.1);
transition: all 0.3s ease;
text-align: center;
position: relative;
backdrop-filter: blur(20px);
}
.pricing-card.featured {
border-color: #667eea;
transform: scale(1.05);
}
.pricing-card:hover {
transform: translateY(-8px);
border-color: rgba(102, 126, 234, 0.3);
}
.pricing-card.featured:hover {
transform: scale(1.05) translateY(-8px);
}
.pricing-badge {
position: absolute;
top: -1.5rem;
left: 50%;
transform: translateX(-50%);
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
padding: 0.8rem 2rem;
border-radius: 20px;
font-size: 1.2rem;
font-weight: 600;
}
.pricing-title {
font-size: 2.4rem;
font-weight: 700;
color: white;
margin-bottom: 1rem;
}
.pricing-price {
font-size: 4.8rem;
font-weight: 800;
background: linear-gradient(135deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 1rem;
}
.pricing-period {
font-size: 1.6rem;
color: #a0aec0;
margin-bottom: 3rem;
}
.pricing-features {
list-style: none;
margin-bottom: 3rem;
}
.pricing-features li {
padding: 1rem 0;
font-size: 1.6rem;
color: #a0aec0;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.pricing-features li:last-child {
border-bottom: none;
}
.pricing-features li i {
color: #48bb78;
margin-right: 1rem;
}
/* CTA Section */
.cta {
padding: 10rem 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-align: center;
}
.cta-content {
max-width: 60rem;
margin: 0 auto;
}
.cta-title {
font-size: 4.8rem;
font-weight: 700;
margin-bottom: 2rem;
}
.cta-description {
font-size: 2rem;
margin-bottom: 4rem;
opacity: 0.9;
}
/* Footer */
.footer {
background: #0a0a0a;
color: white;
padding: 6rem 0 3rem;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.footer-content {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(25rem, 1fr));
gap: 4rem;
margin-bottom: 4rem;
}
.footer-section h3 {
font-size: 2rem;
font-weight: 600;
margin-bottom: 2rem;
color: #667eea;
}
.footer-section p,
.footer-section a {
font-size: 1.4rem;
color: #a0aec0;
text-decoration: none;
line-height: 1.6;
display: block;
margin-bottom: 1rem;
transition: color 0.3s ease;
}
.footer-section a:hover {
color: #667eea;
}
.footer-bottom {
border-top: 1px solid rgba(255, 255, 255, 0.1);
padding-top: 3rem;
text-align: center;
font-size: 1.4rem;
color: #718096;
}
/* Responsive Design */
@media (max-width: 768px) {
html { font-size: 56.25%; }
.hero-title { font-size: 5.6rem; }
.hero-subtitle { font-size: 2rem; }
.section-title { font-size: 3.6rem; }
.hero-actions {
flex-direction: column;
align-items: center;
}
.btn { width: 100%; max-width: 30rem; justify-content: center; }
.features-grid { grid-template-columns: 1fr; }
.pricing-grid { grid-template-columns: 1fr; }
.form-row { grid-template-columns: 1fr; }
.nav { display: none; }
}
@media (max-width: 480px) {
html { font-size: 50%; }
.hero-title { font-size: 4.8rem; }
.hero-subtitle { font-size: 1.8rem; }
.section-title { font-size: 3.2rem; }
.container { padding: 0 1.5rem; }
.creator-form { padding: 2rem; }
}
</style>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="container">
<div class="header-content">
<a href="#" class="logo">
<i class="fas fa-music logo-icon"></i>
<span class="logo-text">SoundStudioPro</span>
</a>
<nav class="nav">
<a href="#features" class="nav-link">Features</a>
<a href="#pricing" class="nav-link">Pricing</a>
<a href="admin.html" class="nav-link">Admin</a>
<a href="#create" class="btn btn-primary">Create Music</a>
</nav>
</div>
</div>
</header>
<!-- Hero Section -->
<section class="hero">
<div class="container">
<div class="hero-content">
<div class="hero-badge">🎵 Advanced AI Music Creation</div>
<h1 class="hero-title">Create Professional Music with AI</h1>
<p class="hero-subtitle">Generate studio-quality, watermark-free music tracks, lyrics, and music videos. Powered by cutting-edge AI technology that understands your creative vision.</p>
<div class="hero-actions">
<a href="#create" class="btn btn-primary">🎵 Start Creating Now</a>
<a href="#features" class="btn btn-secondary">Explore Features</a>
</div>
</div>
</div>
</section>
<!-- Music Creation Interface -->
<section id="create" class="music-creator">
<div class="container">
<div class="creator-container">
<div class="creator-header">
<h2 class="creator-title">Create Your Music</h2>
<p class="creator-subtitle">Describe your vision and let AI bring it to life</p>
</div>
<div class="creator-form">
<form id="musicForm">
<div class="form-group">
<label class="form-label">Music Type</label>
<select class="form-select" id="musicType" required>
<option value="">Select music type</option>
<option value="music">AI Music Generation</option>
<option value="lyrics">Lyrics Generation</option>
<option value="wav">WAV Conversion</option>
<option value="vocal-removal">Vocal Removal</option>
<option value="music-video">Music Video Generation</option>
<option value="extend">Track Extension</option>
</select>
</div>
<div class="form-group">
<label class="form-label">Prompt / Description</label>
<textarea class="form-textarea" id="prompt" placeholder="Describe the music you want to create. Be specific about genre, mood, instruments, tempo, etc. Example: 'An upbeat electronic dance track with heavy bass, synthesizers, and a driving beat. Should be energetic and perfect for a workout playlist.'" required></textarea>
</div>
<div class="form-row">
<div class="form-group">
<label class="form-label">Model Version</label>
<select class="form-select" id="modelVersion">
<option value="v3">v3 (Latest)</option>
<option value="v2">v2 (Stable)</option>
<option value="v1">v1 (Classic)</option>
</select>
</div>
<div class="form-group">
<label class="form-label">Duration (seconds)</label>
<input type="number" class="form-input" id="duration" min="10" max="600" value="30" required>
</div>
</div>
<button type="submit" class="create-btn" id="createBtn">
<i class="fas fa-magic"></i> Create Music
</button>
</form>
<!-- Loading Animation -->
<div class="loading" id="loading">
<div class="spinner"></div>
<p style="color: white; font-size: 1.8rem;">Creating your music... This may take 2-3 minutes.</p>
<div style="margin-top: 2rem;">
<div style="background: rgba(255,255,255,0.1); border-radius: 10px; padding: 1rem; margin-bottom: 1rem;">
<p style="color: #a0aec0; font-size: 1.4rem; margin-bottom: 0.5rem;">Processing Steps:</p>
<div id="processingSteps">
<p style="color: white; font-size: 1.3rem;">🔄 Creating task...</p>
</div>
</div>
</div>
</div>
<!-- Results Section -->
<div class="results-section" id="results">
<div class="results-header">
<h3 class="results-title">Your Music is Ready!</h3>
</div>
<div class="audio-player" id="audioPlayer">
<audio controls id="audioElement">
Your browser does not support the audio element.
</audio>
<div style="margin-top: 2rem; text-align: center;">
<a href="#" class="download-btn" id="downloadBtn">
<i class="fas fa-download"></i> Download MP3
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Features Section -->
<section id="features" class="features">
<div class="container">
<div class="section-header">
<h2 class="section-title">Professional Music Creation Tools</h2>
<p class="section-subtitle">Everything you need to create, edit, and produce professional music with AI assistance.</p>
</div>
<div class="features-grid">
<div class="feature-card">
<i class="fas fa-music feature-icon"></i>
<h3 class="feature-title">AI Music Generation</h3>
<p class="feature-description">Create original AI music with custom prompts. Generate instrumental or lyrical tracks with multiple model versions for different styles and quality levels.</p>
</div>
<div class="feature-card">
<i class="fas fa-pen feature-icon"></i>
<h3 class="feature-title">Lyrics Generation</h3>
<p class="feature-description">Generate song lyrics independently based on your prompts. Get multiple variations with suggested titles and themes.</p>
</div>
<div class="feature-card">
<i class="fas fa-file-audio feature-icon"></i>
<h3 class="feature-title">WAV Conversion</h3>
<p class="feature-description">Convert your tracks to high-quality, lossless WAV format perfect for professional audio editing and mastering.</p>
</div>
<div class="feature-card">
<i class="fas fa-microphone-slash feature-icon"></i>
<h3 class="feature-title">Vocal Removal</h3>
<p class="feature-description">Separate vocals from music tracks. Get original, instrumental, and vocal components for remixing and karaoke.</p>
</div>
<div class="feature-card">
<i class="fas fa-video feature-icon"></i>
<h3 class="feature-title">Music Video Generation</h3>
<p class="feature-description">Create MP4 videos with visual effects synchronized to your music. Perfect for social media sharing and marketing.</p>
</div>
<div class="feature-card">
<i class="fas fa-chart-line feature-icon"></i>
<h3 class="feature-title">Track Extension</h3>
<p class="feature-description">Extend existing tracks from specific timestamps. Build upon your musical ideas seamlessly with AI assistance.</p>
</div>
</div>
</div>
</section>
<!-- Pricing Section -->
<section id="pricing" class="pricing">
<div class="container">
<div class="section-header">
<h2 class="section-title">Choose Your Plan</h2>
<p class="section-subtitle">Flexible pricing plans designed for creators of all levels. Start creating professional music today.</p>
</div>
<div class="pricing-grid">
<div class="pricing-card">
<h3 class="pricing-title">Free</h3>
<div class="pricing-price">$0</div>
<div class="pricing-period">forever</div>
<ul class="pricing-features">
<li><i class="fas fa-check"></i> 5 AI Music Tracks</li>
<li><i class="fas fa-check"></i> Basic Generation</li>
<li><i class="fas fa-check"></i> Community Access</li>
<li><i class="fas fa-check"></i> Personal Use Only</li>
<li><i class="fas fa-check"></i> Standard Quality</li>
<li><i class="fas fa-check"></i> No Commercial Rights</li>
</ul>
<a href="/auth/register.php" class="btn btn-primary">Sign Up Free</a>
</div>
<div class="pricing-card">
<h3 class="pricing-title">Starter</h3>
<div class="pricing-price">$29</div>
<div class="pricing-period">per month</div>
<ul class="pricing-features">
<li><i class="fas fa-check"></i> 25 AI Music Tracks</li>
<li><i class="fas fa-check"></i> Lyrics Generation</li>
<li><i class="fas fa-check"></i> WAV Conversion</li>
<li><i class="fas fa-check"></i> Basic Support</li>
<li><i class="fas fa-check"></i> Standard Quality</li>
</ul>
<a href="#create" class="btn btn-primary">Get Started</a>
</div>
<div class="pricing-card featured">
<div class="pricing-badge">Most Popular</div>
<h3 class="pricing-title">Creator</h3>
<div class="pricing-price">$79</div>
<div class="pricing-period">per month</div>
<ul class="pricing-features">
<li><i class="fas fa-check"></i> 100 AI Music Tracks</li>
<li><i class="fas fa-check"></i> All Generation Features</li>
<li><i class="fas fa-check"></i> Vocal Removal</li>
<li><i class="fas fa-check"></i> Music Video Generation</li>
<li><i class="fas fa-check"></i> Priority Support</li>
<li><i class="fas fa-check"></i> High Quality Output</li>
</ul>
<a href="#create" class="btn btn-primary">Get Started</a>
</div>
<div class="pricing-card">
<h3 class="pricing-title">Professional</h3>
<div class="pricing-price">$199</div>
<div class="pricing-period">per month</div>
<ul class="pricing-features">
<li><i class="fas fa-check"></i> Unlimited Tracks</li>
<li><i class="fas fa-check"></i> All Features Included</li>
<li><i class="fas fa-check"></i> Custom Branding</li>
<li><i class="fas fa-check"></i> API Access</li>
<li><i class="fas fa-check"></i> Dedicated Support</li>
<li><i class="fas fa-check"></i> Highest Quality</li>
</ul>
<a href="#create" class="btn btn-primary">Get Started</a>
</div>
</div>
</div>
</section>
<!-- CTA Section -->
<section class="cta">
<div class="container">
<div class="cta-content">
<h2 class="cta-title">Ready to Create Amazing Music?</h2>
<p class="cta-description">Join thousands of creators who trust SoundStudioPro to generate professional music for their projects.</p>
<a href="#create" class="btn btn-primary">🎵 Start Creating Now</a>
</div>
</div>
</section>
<!-- Footer -->
<footer class="footer">
<div class="container">
<div class="footer-content">
<div class="footer-section">
<h3>SoundStudioPro</h3>
<p>Professional AI music creation platform for musicians, creators, and content producers.</p>
</div>
<div class="footer-section">
<h3>Features</h3>
<a href="#features">AI Music Generation</a>
<a href="#features">Lyrics Generation</a>
<a href="#features">Vocal Removal</a>
<a href="#features">Music Videos</a>
<a href="#features">WAV Conversion</a>
</div>
<div class="footer-section">
<h3>Resources</h3>
<a href="#docs">Documentation</a>
<a href="#tutorials">Tutorials</a>
<a href="#support">Support</a>
<a href="#blog">Blog</a>
<a href="admin.html">Admin Panel</a>
</div>
<div class="footer-section">
<h3>Contact</h3>
<p>Need help with music creation?</p>
<p>Email: support@musicstudiopro.com</p>
<p>Phone: +1 (555) 123-4567</p>
</div>
</div>
<div class="footer-bottom">
<p>© 2024 SoundStudioPro. All rights reserved. | Powered by Advanced AI Technology</p>
</div>
</div>
</footer>
<script>
// Secure API Configuration (no sensitive data exposed)
const API_ENDPOINT = window.location.protocol + '//' + window.location.host + window.location.pathname.replace('musicstudio.html', 'api.php');
// DOM Elements
const musicForm = document.getElementById('musicForm');
const createBtn = document.getElementById('createBtn');
const loading = document.getElementById('loading');
const results = document.getElementById('results');
const audioElement = document.getElementById('audioElement');
const downloadBtn = document.getElementById('downloadBtn');
// Form submission handler
musicForm.addEventListener('submit', async (e) => {
e.preventDefault();
const musicType = document.getElementById('musicType').value;
const prompt = document.getElementById('prompt').value;
const modelVersion = document.getElementById('modelVersion').value;
const duration = document.getElementById('duration').value;
// Show loading
createBtn.disabled = true;
loading.style.display = 'block';
results.style.display = 'none';
try {
// Prepare request data
const requestData = {
action: musicType,
prompt: prompt,
model: modelVersion,
duration: parseInt(duration)
};
// Add audio_url for operations that need it
if (['wav', 'vocal-removal', 'extend'].includes(musicType)) {
// For demo purposes, we'll use a placeholder
// In production, this would come from a previous upload or selection
requestData.audio_url = prompt; // Using prompt as audio URL for demo
}
// Call our secure backend API with longer timeout
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 180000); // 3 minutes timeout
try {
const response = await fetch(API_ENDPOINT, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestData),
signal: controller.signal
});
clearTimeout(timeoutId);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = await response.json();
if (!result.success) {
throw new Error(result.error || 'Unknown error occurred');
}
// Display results
displayResults(result.data);
} catch (fetchError) {
if (fetchError.name === 'AbortError') {
throw new Error('Request timed out. Music generation takes 2-3 minutes. Please try again.');
}
throw fetchError;
}
} catch (error) {
console.error('Error creating music:', error);
alert('Error creating music: ' + error.message);
} finally {
// Hide loading
createBtn.disabled = false;
loading.style.display = 'none';
}
});
// Display results
function displayResults(data) {
results.style.display = 'block';
if (data && data.audio_url) {
audioElement.src = data.audio_url;
downloadBtn.href = data.audio_url;
downloadBtn.download = 'musicstudio-creation.mp3';
} else if (data && data.lyrics) {
// For lyrics, display text instead of audio
const audioPlayer = document.getElementById('audioPlayer');
audioPlayer.innerHTML = `
<div style="color: white; text-align: center; padding: 2rem;">
<h4 style="margin-bottom: 1rem;">Generated Lyrics:</h4>
<p style="white-space: pre-wrap; line-height: 1.6;">${data.lyrics}</p>
</div>
`;
} else if (data && data.video_url) {
// For music videos
const audioPlayer = document.getElementById('audioPlayer');
audioPlayer.innerHTML = `
<div style="color: white; text-align: center; padding: 2rem;">
<h4 style="margin-bottom: 1rem;">Generated Music Video:</h4>
<video controls style="width: 100%; max-width: 500px; border-radius: 12px;">
<source src="${data.video_url}" type="video/mp4">
Your browser does not support the video tag.
</video>
<div style="margin-top: 2rem;">
<a href="${data.video_url}" class="download-btn" download="musicstudio-video.mp4">
<i class="fas fa-download"></i> Download Video
</a>
</div>
</div>
`;
} else {
// Fallback for other types
const audioPlayer = document.getElementById('audioPlayer');
audioPlayer.innerHTML = `
<div style="color: white; text-align: center; padding: 2rem;">
<h4 style="margin-bottom: 1rem;">Processing Complete!</h4>
<p>Your ${document.getElementById('musicType').value} has been generated successfully.</p>
<p style="font-size: 1.4rem; color: #a0aec0; margin-top: 1rem;">Check the console for detailed response data.</p>
</div>
`;
console.log('API Response:', data);
}
}
// Smooth scrolling for navigation links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Add some interactive effects
document.addEventListener('DOMContentLoaded', function() {
// Add parallax effect to hero section
window.addEventListener('scroll', function() {
const scrolled = window.pageYOffset;
const hero = document.querySelector('.hero');
if (hero) {
hero.style.transform = `translateY(${scrolled * 0.5}px)`;
}
});
// Add typing effect to hero title
const heroTitle = document.querySelector('.hero-title');
if (heroTitle) {
const text = heroTitle.textContent;
heroTitle.textContent = '';
let i = 0;
const typeWriter = () => {
if (i < text.length) {
heroTitle.textContent += text.charAt(i);
i++;
setTimeout(typeWriter, 50);
}
};
setTimeout(typeWriter, 1000);
}
});
</script>
</body>
</html>