prova-2 / index.html
AhBoh's picture
Add 3 files
d57f5e3 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WaveForm - Audio Processor</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/wavesurfer.js@7"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.gradient-bg {
background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
}
.waveform-container {
height: 200px;
background: rgba(255, 255, 255, 0.1);
border-radius: 10px;
backdrop-filter: blur(5px);
}
.knob {
width: 60px;
height: 60px;
border-radius: 50%;
background: linear-gradient(145deg, #2a5298, #1e3c72);
box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.3),
-5px -5px 15px rgba(255, 255, 255, 0.1);
position: relative;
cursor: pointer;
}
.knob::after {
content: '';
position: absolute;
width: 10px;
height: 10px;
background: #fff;
border-radius: 50%;
top: 10px;
left: 50%;
transform: translateX(-50%);
}
.visualizer {
height: 150px;
background: rgba(0, 0, 0, 0.2);
border-radius: 10px;
position: relative;
overflow: hidden;
}
.bar {
position: absolute;
bottom: 0;
width: 8px;
background: #4facfe;
border-radius: 4px 4px 0 0;
transition: height 0.1s ease;
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
.pulse {
animation: pulse 2s infinite;
}
</style>
</head>
<body class="gradient-bg min-h-screen text-white font-sans">
<div class="container mx-auto px-4 py-8">
<header class="flex justify-between items-center mb-8">
<div class="flex items-center">
<i class="fas fa-wave-square text-4xl mr-3 text-blue-300"></i>
<h1 class="text-3xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-blue-300 to-purple-300">
WaveForm Pro
</h1>
</div>
<div class="flex space-x-4">
<button id="helpBtn" class="px-4 py-2 rounded-full bg-blue-600 hover:bg-blue-700 transition">
<i class="fas fa-question-circle mr-2"></i>Help
</button>
<button class="px-4 py-2 rounded-full bg-purple-600 hover:bg-purple-700 transition">
<i class="fas fa-cog mr-2"></i>Settings
</button>
</div>
</header>
<main class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Left Panel - File and Basic Controls -->
<div class="bg-white bg-opacity-10 p-6 rounded-xl backdrop-blur-sm border border-white border-opacity-20">
<h2 class="text-xl font-semibold mb-4 flex items-center">
<i class="fas fa-file-audio mr-2"></i> Audio File
</h2>
<div class="mb-6">
<label class="block mb-2 text-sm font-medium">Upload Audio</label>
<div class="flex items-center space-x-2">
<input type="file" id="audioUpload" accept="audio/*" class="hidden">
<button id="uploadBtn" class="flex-1 px-4 py-2 bg-blue-600 hover:bg-blue-700 rounded-lg transition">
<i class="fas fa-upload mr-2"></i> Choose File
</button>
<button id="recordBtn" class="px-4 py-2 bg-red-600 hover:bg-red-700 rounded-lg transition">
<i class="fas fa-microphone mr-2"></i> Record
</button>
</div>
<div id="fileName" class="mt-2 text-sm text-blue-200"></div>
</div>
<div class="mb-6">
<h3 class="text-lg font-medium mb-3">Playback Controls</h3>
<div class="flex justify-center items-center space-x-6">
<button id="rewindBtn" class="p-3 rounded-full bg-blue-800 hover:bg-blue-900 transition">
<i class="fas fa-backward"></i>
</button>
<button id="playBtn" class="p-4 rounded-full bg-green-600 hover:bg-green-700 transition text-xl">
<i class="fas fa-play"></i>
</button>
<button id="pauseBtn" class="p-4 rounded-full bg-yellow-600 hover:bg-yellow-700 transition text-xl">
<i class="fas fa-pause"></i>
</button>
<button id="forwardBtn" class="p-3 rounded-full bg-blue-800 hover:bg-blue-900 transition">
<i class="fas fa-forward"></i>
</button>
</div>
</div>
<div class="mb-4">
<label for="volume" class="block mb-2 text-sm font-medium">Volume</label>
<div class="flex items-center">
<i class="fas fa-volume-down mr-2 text-blue-300"></i>
<input type="range" id="volume" min="0" max="1" step="0.01" value="0.8"
class="w-full h-2 bg-blue-900 rounded-lg appearance-none cursor-pointer">
<i class="fas fa-volume-up ml-2 text-blue-300"></i>
</div>
</div>
<div>
<label for="playbackRate" class="block mb-2 text-sm font-medium">Playback Speed</label>
<div class="flex items-center">
<i class="fas fa-tachometer-alt mr-2 text-blue-300"></i>
<input type="range" id="playbackRate" min="0.5" max="2" step="0.1" value="1"
class="w-full h-2 bg-blue-900 rounded-lg appearance-none cursor-pointer">
<span id="rateValue" class="ml-2 text-sm">1.0x</span>
</div>
</div>
</div>
<!-- Center Panel - Waveform and Visualizer -->
<div class="space-y-6">
<div class="bg-white bg-opacity-10 p-6 rounded-xl backdrop-blur-sm border border-white border-opacity-20">
<h2 class="text-xl font-semibold mb-4 flex items-center">
<i class="fas fa-waveform-path mr-2"></i> Waveform
</h2>
<div id="waveform" class="waveform-container"></div>
<div class="flex justify-between mt-4 text-sm">
<span id="currentTime">0:00</span>
<span id="duration">0:00</span>
</div>
</div>
<div class="bg-white bg-opacity-10 p-6 rounded-xl backdrop-blur-sm border border-white border-opacity-20">
<h2 class="text-xl font-semibold mb-4 flex items-center">
<i class="fas fa-chart-bar mr-2"></i> Audio Visualizer
</h2>
<div id="visualizer" class="visualizer">
<!-- Bars will be generated by JavaScript -->
</div>
</div>
</div>
<!-- Right Panel - Effects and Processing -->
<div class="bg-white bg-opacity-10 p-6 rounded-xl backdrop-blur-sm border border-white border-opacity-20">
<h2 class="text-xl font-semibold mb-4 flex items-center">
<i class="fas fa-sliders-h mr-2"></i> Audio Effects
</h2>
<div class="space-y-6">
<div class="effect-panel">
<div class="flex justify-between items-center mb-2">
<label class="font-medium">Equalizer</label>
<div class="flex items-center">
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" id="eqToggle" class="sr-only peer" checked>
<div class="w-9 h-5 bg-blue-900 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
</div>
<div class="grid grid-cols-5 gap-2 mb-4">
<div class="flex flex-col items-center">
<label class="text-xs mb-1">60Hz</label>
<input type="range" class="eq-band" data-freq="60" min="-12" max="12" value="0" orient="vertical">
</div>
<div class="flex flex-col items-center">
<label class="text-xs mb-1">230Hz</label>
<input type="range" class="eq-band" data-freq="230" min="-12" max="12" value="0" orient="vertical">
</div>
<div class="flex flex-col items-center">
<label class="text-xs mb-1">910Hz</label>
<input type="range" class="eq-band" data-freq="910" min="-12" max="12" value="0"
</html>