An Interactive Waveform Playground
Explore the fascinating world of sound synthesis with 12+ waveform types, real-time visualization, and professional audio effects.
- 🎵 Basic: Sine, Square, Triangle, Sawtooth
- 🔧 Custom: Custom Pulse Waves, Harmonic-rich, Noise-mixed
- 📊 Step & Digital: Step/Quantized, DC/Constant, 8-bit/Bitcrusher, Sample & Hold
- 📁 Audio File: Upload and play any audio file with visualization
- 📺 CRT Oscilloscope with authentic phosphor glow
- 🖥️ Clean Visualization Mode for modern, crisp display
- 🔄 Visual Effects Toggle - Switch between CRT and Clean modes
- 🚀 60 FPS Optimized rendering for smooth animation
- 🏗️ Modular Architecture - Clean ES6 module structure
- 📊 Real-time Waveform Visualization
- 📈 FFT Frequency Spectrum Analysis
- ✨ Scanlines, Noise, and Flicker Effects (CRT mode only)
- 🎚️ Precision Frequency Control (1Hz - 20kHz with logarithmic scaling)
- 🔊 Fine-tuned Gain Control with smooth adjustments
- 🔄 Visual Effects Toggle - Switch between CRT and Clean modes
- 📁 Modern Audio Upload - Drag & drop file upload with progress bar
- 🎵 Professional Audio Player - Clickable progress bar and clean controls
- 🎮 Responsive Touch Interface for mobile devices
- 🎯 Real-time Parameter Updates
- 🖥️ Desktop: Full-featured experience with side-by-side visualizations
- 📱 Mobile: Touch-optimized interface with adaptive layouts
- 💻 Tablet: Balanced design for medium screens
- 🔄 Landscape Mode: Optimized horizontal layouts
Open your browser and visit: https://independent-coder.github.io/SineSpace/
-
Clone the repository:
git clone https://github.com/independent-coder/SineSpace.git cd SineSpace -
Open
index.htmlin your favorite web browser:# Using Python 3 python -m http.server 8000 # Using Node.js npx serve . # Or simply open index.html directly open index.html
-
Start exploring waveforms! 🎵
- Select a waveform from the dropdown menu
- Adjust frequency using the slider (1Hz - 20kHz)
- Control volume with the gain slider
- Press Start to begin playback and visualization
- Switch waveforms in real-time while playing
- Select "📁 Upload Audio File" from the waveform dropdown
- Choose your audio file (MP3, WAV, OGG, WebM supported)
- Use the playback controls:
- Play/Pause Button: Start/stop audio playback
- Progress Bar: Click or drag to seek to any position
- Seek Buttons: Skip forward/backward by 10 seconds
- Time Display: Shows current time / total duration
- Adjust volume with the gain slider
- Watch real-time visualization of your audio file
- CRT/Clean Toggle: Switch between authentic CRT oscilloscope and modern clean display
- Waveform Display: Real-time oscilloscope visualization
- Frequency Spectrum: FFT analysis of audio frequencies
- Responsive Layout: Adapts to your screen size
- HTML5 - Semantic markup and structure
- CSS3 - Modern styling with animations and effects
- ES6 Modules - Modular JavaScript architecture
- Vanilla JavaScript - No frameworks, pure web APIs
- Web Audio API - Professional audio synthesis
- Canvas API - Real-time visualizations
- SineSpaceCore - Main application controller
- AudioManager - Web Audio API functionality
- VisualizationManager - Canvas rendering and CRT effects
- UIManager - User interface interactions and controls
- WaveformGenerator - Custom waveform generation
- Clean separation of concerns for maintainability
- Glassmorphism UI with backdrop filters
- Dark Theme optimized for extended use
- Responsive Design with mobile-first approach
- CSS Grid & Flexbox for modern layouts
- FontAwesome Icons for enhanced UI
- OscillatorNode - Sound generation
- GainNode - Volume control
- AnalyserNode - Frequency analysis
- Smooth Parameter Transitions - Anti-click protection
- Exponential Ramps - Natural frequency and gain changes
- Professional Audio Quality - Crisp, clean sound without artifacts
- WaveShaperNode - Custom waveform synthesis
- AudioBufferSourceNode - Audio file playback
- Real-time audio processing with seek and time controls
- Wave Shaping: Custom waveform distortion
- Audio File Processing: Real-time visualization of uploaded audio
- Multiple Formats: MP3, WAV, OGG, WebM support
- Full Playback Controls: Play, pause, seek, time display
- Real-time Visualization: Waveform and spectrum analysis
- Progress Bar Scrubbing: Click and drag to seek
- Resume Functionality: Remembers position when stopped
- Volume Integration: Works with existing gain control
- Touch-Friendly Controls: 44px minimum touch targets
- Responsive Layouts: Adaptive grid systems
- Performance Optimization: Efficient rendering on all devices
- Gesture Support: Smooth touch interactions
- CRT Phosphor Glow: Authentic green phosphor effect
- Scanline Simulation: Horizontal line artifacts
- Noise Overlay: Subtle video noise texture
- Flicker Animation: Realistic monitor flicker
SineSpace/
├── index.html # Main application file
├── style.css # Styling and animations
├── js/ # JavaScript modules
│ ├── main.js # Application entry point
│ ├── SineSpaceCore.js # Main application controller
│ ├── AudioManager.js # Web Audio API functionality
│ ├── VisualizationManager.js # Canvas rendering
│ ├── UIManager.js # User interface interactions
│ └── WaveformGenerator.js # Waveform generation
├── assets/
│ └── favicon.svg # Application icon
├── README.md # Project documentation
└── .gitignore # Git ignore rules
- Modular Design: ES6 modules with clean separation of concerns
- Event-Driven: Responsive user interactions
- Dependency Injection: Modular communication between components
- Audio Context Management: Proper resource handling
- Canvas Rendering: Efficient visualization updates
- Context Management: Single audio context instance
- Node Routing: Proper audio graph connections
- Resource Cleanup: Memory leak prevention
- Error Handling: Robust audio API usage
- Chrome 66+ (Web Audio API support)
- Firefox 60+ (Full feature support)
- Safari 12+ (iOS and desktop)
- Edge 79+ (Chromium-based)
- Opera 53+ (Web Audio API)
- iOS Safari 12+
- Chrome Mobile 66+
- Firefox Mobile 60+
- Samsung Internet 9+
- Create waveform generation function in
script.js - Add option to HTML select element
- Update
createCustomWaveform()method - Test audio output and visualization
- Colors: Modify CSS variables in
style.css - Effects: Adjust CRT effect parameters
- Layout: Change grid configurations
- Animations: Update keyframe definitions
- Frequency Range: Modify slider limits
- Waveform Curves: Edit WaveShaper algorithms
- Visualization: Update canvas rendering
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Code Style: Follow existing conventions
- Documentation: Update README for new features
- Testing: Ensure cross-browser compatibility
- Performance: Optimize for mobile devices
- Issue Template: Use provided templates
- Environment: Specify browser and device
- Steps to Reproduce: Detailed reproduction steps
- Expected Behavior: Clear description of expected outcome
This project is licensed under the MIT License - see the LICENSE file for details.
- ✅ Commercial use: Allowed
- ✅ Modification: Allowed
- ✅ Distribution: Allowed
- ✅ Private use: Allowed
- ❌ Liability: No warranty provided
- ❌ Trademark: No trademark grant
- Web Audio API - W3C Audio Working Group
- Audio Synthesis - Computer Music pioneers
- DSP Techniques - Digital signal processing community
- FontAwesome - Icon library
- Glassmorphism - Modern UI design trend
- CRT Effects - Vintage monitor aesthetics
- GitHub - Platform and community
- Open Source - Collaborative development
- Web Audio Community - Knowledge and inspiration
- GitHub: @independent-coder
- Website: independent-coder.github.io
🎵 Made with passion for sound synthesis and web technology 🎵


