Internode is a professional-grade, browser-based media workstation designed for high-fidelity audio playback, precision video analysis, and persistent library management. Built entirely on modern Web Standards, it leverages WASM for advanced subtitle rendering and the Web Audio API for mastering-grade equalization.
- 12-Band Stereo Parametric EQ: Precision frequency shaping from 25Hz to 16kHz.
- Stereo Width Control: Mid/Side matrix processing allows for adjusting the stereo field from mono collapse to enhanced spread.
- Pre-Amp Gain: Independent Left/Right input gain controls (±12dB).
- Safety Limiter: Integrated brickwall limiter to prevent digital clipping and protect hardware.
- Visual Metering: Real-time stereo VU meters for monitoring signal levels.
- Mastering Presets: 12 calibrated curves including Rock, Techno, Vocal, and Full Bass.
- A-B Looping: Mark specific start and end points on the timeline to loop segments indefinitely—perfect for study or analysis.
- Non-Destructive Filters: Real-time adjustments for Brightness, Contrast, Saturation, and Hue.
- Aspect Ratio Override: Correct distorted metadata by forcing 16:9, 4:3, 21:9, 2.35:1, or 1:1 ratios.
- Frame-by-Frame Navigation: Step forward or backward by single frames for precise visual inspection.
- Screenshot Capture: Save the current video frame as a high-quality PNG file.
- Octopus (libass) Integration: Full support for
.ASSand.SSAanime-style subtitles with complex styling, positioning, and animations via WebAssembly. - Native SRT/VTT: Support for standard text-based subtitles.
- Custom Styling: User-adjustable font size, text color, and background opacity.
- Persistence: Subtitle preferences and visibility are saved across sessions.
- PWA Architecture: Service worker integration allows the player to work offline and install as a standalone desktop/mobile app.
- Virtual Scrolling: A custom DOM-diffing playlist engine that handles thousands of items smoothly without UI lag.
- Watched Folders: Uses the File System Access API to automatically scan and load local directories on startup.
- IndexedDB Storage: The playlist, metadata, and playback positions are stored in the browser's local database.
- Background Thumbnails: Multi-threaded thumbnail generation for video files using Web Workers.
Internode is built for power users. All shortcuts can be remapped in the Keyboard Shortcuts menu.
| Action | Default Key |
|---|---|
| Play / Pause | Space |
| Next Track | J |
| Previous Track | K |
| Seek Forward/Back | → / ← (5s) |
| Volume Up/Down | ↑ / ↓ |
| Frame Step Fwd/Back | . / , |
| Set Loop Start (A) | [ |
| Set Loop End (B) | ] |
| Clear Loop | \ |
| Toggle Fullscreen | F |
| Toggle Mute | M |
| Close Modals | Esc |
- Logic: Modular ES6 JavaScript.
- Video Engine: Native HTML5 Video +
hls.jsfor adaptive bitrate streaming. - Audio Engine: Web Audio API (BiquadFilterNodes, DynamicsCompressor, AnalyserNode).
- Subtitles:
SubtitlesOctopus(libass via WASM). - Metadata:
jsmediatagsfor ID3/MP4/FLAC tag extraction. - Persistence: IndexedDB (for playlist) and LocalStorage (for settings).
- PWA: Service Worker (v29) with stale-while-revalidate strategy.
- Navigate to the hosted URL.
- Drag and Drop any media file or folder directly into the browser window.
- Click the Install icon in the browser address bar to use Internode as a standalone desktop application.
- Clone the repository.
- Internode uses ES6 Modules and Service Workers, which require a secure context (HTTPS) or
localhost. - Serve the project folder using a local server:
# If you have Python installed: python -m http.server 8000 - Open
http://localhost:8000in your browser.
Internode supports .m3u8 playlists. Click the Globe Icon (Open Stream) and paste your URL. The player will automatically utilize hls.js for non-Safari browsers to provide adaptive bitrate switching.
Go to File > Set Watched Folder. Select your local music or video directory. Internode will store a permission handle; next time you open the app, simply click the "Restore Library" toast to reload your files instantly.
To analyze a specific sequence:
- Play the video at the desired speed (0.25x to 4.0x).
- Press
[at the start of a sequence and]at the end. - The player will loop this segment. Use
,and.to inspect individual frames. - Apply Brightness/Contrast filters in the Video Adjustments menu to highlight details in dark footage.
- Chrome/Edge: Full support (including Watched Folders).
- Firefox: Full support (excluding Watched Folders).
- Safari/iOS: Supported (Native HLS, native fullscreen). Note: iOS volume is controlled via hardware buttons only.
This project is open-source. Feel free to modify and distribute.
