Preservando as composições e memórias do Vovô.
  • TypeScript 95.6%
  • HTML 4.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Marcelo 3db5161460 feat: Add MusicXML export and voice filtering
Integrates Gemini's capability to extract both ABC Notation and MusicXML from musical scores. Enhances the ScoreDetail component to render MusicXML and provides audio playback controls for filtering instrument voices (e.g., piano, violin). This allows for more comprehensive digital preservation and playback customization.
2025-12-21 18:51:06 +00:00
components feat: Add MusicXML export and voice filtering 2025-12-21 18:51:06 +00:00
services feat: Add MusicXML export and voice filtering 2025-12-21 18:51:06 +00:00
.gitignore feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00
App.tsx feat: Add MusicXML export and voice filtering 2025-12-21 18:51:06 +00:00
index.html feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00
index.tsx feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00
metadata.json feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00
package.json feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00
README.md feat: Add MusicXML export and voice filtering 2025-12-21 18:51:06 +00:00
tsconfig.json feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00
types.ts feat: Add MusicXML export and voice filtering 2025-12-21 18:51:06 +00:00
vite.config.ts feat: Setup project with Vite and React 2025-12-21 17:53:34 +00:00

Grandpa's Musical Archive (Acervo Musical do Vovô)

A dedicated mobile-first web application designed to preserve, digitize, and bring to life handwritten musical compositions using Artificial Intelligence.

🎵 Project Goal

The primary goal of this application is to archive a collection of handwritten and printed musical scores composed by the user's grandfather. Since the user does not read music, the app serves as a bridge, translating visual scores into audible music and standard digital formats.

The collection consists mainly of works for Piano and Violin, written with Portuguese annotations.

✨ Key Features

  • AI Optical Music Recognition (OMR): Uses Google's Gemini 2.0 Pro model to analyze photos of complex handwritten scores.
  • Digital Preservation: Converts images into structured MusicXML (for professional software like MuseScore/Sibelius) and ABC Notation (for web rendering).
  • Interactive Playback:
    • Listen to the scores directly in the browser.
    • Voice Separation: Toggle between instruments (e.g., hear just the Violin, just the Piano, or the full Ensemble).
    • Visual cursor tracking during playback.
  • Mobile-First Design: Optimized for capturing photos of scores using a smartphone camera.
  • Offline-Ready: Scores are saved locally in the browser for quick access.

🛠️ Technology Stack

  • Frontend: React 19, TypeScript
  • Styling: Tailwind CSS
  • AI/LLM: Google GenAI SDK (@google/genai)
  • Music Rendering & Audio: abcjs (Standard library for rendering ABC notation and synthesizing audio)
  • Icons: Lucide React

🚀 Getting Started

  1. Clone the repository
  2. Install dependencies:
    npm install
    
  3. Configure API Key: Set your Google Gemini API key in your environment variables (API_KEY).
  4. Run the application:
    npm start
    

📸 Usage

  1. Open the app on your phone.
  2. Tap "Nova Foto da Partitura" to take a picture of a sheet music page.
  3. Wait for the AI to analyze the notes, dynamics, and text.
  4. Once processed, open the score to see the digital transcription.
  5. Use the Audio Controls to listen to the composition or isolate specific instruments.
  6. Download the MusicXML file to save a professional digital copy.

Built with ❤️ to preserve musical heritage.