Logo
Home
Projects
Blog

Ready to create
something amazing?

Company logo

Ali Benkarrouch

Software Engineering student at ETS

Get upDownload my CV
LinkedInGithubEmail

Contact me

© 2026 Ali Benkarrouch. All rights reserved.
0%
All projects
Genie Optiroll
March 2026

Genie Optiroll

As a piano player, I often find reading traditional sheet music time-consuming and prefer visual piano rolls. Since not every song has a piano roll tutorial available online, I wanted to build a tool that could instantly convert any sheet music into an interactive piano roll. Adding built-in speed controls allows me to slow down complex sections, making it much easier to learn new music directly at my piano. Additionally, for quite a while, I wanted to revisit my original "Genies" project from 2024 to build a "v2". I decided to start a new series of standalone applications under the "Genie" brand, where all my AI and computer vision projects will be categorized. That is why the project name starts with "Genie:", while "Optiroll" is a blend of "Optical" (from Optical Music Recognition) and "Roll" (from Piano Roll).

Contribution

I decided to take on this project entirely on my own. As the sole developer, I handled the full development lifecycle, from designing the UI/UX and coding the React frontend to building the FastAPI backend and integrating the complex computer vision pipeline.

Project Gallery

Visual Overview

Genie Optiroll screenshot 1

Approach

Drawing from my past computer vision experience, my initial plan was to build a custom note-detection algorithm from scratch using OpenCV. However, I quickly realized the immense complexity, edge cases, and strict formatting rules required to accurately parse standard music notation. I pivoted my strategy and researched Optical Music Recognition (OMR), ultimately opting for oemer, a state-of-the-art pre-trained model. I built a FastAPI backend that runs oemer on uploaded images to generate a MusicXML file, then uses muspy to extract precise MIDI note events (pitch, time, duration). On the frontend, I developed a custom HTML Canvas to render the falling bars and integrated the smplr Web Audio library to provide realistic, controllable instrument playback directly in the browser.

Features

  • Sheet music upload
  • Interactive piano roll
  • Multiple instrument sounds
  • Duet instrument layering
  • Custom visual themes
  • Pitch transposition
  • Saved sheet library

Stack

GSAPGSAPOpenCVOpenCVViteViteSQLiteSQLiteReactReactTailwindTailwindFastAPIFastAPImuspymuspyPythonPythonOemer (OMR)smplr

Sources

Github
Github

More Projects

Explore Other Work

Runebound

Runebound

With Runebound, my goal was to design an ambitious roguelite RPG that explores dimensional duality within gameplay for my video game development class at Cégep de Rosemont. I wanted to create a powerful narrative experience where the mage's evolution is reflected not only in his powers, but also in the game's technological transition. This project allowed me to push my Unity skills by managing two distinct playstyles within a single progression loop.

December 2024

Netpulse

Netpulse

I developed Netpulse with the aim of deepening my theoretical knowledge of how computer networks work. I wanted to understand in concrete terms how data flows, how packets are structured, and how protocols interact with each other. By creating my own analyzer, I was able to move from the theory of network layers to a real, detailed observation of data traffic.

August 2024

Shopnest

Shopnest

I completed this project as part of my first web application development course. The goal was to design a comprehensive e-commerce platform that would enable the smooth purchase and sale of products. This project was a defining moment for me, as it helped me understand the importance of a solid structure, from initial planning to the launch of a functional and secure website.

December 2023

View All Projects