Filmstro Pro
Filmstro/2022
Web ApplicationVue.jsTone.jsWeb Audio API +3

Filmstro Pro

Built a browser-based music-to-video editor with real-time audio engine, custom auto-sync algorithm, SVG timeline editor, and MIDI controller support — all running client-side.

Filmstro Pro

Visit

Client

Filmstro

Timeline

Ongoing

Services

Frontend Development, Audio Engineering, Algorithm Design, UX/UI Design

Technologies

Vue.js, Tone.js, Web Audio API
// challenge

The Challenge

Filmstro needed a full-featured music-to-video editing platform that runs entirely in the browser. Content creators and filmmakers needed to browse thousands of royalty-free tracks, adjust music parameters in real-time, and automatically synchronize audio dynamics to video content — without installing any software. The core technical challenge was building a performant audio engine with real-time parameter control, an SVG-based timeline editor with multiple interaction modes, and an intelligent auto-sync algorithm that maps music to footage naturally.

Project Goals

  • Build a real-time audio engine with dynamic parameter sliders using Web Audio API and Tone.js
  • Create an intelligent auto-sync algorithm that matches music dynamics to video content
  • Develop an SVG-based timeline editor with draw, keyframe, selection, and hybrid modes
  • Implement MIDI controller support for hardware-based parameter mapping
  • Design a searchable music library with fuzzy search across thousands of tracks
// comparison

Before & After

Timeline Editor Evolution

After: Timeline Editor EvolutionBefore: Timeline Editor Evolution
Loading...
Evolved the timeline from a simple waveform display into a full plugin-based editor with draw mode, keyframes mode, selection mode, and combined hybrid mode — supporting 24, 30, and 60 FPS with frame-accurate timing.
// gallery

Project Gallery

Filmstro Pro music browser with category filtering
Real-time audio parameter sliders and waveform editor
SVG-based timeline editor in combined mode
Stems mixer with per-track controls
// solution

The Solution

Built a Vue 3 single-page application with a plugin-based architecture. The audio engine uses a singleton composable (useSound) wrapping Tone.js and the Web Audio API for real-time parameter manipulation with zero-latency feedback. The timeline editor is built on SVG.js with a PluginManager that dynamically loads interaction modes. The auto-sync algorithm analyzes video timing and intelligently maps music dynamics to create natural-sounding synchronization. A stems mixer allows decomposing tracks into individual audio layers. Session state persists via IndexedDB through LocalForage, and Fuse.js powers weighted fuzzy search across the full music catalog loaded client-side.

1

Audio Architecture

Designed the singleton audio controller pattern and Web Audio API integration with Tone.js, ensuring a single shared audio context across all components to prevent resource contention.

2

Timeline System

Built the SVG-based timeline editor with a plugin architecture supporting four interaction modes, frame-accurate timing at multiple FPS rates, and custom intersection detection for keyframe manipulation.

3

Auto-Sync Algorithm

Developed the synchronization algorithm that analyzes video content timing and maps music parameters to create natural dynamics without manual keyframing.

4

Music Library & Search

Implemented client-side fuzzy search with Fuse.js across the 3.8MB music dataset, with weighted scoring (title: 50, composer: 10, category: 5) tuned for music discovery UX.

// technical

Technical Details

The application is a Vue 3 SPA with Vuex 4 for state management across 6 namespaced modules (auth, browse, edit, audio, sessions, favourites). The audio engine uses a singleton useSound() composable maintaining a shared Web Audio context, with Tone.js handling synthesis and scheduling. The timeline editor is built on SVG.js 3.2 with draggable and panzoom plugins, using a PluginManager to dynamically load Draw, KeyFrames, Selection, and Combined modes — four major versions coexist for backwards compatibility. MIDI controller support is implemented via the WebMIDI API, allowing hardware mapping to audio parameters. The music library (3.8MB dataset) is loaded once and searched client-side via Fuse.js with pre-built indexes cached on the window object. Sessions persist through IndexedDB via LocalForage with multiple save slots. The app supports 44.1kHz and 48kHz sample rates for export compatibility. Environment configuration is resolved at runtime by hostname detection across local, dev, and live environments.

Technologies Used

Vue.jsTone.jsWeb Audio APISVG.jsVuexSASS
// results

Results & Impact

The platform serves as the primary editing tool for Filmstro's user base of content creators, filmmakers, and YouTubers. The auto-sync algorithm eliminated the need for manual keyframing, dramatically reducing the time to produce synced music-video content. The plugin-based timeline architecture enabled rapid iteration across four major versions while maintaining backwards compatibility.

63
Vue Components
20+
Timeline Modules
Custom
Auto-Sync Algorithm

Services Provided

  • Frontend Development
  • Audio Engineering
  • Algorithm Design
  • UX/UI Design

Need a similar project?

Let's discuss how I can help bring your vision to life.

Contact Me
// ready?

Ready to start yourproject?

Get in touch today to discuss your requirements.