Spaces:
Running
Running
Download index.html from GPUhead/anycoder-29202ac1: direct link, hf CLI and curl.
- Browser
- Download file 23.4 kB
-
https://huggingface.co/spaces/GPUhead/anycoder-29202ac1/resolve/main/index.html
- Command line
-
hf download hf://spaces/GPUhead/anycoder-29202ac1/index.html
-
curl -L -o index.html https://huggingface.co/spaces/GPUhead/anycoder-29202ac1/resolve/main/index.html
23.4 kB
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>SoundLab - Transform Your Music</title> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <style> | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
| } | |
| :root { | |
| --primary: #8a2be2; | |
| --secondary: #ff6b6b; | |
| --accent: #00d4ff; | |
| --dark: #121212; | |
| --light: #f8f9fa; | |
| --gray: #2d2d2d; | |
| --transition: all 0.3s ease; | |
| } | |
| body { | |
| background: linear-gradient(135deg, var(--dark), #1a1a2e); | |
| color: var(--light); | |
| min-height: 100vh; | |
| line-height: 1.6; | |
| } | |
| .container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0 20px; | |
| } | |
| /* Header */ | |
| header { | |
| background: rgba(18, 18, 18, 0.95); | |
| backdrop-filter: blur(10px); | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); | |
| } | |
| .header-content { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 15px 0; | |
| } | |
| .logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 1.8rem; | |
| font-weight: 700; | |
| color: var(--primary); | |
| } | |
| .logo i { | |
| color: var(--secondary); | |
| } | |
| .nav-links { | |
| display: flex; | |
| gap: 30px; | |
| } | |
| .nav-links a { | |
| color: var(--light); | |
| text-decoration: none; | |
| font-weight: 500; | |
| transition: var(--transition); | |
| position: relative; | |
| } | |
| .nav-links a:hover { | |
| color: var(--accent); | |
| } | |
| .nav-links a::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -5px; | |
| left: 0; | |
| width: 0; | |
| height: 2px; | |
| background: var(--accent); | |
| transition: var(--transition); | |
| } | |
| .nav-links a:hover::after { | |
| width: 100%; | |
| } | |
| .anycoder-link { | |
| color: var(--secondary); | |
| text-decoration: none; | |
| font-weight: 600; | |
| transition: var(--transition); | |
| } | |
| .anycoder-link:hover { | |
| color: var(--accent); | |
| } | |
| /* Hero Section */ | |
| .hero { | |
| padding: 80px 0; | |
| text-align: center; | |
| background: radial-gradient(circle at top right, rgba(138, 43, 226, 0.2), transparent 50%), | |
| radial-gradient(circle at bottom left, rgba(255, 107, 107, 0.2), transparent 50%); | |
| } | |
| .hero h1 { | |
| font-size: 3.5rem; | |
| margin-bottom: 20px; | |
| background: linear-gradient(to right, var(--primary), var(--secondary), var(--accent)); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| color: transparent; | |
| line-height: 1.2; | |
| } | |
| .hero p { | |
| font-size: 1.2rem; | |
| max-width: 700px; | |
| margin: 0 auto 40px; | |
| color: #ccc; | |
| } | |
| /* Upload Section */ | |
| .upload-section { | |
| background: rgba(45, 45, 45, 0.5); | |
| backdrop-filter: blur(10px); | |
| border-radius: 20px; | |
| padding: 40px; | |
| margin: 40px auto; | |
| max-width: 800px; | |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .upload-area { | |
| border: 3px dashed var(--primary); | |
| border-radius: 15px; | |
| padding: 50px 20px; | |
| text-align: center; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| margin-bottom: 30px; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .upload-area:hover { | |
| border-color: var(--accent); | |
| background: rgba(138, 43, 226, 0.05); | |
| } | |
| .upload-area i { | |
| font-size: 4rem; | |
| color: var(--primary); | |
| margin-bottom: 20px; | |
| } | |
| .upload-area h3 { | |
| font-size: 1.5rem; | |
| margin-bottom: 10px; | |
| } | |
| .upload-area p { | |
| color: #aaa; | |
| } | |
| #file-input { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| opacity: 0; | |
| cursor: pointer; | |
| } | |
| /* Effects Section */ | |
| .effects-section { | |
| margin: 60px 0; | |
| } | |
| .section-title { | |
| text-align: center; | |
| margin-bottom: 40px; | |
| font-size: 2.2rem; | |
| position: relative; | |
| display: inline-block; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| } | |
| .section-title::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -10px; | |
| left: 10%; | |
| width: 80%; | |
| height: 3px; | |
| background: linear-gradient(to right, transparent, var(--accent), transparent); | |
| } | |
| .effects-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 30px; | |
| } | |
| .effect-card { | |
| background: rgba(45, 45, 45, 0.7); | |
| border-radius: 15px; | |
| padding: 25px; | |
| transition: var(--transition); | |
| cursor: pointer; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| .effect-card:hover { | |
| transform: translateY(-10px); | |
| box-shadow: 0 15px 30px rgba(0, 0, 0, 0.4); | |
| border-color: var(--primary); | |
| } | |
| .effect-icon { | |
| width: 60px; | |
| height: 60px; | |
| background: linear-gradient(135deg, var(--primary), var(--secondary)); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin-bottom: 20px; | |
| } | |
| .effect-icon i { | |
| font-size: 1.8rem; | |
| color: white; | |
| } | |
| .effect-card h3 { | |
| font-size: 1.4rem; | |
| margin-bottom: 10px; | |
| } | |
| .effect-card p { | |
| color: #bbb; | |
| margin-bottom: 20px; | |
| } | |
| .sliders { | |
| margin-top: 15px; | |
| } | |
| .slider-container { | |
| margin-bottom: 15px; | |
| } | |
| .slider-label { | |
| display: flex; | |
| justify-content: space-between; | |
| margin-bottom: 5px; | |
| } | |
| .slider { | |
| width: 100%; | |
| height: 6px; | |
| -webkit-appearance: none; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 10px; | |
| outline: none; | |
| } | |
| .slider::-webkit-slider-thumb { | |
| -webkit-appearance: none; | |
| width: 20px; | |
| height: 20px; | |
| border-radius: 50%; | |
| background: var(--accent); | |
| cursor: pointer; | |
| } | |
| /* Preview Section */ | |
| .preview-section { | |
| background: rgba(45, 45, 45, 0.5); | |
| border-radius: 20px; | |
| padding: 40px; | |
| margin: 60px auto; | |
| max-width: 800px; | |
| } | |
| .audio-player { | |
| width: 100%; | |
| margin: 20px 0; | |
| } | |
| .player-controls { | |
| display: flex; | |
| justify-content: center; | |
| gap: 20px; | |
| margin-top: 20px; | |
| } | |
| .control-btn { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| border: none; | |
| color: white; | |
| font-size: 1.2rem; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .control-btn:hover { | |
| background: var(--secondary); | |
| transform: scale(1.1); | |
| } | |
| .download-btn { | |
| background: linear-gradient(to right, var(--primary), var(--secondary)); | |
| color: white; | |
| border: none; | |
| padding: 12px 25px; | |
| border-radius: 30px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| display: block; | |
| margin: 30px auto 0; | |
| font-size: 1rem; | |
| } | |
| .download-btn:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 10px 20px rgba(138, 43, 226, 0.3); | |
| } | |
| /* Footer */ | |
| footer { | |
| background: rgba(18, 18, 18, 0.9); | |
| padding: 40px 0; | |
| margin-top: 60px; | |
| text-align: center; | |
| } | |
| .footer-content { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 20px; | |
| } | |
| .social-links { | |
| display: flex; | |
| gap: 20px; | |
| } | |
| .social-links a { | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 50%; | |
| background: var(--gray); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| text-decoration: none; | |
| transition: var(--transition); | |
| } | |
| .social-links a:hover { | |
| background: var(--primary); | |
| transform: translateY(-5px); | |
| } | |
| .copyright { | |
| color: #aaa; | |
| font-size: 0.9rem; | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 768px) { | |
| .header-content { | |
| flex-direction: column; | |
| gap: 15px; | |
| } | |
| .nav-links { | |
| gap: 15px; | |
| } | |
| .hero h1 { | |
| font-size: 2.5rem; | |
| } | |
| .upload-section, .preview-section { | |
| padding: 25px; | |
| } | |
| .effects-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| /* Animation for processing */ | |
| @keyframes pulse { | |
| 0% { transform: scale(1); } | |
| 50% { transform: scale(1.05); } | |
| 100% { transform: scale(1); } | |
| } | |
| .processing { | |
| animation: pulse 1.5s infinite; | |
| } | |
| /* Hidden class for toggling */ | |
| .hidden { | |
| display: none; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <header> | |
| <div class="container"> | |
| <div class="header-content"> | |
| <div class="logo"> | |
| <i class="fas fa-wave-square"></i> | |
| <span>SoundLab</span> | |
| </div> | |
| <div class="nav-links"> | |
| <a href="#">Home</a> | |
| <a href="#">Effects</a> | |
| <a href="#">Library</a> | |
| <a href="#">About</a> | |
| </div> | |
| <a href="https://huggingface.co/spaces/akhaliq/anycoder" class="anycoder-link">Built with anycoder</a> | |
| </div> | |
| </div> | |
| </header> | |
| <section class="hero"> | |
| <div class="container"> | |
| <h1>Transform Your Music with Advanced Audio Effects</h1> | |
| <p>Upload your tracks and instantly create slowed + reverb, 8D/16D, and speed-up versions. Customize every detail to make your perfect remix.</p> | |
| </div> | |
| </section> | |
| <div class="container"> | |
| <section class="upload-section"> | |
| <h2 class="section-title">Upload Your Audio</h2> | |
| <div class="upload-area" id="upload-area"> | |
| <i class="fas fa-cloud-upload-alt"></i> | |
| <h3>Drag & Drop Your Audio File</h3> | |
| <p>Supports MP3, WAV, FLAC, and other common formats</p> | |
| <input type="file" id="file-input" accept="audio/*"> | |
| </div> | |
| <div id="file-info" class="hidden"> | |
| <p>File selected: <span id="file-name"></span></p> | |
| </div> | |
| </section> | |
| <section class="effects-section"> | |
| <h2 class="section-title">Audio Effects</h2> | |
| <div class="effects-grid"> | |
| <div class="effect-card" id="slowed-reverb"> | |
| <div class="effect-icon"> | |
| <i class="fas fa-tachometer-alt"></i> | |
| </div> | |
| <h3>Slowed + Reverb</h3> | |
| <p>Create dreamy, atmospheric versions of your tracks with pitch adjustment and reverb effects.</p> | |
| <div class="sliders"> | |
| <div class="slider-container"> | |
| <div class="slider-label"> | |
| <span>Slowdown</span> | |
| <span id="slow-value">20%</span> | |
| </div> | |
| <input type="range" min="0" max="100" value="20" class="slider" id="slow-slider"> | |
| </div> | |
| <div class="slider-container"> | |
| <div class="slider-label"> | |
| <span>Reverb</span> | |
| <span id="reverb-value">70%</span> | |
| </div> | |
| <input type="range" min="0" max="100" value="70" class="slider" id="reverb-slider"> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="effect-card" id="spatial-audio"> | |
| <div class="effect-icon"> | |
| <i class="fas fa-compass"></i> | |
| </div> | |
| <h3>8D / 16D Audio</h3> | |
| <p>Immersive spatial audio that moves around your head for a unique listening experience.</p> | |
| <div class="sliders"> | |
| <div class="slider-container"> | |
| <div class="slider-label"> | |
| <span>Rotation Speed</span> | |
| <span id="rotation-value">Medium</span> | |
| </div> | |
| <input type="range" min="0" max="100" value="50" class="slider" id="rotation-slider"> | |
| </div> | |
| <div class="slider-container"> | |
| <div class="slider-label"> | |
| <span>Dimension</span> | |
| <span id="dimension-value">8D</span> | |
| </div> | |
| <input type="range" min="0" max="100" value="0" class="slider" id="dimension-slider"> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="effect-card" id="speed-control"> | |
| <div class="effect-icon"> | |
| <i class="fas fa-forward"></i> | |
| </div> | |
| <h3>Speed Control</h3> | |
| <p>Adjust the playback speed of your audio without changing the pitch (or with pitch correction).</p> | |
| <div class="sliders"> | |
| <div class="slider-container"> | |
| <div class="slider-label"> | |
| <span>Speed</span> | |
| <span id="speed-value">100%</span> | |
| </div> | |
| <input type="range" min="50" max="200" value="100" class="slider" id="speed-slider"> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="preview-section hidden" id="preview-section"> | |
| <h2 class="section-title">Preview & Download</h2> | |
| <div class="audio-player"> | |
| <audio id="audio-player" controls></audio> | |
| </div> | |
| <div class="player-controls"> | |
| <button class="control-btn" id="play-btn"> | |
| <i class="fas fa-play"></i> | |
| </button> | |
| <button class="control-btn" id="pause-btn"> | |
| <i class="fas fa-pause"></i> | |
| </button> | |
| <button class="control-btn" id="stop-btn"> | |
| <i class="fas fa-stop"></i> | |
| </button> | |
| </div> | |
| <button class="download-btn" id="download-btn"> | |
| <i class="fas fa-download"></i> Download Processed Audio | |
| </button> | |
| </section> | |
| </div> | |
| <footer> | |
| <div class="container"> | |
| <div class="footer-content"> | |
| <div class="logo"> | |
| <i class="fas fa-wave-square"></i> | |
| <span>SoundLab</span> | |
| </div> | |
| <div class="social-links"> | |
| <a href="#"><i class="fab fa-twitter"></i></a> | |
| <a href="#"><i class="fab fa-instagram"></i></a> | |
| <a href="#"><i class="fab fa-tiktok"></i></a> | |
| <a href="#"><i class="fab fa-youtube"></i></a> | |
| </div> | |
| <p class="copyright">© 2023 SoundLab. All rights reserved.</p> | |
| </div> | |
| </div> | |
| </footer> | |
| <script> | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Elements | |
| const fileInput = document.getElementById('file-input'); | |
| const uploadArea = document.getElementById('upload-area'); | |
| const fileInfo = document.getElementById('file-info'); | |
| const fileName = document.getElementById('file-name'); | |
| const previewSection = document.getElementById('preview-section'); | |
| const audioPlayer = document.getElementById('audio-player'); | |
| const playBtn = document.getElementById('play-btn'); | |
| const pauseBtn = document.getElementById('pause-btn'); | |
| const stopBtn = document.getElementById('stop-btn'); | |
| const downloadBtn = document.getElementById('download-btn'); | |
| // Slider elements | |
| const slowSlider = document.getElementById('slow-slider'); | |
| const slowValue = document.getElementById('slow-value'); | |
| const reverbSlider = document.getElementById('reverb-slider'); | |
| const reverbValue = document.getElementById('reverb-value'); | |
| const rotationSlider = document.getElementById('rotation-slider'); | |
| const rotationValue = document.getElementById('rotation-value'); | |
| const dimensionSlider = document.getElementById('dimension-slider'); | |
| const dimensionValue = document.getElementById('dimension-value'); | |
| const speedSlider = document.getElementById('speed-slider'); | |
| const speedValue = document.getElementById('speed-value'); | |
| // File upload handling | |
| fileInput.addEventListener('change', function(e) { | |
| if (this.files && this.files[0]) { | |
| const file = this.files[0]; | |
| fileName.textContent = file.name; | |
| fileInfo.classList.remove('hidden'); | |
| // Create a URL for the file | |
| const url = URL.createObjectURL(file); | |
| audioPlayer.src = url; | |
| // Show preview section | |
| previewSection.classList.remove('hidden'); | |
| // Add processing animation | |
| uploadArea.classList.add('processing'); | |
| // Simulate processing time | |
| setTimeout(() => { | |
| uploadArea.classList.remove('processing'); | |
| }, 2000); | |
| } | |
| }); | |
| // Drag and drop functionality | |
| uploadArea.addEventListener('dragover', function(e) { | |
| e.preventDefault(); | |
| this.style.borderColor = 'var(--accent)'; | |
| this.style.backgroundColor = 'rgba(0, 212, 255, 0.05)'; | |
| }); | |
| uploadArea.addEventListener('dragleave', function() { | |
| this.style.borderColor = 'var(--primary)'; | |
| this.style.backgroundColor = 'transparent'; | |
| }); | |
| uploadArea.addEventListener('drop', function(e) { | |
| e.preventDefault(); | |
| this.style.borderColor = 'var(--primary)'; | |
| this.style.backgroundColor = 'transparent'; | |
| if (e.dataTransfer.files && e.dataTransfer.files[0]) { | |
| fileInput.files = e.dataTransfer.files; | |
| const event = new Event('change'); | |
| fileInput.dispatchEvent(event); | |
| } | |
| }); | |
| // Player controls | |
| playBtn.addEventListener('click', function() { | |
| audioPlayer.play(); | |
| }); | |
| pauseBtn.addEventListener('click', function() { | |
| audioPlayer.pause(); | |
| }); | |
| stopBtn.addEventListener('click', function() { | |
| audioPlayer.pause(); | |
| audioPlayer.currentTime = 0; | |
| }); | |
| // Download button | |
| downloadBtn.addEventListener('click', function() { | |
| alert('Your processed audio is being prepared for download. This would connect to a backend service in a real application.'); | |
| }); | |
| // Slider value updates | |
| slowSlider.addEventListener('input', function() { | |
| slowValue.textContent = `${this.value}%`; | |
| }); | |
| reverbSlider.addEventListener('input', function() { | |
| reverbValue.textContent = `${this.value}%`; | |
| }); | |
| rotationSlider.addEventListener('input', function() { | |
| const values = ['Slow', 'Medium', 'Fast']; | |
| rotationValue.textContent = values[Math.floor(this.value / 33.4)]; | |
| }); | |
| dimensionSlider.addEventListener('input', function() { | |
| dimensionValue.textContent = this.value < 50 ? '8D' : '16D'; | |
| }); | |
| speedSlider.addEventListener('input', function() { | |
| speedValue.textContent = `${this.value}%`; | |
| }); | |
| // Effect card selection | |
| const effectCards = document.querySelectorAll('.effect-card'); | |
| effectCards.forEach(card => { | |
| card.addEventListener('click', function() { | |
| effectCards.forEach(c => c.style.borderColor = 'rgba(255, 255, 255, 0.05)'; | |
| this.style.borderColor = 'var(--accent)'; | |
| }); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |