Project Info
This project did not submit a demo video on Devpost.
Inspiration
There are many songs out there that do not have dedicated sheet music, and we wanted to create a tool that could let us play any song on the Internet on the piano.
What it does
We are using AI to transcribe music. It converts audio files in mp3, wav, ogg, flac, or m4a format into sheet music by using Google's Gemini 2.5 Pro AI model.
How we built it
PLAI was built using with TypeScript, but we also integrated Google's Gemini 2.5 Pro AI model for audio analysis. We implemented Web Audio API for file processing, and used VexFlow to convert AI-detected notes into sheet music notation. The development involved establishing the foundation, implementing audio processing with drag-and-drop functionality, integrating AI capabilities with error handling, building sheet music generation, and polishing the user experience with custom branding.
Challenges we ran into
It was difficult getting the notes to look like the sheet music we saw online, and it was even more difficult getting the notes to be actually accurate to the ones being played on the mp3. We had a hard time getting the Gemini API model that we wanted.
Accomplishments we're proud of
We managed to figure out which API works the best for generating sheet music that is easy to read and is also accurate to the song that was put in.
What we learned
We learned that there are a lot of challenges when it comes to analyzing audio files, as not many API's are trained on how to do more complex analyzing tasks yet. We learned how to transform complex audio analysis into an intuitive music transcription tool.
What's next
We are planning on expanding what instruments PLAI covers and the length of the sheet music. We would ideally like to expand from snippets of music to covering the entire song, and we would like to improve the complexity of songs that it can analyze. We want PLAI to be able to do a variety of different time signatures, lengths of notes, and clefs. We also want to implement Essentia, which is an open-source C++ library for audio analysis, to make our audio processing even more accurate.
This repository has no readme, or GitHub could not be reached.
Analysis
View
Metric
- 11
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Google GeminiIn code
- Next.jsIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
243 KB
Source files
68
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
litongdeng/plAI-by-ear
81 files · 733 KB · @ 465863c
Structure
Interface
59 files · 73%Screens, components and styles rendered to the user.
API & routing
2 files · 2%Request entry points: routes, handlers and controllers.
Application logic
6 files · 7%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript97%
- CSS3%
- YAML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 59- @google/generative-ai
- @hookform/resolvers
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- @radix-ui/react-popover
- @radix-ui/react-progress
- @radix-ui/react-radio-group
- +41 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.