{"id":49182599,"url":"https://github.com/mvndaai/flutter-music","last_synced_at":"2026-04-26T02:00:31.820Z","repository":{"id":352310950,"uuid":"1214673927","full_name":"mvndaai/flutter-music","owner":"mvndaai","description":"A flutter app to do things with sheet music","archived":false,"fork":false,"pushed_at":"2026-04-23T00:53:43.000Z","size":341,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-23T02:26:21.072Z","etag":null,"topics":["color","musicxml","toy"],"latest_commit_sha":null,"homepage":"https://mvndaai.com/flutter-music/","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mvndaai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"mvndaai","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"mvndaai","thanks_dev":null,"custom":null}},"created_at":"2026-04-18T22:26:34.000Z","updated_at":"2026-04-23T00:46:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mvndaai/flutter-music","commit_stats":null,"previous_names":["mvndaai/flutter-music"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mvndaai/flutter-music","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvndaai%2Fflutter-music","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvndaai%2Fflutter-music/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvndaai%2Fflutter-music/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvndaai%2Fflutter-music/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mvndaai","download_url":"https://codeload.github.com/mvndaai/flutter-music/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvndaai%2Fflutter-music/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32283294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"online","status_checked_at":"2026-04-26T02:00:05.962Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["color","musicxml","toy"],"created_at":"2026-04-23T02:03:43.190Z","updated_at":"2026-04-26T02:00:31.814Z","avatar_url":"https://github.com/mvndaai.png","language":"Dart","funding_links":["https://github.com/sponsors/mvndaai","https://buymeacoffee.com/mvndaai"],"categories":[],"sub_categories":[],"readme":"# flutter-music\n\nA Flutter app that reads MusicXML files and displays color-coded sheet music for kids.\n\n## Features\n\n- **MusicXML Support** – Upload `.xml`, `.mxl`, or `.musicxml` files from your device, or download directly from a Google Cloud Storage bucket (or any public URL).\n- **Color-Coded Sheet Music** – Notes are displayed as colored circles matching a children's xylophone (C = Red, D = Orange, E = Yellow, F = Green, G = Teal, A = Blue, B = Purple).\n- **Dual Note Names** – Toggle between letter notation (A, B, C), solfège (Do, Re, Mi), or both simultaneously.\n- **Song Library with Tags** – All uploaded songs are stored locally and can be organized with custom tags for easy filtering.\n- **Practice Mode (Microphone)** – The app listens to the microphone, detects the pitch being played, highlights the current note on the sheet music, and automatically advances when the correct note is heard.\n- **Cross-Platform** – Targets Android, iOS, and Web.\n\n## Getting Started\n\n### Prerequisites\n\n- [Flutter SDK](https://docs.flutter.dev/get-started/install) ≥ 3.0.0\n\n### Run\n\n```bash\nflutter pub get\nflutter run            # default device\nflutter run -d chrome  # web\n```\n\n### Build\n\n```bash\nflutter build apk          # Android\nflutter build ios          # iOS\nflutter build web          # Web\n```\n\n## Architecture\n\n```\nlib/\n├── main.dart                  # App entry point\n├── music_kit/                 # Core music rendering \u0026 logic\n│   ├── models/\n│   │   ├── music_note.dart\n│   │   ├── measure.dart\n│   │   ├── song.dart\n│   │   └── instrument_profile.dart\n│   ├── widgets/\n│   │   ├── note_renderer.dart\n│   │   ├── sheet_music_renderer.dart\n│   │   └── staff_painter.dart\n│   └── utils/\n│       ├── music_constants.dart\n│       └── note_resolver.dart\n├── services/\n│   ├── musicxml_parser.dart   # MusicXML → Song parser\n│   ├── storage_service.dart   # SharedPreferences-based local storage\n│   └── pitch_detection_service.dart # Microphone capture + FFT pitch detection\n├── providers/\n│   ├── song_provider.dart     # Songs state management\n│   └── instrument_provider.dart # Active instrument state management\n├── screens/\n│   ├── home_screen.dart       # Song library + tag filtering\n│   ├── sheet_music_screen.dart# Full sheet music display\n│   ├── practice_screen.dart   # Practice mode with microphone/keyboard\n│   ├── instruments_screen.dart # Instrument list \u0026 selection\n│   ├── instrument_editor_screen.dart # Edit instrument details\n│   └── keyboard_config_screen.dart # Configure key-to-note mappings\n├── widgets/\n│   ├── note_widget.dart       # App-connected note circle\n│   ├── sheet_music_widget.dart# App-connected sheet music view\n│   └── instrument_setup/      # Multi-step setup wizards\n│       ├── add_key_wizard.dart\n│       └── tuning_wizard.dart\n└── utils/\n    └── note_colors.dart       # Default color palette\n```\n\n## Sample Song\n\nA sample \"Twinkle Twinkle Little Star\" MusicXML file is included at\n`assets/sample_songs/twinkle_twinkle.xml`.\n\n## Microphone Practice Mode\n\n1. Open a song and tap **Practice**.\n2. Tap the microphone button (🎙) to start listening.\n3. The current note to play is highlighted in large format at the top.\n4. Play the note on your instrument – when the app detects the correct pitch it advances automatically.\n5. Use the skip buttons (⏮ / ⏭) to navigate manually.\n\n## Permissions\n\n| Platform | Permission       | Purpose                     |\n|----------|------------------|-----------------------------|\n| Android  | `RECORD_AUDIO`   | Microphone for practice mode|\n| iOS      | `NSMicrophoneUsageDescription` | Microphone for practice mode |\n| Web      | Browser mic prompt | Microphone for practice mode |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvndaai%2Fflutter-music","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmvndaai%2Fflutter-music","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvndaai%2Fflutter-music/lists"}