📌 Job Title
Flutter + JavaScript Developer (OSMD / MusicXML / MIDI Sync Expert)
🧩 Project Overview
We are building a piano learning application that combines two synchronized views:
🎹 Falling Notes View (MIDI-based playback & visualization)
🎼 Sheet Music View (rendered using MusicXML via OpenSheetMusicDisplay)
Our goal is to provide a smooth, professional learning experience where visual playback and sheet music are perfectly aligned.
⚠️ Current Challenge
We are facing a synchronization issue:
The sheet music cursor (OSMD cursor) is not accurately aligned with the actual note playback.
Timing drift occurs between:
MIDI playback (falling notes)
OSMD-rendered sheet music cursor
This leads to incorrect visual guidance for learners.
We will provide a sample issue video (e.g., “Fur Elise”) to demonstrate the problem.
🎯 What We Need
We are looking for a highly skilled developer who can:
Diagnose and fix timing synchronization issues between:
MIDI playback engine
OSMD cursor positioning
Ensure frame-accurate or near real-time sync
Improve overall playback consistency and responsiveness
🛠 Required Skills
Strong experience with:
JavaScript / TypeScript
Flutter (Dart)
Hands-on experience with:
OpenSheetMusicDisplay (OSMD)
MusicXML
MIDI parsing / playback
Understanding of:
Musical timing (ticks, tempo, measures, beats)
Event scheduling / animation timing
Debugging complex UI + audio sync issues
⭐️ Nice to Have (Big Bonus)
Deep understanding of music notation (timing, ties, grace notes, tempo changes)
Experience with:
VexFlow
Web Audio API
Real-time rendering systems
Prior work on music education apps
📦 Deliverables
Accurate synchronization between:
MIDI playback
Falling notes
OSMD cursor
Clean, maintainable solution
Documentation or explanation of the fix
💬 Additional Notes
This is a non-trivial sync problem, so we’re looking for someone who can think beyond basic implementations.
If you’ve solved similar issues before, please include examples.
📎 To Apply
Please include:
Relevant experience (OSMD / MIDI / music apps)
Links to past work (if any)
Brief explanation of how you would approach this problem
Навыки
Flutter
JavaScript
MIDI
MusicXML
OpenSheetMusicDisplay
TypeScript
Web Audio API
Домены
EdTech
ИИ навыки
Animation Timing
Audio synchronization
Dart
Debugging
Event scheduling
Flutter
JavaScript
MIDI
Musical timing
MusicXML
OpenSheetMusicDisplay
Real-time rendering
Tempo
TypeScript
ИИ домены
Audio software development
EdTech
Music education
Piano learning application
Sheet music rendering
* Домены определены автоматически с помощью нейросети