[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75640":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":13,"forks30d":13,"starsTrendScore":17,"compositeScore":18,"rankGlobal":8,"rankLanguage":8,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":8,"pushedAt":8,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":13,"starSnapshotCount":13,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},75640,"NoteLite","Lucas0623z\u002FNoteLite","Lucas0623z",null,"Java",855,126,115,0,97,246,811,291,97.31,"MIT License",false,"main",true,[],"2026-06-12 04:01:18","# NoteLite\n\n\u003Cdiv align=\"center\">\n\n**An OMR-based platform for lightweight score structuring, error detection, and music-education evaluation**\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frelease-v5.11.0-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002FLucas0623z\u002FNoteLite\u002Freleases\u002Flatest)\n[![Status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-In%20Development-yellow.svg)]()\n[![GitHub](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub-Lucas0623z-blue?logo=github)](https:\u002F\u002Fgithub.com\u002FLucas0623z)\n\n[Features](#features) • [Architecture](#architecture) • [Installation](#installation) • [Roadmap](#roadmap) • [Contact](#contact)\n\n\u003C\u002Fdiv>\n\n---\n\n## Overview\n\nNoteLite is a smart score-processing platform aimed at music-education scenarios. Built on Optical Music Recognition (OMR), combined with lightweight encoding, score matching, and error detection, it forms a complete loop from \"scan recognition\" to \"database management\" to \"teaching feedback\".\n\n### Background & Motivation\n\nExisting OMR tools (Audiveris, oemer, homr, etc.) can already convert score images into machine-readable formats such as MusicXML, but several gaps remain for real music-education platforms:\n\n- No lightweight structured representation suitable for database storage\n- No automatic matching and diffing against canonical scores\n- No suspected-error detection on scanned scores\n- No audio-based assessment of performance correctness\n\nNoteLite is designed to fill these gaps. **It is not another OMR engine** — it builds an education-oriented application layer on top of mature open-source OMR.\n\n---\n\n## Latest Release (v5.11.0, 2026-04-29)\n\nNoteLite is currently a fork of the Audiveris OMR engine. The released desktop build includes:\n\n- **Full OMR pipeline**: PDF \u002F image → transcription → MusicXML export\n- **MIDI export** (new in this release): file-type dropdown supports `.mxl` \u002F `.xml` \u002F `.mid`, with no need for MuseScore or other external tools\n- **Chinese UI**: full zh_CN localization of menus \u002F dialogs \u002F toolbars\n- **JDK 21 build**: extract and run, no compilation needed\n\nDownload: [`NoteLite-5.11.0.zip`](https:\u002F\u002Fgithub.com\u002FLucas0623z\u002FNoteLite\u002Freleases\u002Flatest)\n\n> MIDI export is intended for proof-listening only. The first version uses a fixed velocity of 80; advanced features such as drum kits, repeat marks, and transposing instruments are not yet supported. See the release notes for details.\n\n---\n\n## Features\n\n### Core Modules\n\n| Module | Description | Status |\n|--------|-------------|--------|\n| **Score Recognition** | Recognize scanned, photographed, and PDF scores | In progress |\n| **Lightweight Encoding** | Convert scores into compact structured data optimized for storage and retrieval | In progress |\n| **Score Matching** | Auto-match against canonical scores with sequence-level diffing | Planned |\n| **Smart Correction** | Detect missing\u002Fwrong notes, rhythm anomalies, accidental errors, etc. | Planned |\n| **Performance Assessment** | Coarse-grained performance evaluation based on audio recognition | Planned |\n\n### Highlights\n\n1. **Lightweight score encoding**\n   A compressed representation designed for databases — far smaller than full MusicXML.\n\n2. **Canonical-score-driven diffing**\n   New scans are not just recognized; they are also automatically validated against the canonical version in the database.\n\n3. **Education-oriented closed loop**\n   An end-to-end flow from paper score to online teaching feedback.\n\n---\n\n## Architecture\n\n### System Layers\n\n```\n┌─────────────────────────────────────────────────┐\n│                Application Layer                 │\n│   Upload | Matching | Correction | Assessment   │\n└─────────────────────────────────────────────────┘\n                         ↓\n┌─────────────────────────────────────────────────┐\n│            Database & Retrieval Layer           │\n│   Canonical | User Uploads | Versions | Index   │\n└─────────────────────────────────────────────────┘\n                         ↓\n┌─────────────────────────────────────────────────┐\n│              Lightweight Encoding               │\n│   Relative pitch | Tokenize | Hash | Compress   │\n└─────────────────────────────────────────────────┘\n                         ↓\n┌─────────────────────────────────────────────────┐\n│             Score Structuring Layer             │\n│  Clef | Key | Time | Notes | Duration | Marks   │\n└─────────────────────────────────────────────────┘\n                         ↓\n┌─────────────────────────────────────────────────┐\n│               OMR Recognition Layer             │\n│  Preprocess | Staff detection | Symbols | Pitch │\n└─────────────────────────────────────────────────┘\n                         ↓\n┌─────────────────────────────────────────────────┐\n│                   Input Layer                   │\n│   Scanned image | Photo | PDF | Audio recording │\n└─────────────────────────────────────────────────┘\n```\n\n### Tech Stack\n\n- **OMR engine**: Audiveris \u002F oemer \u002F homr (alternative options)\n- **Data formats**: MusicXML, JSON, custom compressed format\n- **Matching algorithms**: edit distance, dynamic programming, hash fingerprints\n- **Audio recognition**: TBD (for performance assessment)\n\n---\n\n## Installation\n\n### Option 1: Direct Download (Recommended)\n\nFor end users — no compilation required:\n\n1. Download `NoteLite-5.11.0.zip` from [Releases](https:\u002F\u002Fgithub.com\u002FLucas0623z\u002FNoteLite\u002Freleases\u002Flatest)\n2. Extract anywhere\n3. Run `bin\u002FNoteLite.bat` (Windows) or `bin\u002FNoteLite` (Linux\u002FmacOS)\n4. Requires **Java 21** runtime on the machine\n\n### Option 2: Build from Source\n\nFor development or contribution:\n\n```bash\n# Clone the repo\ngit clone https:\u002F\u002Fgithub.com\u002FLucas0623z\u002FNoteLite.git\ncd NoteLite\n\n# Use JDK 21 (verify with `java -version` showing 21.x)\nexport JAVA_HOME=\u002Fpath\u002Fto\u002Fjdk-21\n\n# Run\n.\u002Fgradlew :app:run --no-daemon\n\n# Build a distribution\n.\u002Fgradlew :app:distZip --no-daemon\n# Artifact at app\u002Fbuild\u002Fdistributions\u002Fapp-\u003Cversion>.zip\n```\n\nOn Windows, use `.\\gradlew` instead of `.\u002Fgradlew`.\n\n### Long-Term Plan (Education-Platform Layer)\n\nThe education layer (lightweight encoding \u002F canonical matching \u002F performance assessment) is still in design. It will eventually introduce:\n\n- Python 3.8+ (matching algorithms \u002F data processing)\n- Node.js 16+ (frontend)\n- PostgreSQL \u002F MySQL (database)\n\n---\n\n## Database Design\n\n### Core Tables\n\n#### 1. Score Master Table (`scores`)\n\n| Column | Type | Description |\n|--------|------|-------------|\n| score_id | INT | Primary key |\n| title | VARCHAR | Title |\n| composer | VARCHAR | Composer |\n| key_signature | VARCHAR | Key signature |\n| time_signature | VARCHAR | Time signature |\n| measure_count | INT | Number of measures |\n| canonical_version_id | INT | Canonical version ID |\n\n#### 2. Score Content Table (`score_content`)\n\n| Column | Type | Description |\n|--------|------|-------------|\n| score_id | INT | Foreign key |\n| raw_musicxml | TEXT | Original MusicXML |\n| structured_json | JSON | Structured data |\n| compressed_code | VARCHAR | Lightweight encoding |\n| midi_url | VARCHAR | MIDI file path |\n\n#### 3. Comparison Result Table (`comparisons`)\n\n| Column | Type | Description |\n|--------|------|-------------|\n| compare_id | INT | Primary key |\n| uploaded_score_id | INT | Uploaded score ID |\n| matched_standard_id | INT | Matched canonical score ID |\n| similarity_score | FLOAT | Similarity score |\n| error_positions | JSON | Error positions |\n\n---\n\n## Roadmap\n\n### Phase 1: MVP (Current)\n\n- [x] Project architecture design\n- [x] OMR engine integration (Audiveris fork, v5.10.x)\n- [x] Structured-data output (MusicXML \u002F MIDI)\n- [x] Chinese UI localization (v5.10.0+)\n- [x] Bundled MIDI export (v5.11.0)\n- [ ] Lightweight-encoding implementation\n- [ ] Initial database setup\n\n### Phase 2: Canonical Matching & Correction\n\n- [ ] Build canonical-score database\n- [ ] Score-fingerprint index\n- [ ] Diff-analysis algorithms\n- [ ] Error-highlight UI\n\n### Phase 3: Recognition Improvements\n\n- [ ] Phone-photo scenario tuning\n- [ ] Fine-tuning on teaching-score samples\n- [ ] Misrecognition-rule fixes\n\n### Phase 4: Performance Assessment\n\n- [ ] Audio upload\n- [ ] Pitch \u002F rhythm extraction\n- [ ] Comparison against canonical scores\n- [ ] Learning-report generation\n\n---\n\n## Lightweight Encoding Example\n\n### Design Idea\n\nMusicXML is verbose and ill-suited for large-scale database storage. NoteLite uses a custom lightweight format:\n\n```\n# MusicXML (hundreds of lines)\n\u003Cscore-partwise>\n  \u003Cpart id=\"P1\">\n    \u003Cmeasure number=\"1\">\n      \u003Cnote>\n        \u003Cpitch>\u003Cstep>G\u003C\u002Fstep>\u003Coctave>4\u003C\u002Foctave>\u003C\u002Fpitch>\n        \u003Cduration>1\u003C\u002Fduration>\n        \u003Ctype>quarter\u003C\u002Ftype>\n      \u003C\u002Fnote>\n      ...\n    \u003C\u002Fmeasure>\n  \u003C\u002Fpart>\n\u003C\u002Fscore-partwise>\n\n# NoteLite encoding (single line)\nTS:4\u002F4;KS:G;M1:G4\u002Fq,A4\u002Fq,B4\u002Fh|M2:C5\u002Fq,B4\u002Fq,A4\u002Fh\n\n# Token form (relative pitch)\n4\u002F4|G|+0:q,+2:q,+4:h|+5:q,+4:q,+2:h\n```\n\n**Benefits**:\n- 90%+ reduction in storage size\n- Simple database indexing\n- Efficient similar-score matching\n- Friendly to version management\n\n---\n\n## Technical Notes\n\n### Score-Matching Algorithm\n\nA multi-stage retrieval strategy:\n\n1. **Coarse filter**: key signature + time signature + measure count\n2. **Mid filter**: melody fingerprint hash\n3. **Fine filter**: sequence-level edit distance\n\n### Diff-Detection Capabilities\n\n| Error Type | Method | Example |\n|------------|--------|---------|\n| Missing\u002Fextra notes | Sequence-length comparison | Canonical 8 notes, scan 7 notes |\n| Wrong pitch | Per-symbol comparison | Canonical C5, scan D5 |\n| Wrong duration | Rhythm-pattern matching | Canonical quarter note, scan eighth |\n| Missing accidentals | Tonality analysis | Canonical F#, scan F |\n| Measure-beat anomaly | Beat accumulation | Sum of durations in 4\u002F4 measure ≠ 4 beats |\n\n---\n\n## Development Conventions\n\nThis project is currently maintained solely by the author and does not accept external pull requests. For issues or suggestions, please use the contact info below.\n\n- Code style: existing Audiveris Java conventions (see `dev\u002Fjalopy\u002Fjava-convention.xml`)\n- Build: JDK 21 + Gradle\n- Commit messages: [Conventional Commits](https:\u002F\u002Fwww.conventionalcommits.org\u002F)\n- Docs: Javadoc required for public APIs\n\n---\n\n## License\n\nThis project is released under the MIT License — see the [LICENSE](LICENSE) file for details.\n\n---\n\n## Author\n\n**Yuexuan Zhang**\n\nUndergraduate, University of Illinois Urbana-Champaign (UIUC)\nResearch interests: computer science, intelligent systems, education technology, music information processing\n\n### Contact\n\n- **Email**: Lucas.z0623@outlook.com\n- **GitHub**: [@Lucas0623z](https:\u002F\u002Fgithub.com\u002FLucas0623z)\n- **Personal site**: [https:\u002F\u002Fpersonal-website-tau-lake.vercel.app\u002F](https:\u002F\u002Fpersonal-website-tau-lake.vercel.app\u002F)\n\n---\n\n## Acknowledgements\n\nThanks to the following open-source projects and communities:\n\n- [Audiveris](https:\u002F\u002Fgithub.com\u002FAudiveris\u002Faudiveris) — classic OMR framework\n- [oemer](https:\u002F\u002Fgithub.com\u002FBreezeWhite\u002Foemer) — modern deep-learning OMR\n- [homr](https:\u002F\u002Fgithub.com\u002FTimeEscaper\u002Fhomr) — end-to-end OMR model\n- The broader GitHub open-source community for years of work in music information retrieval\n\n---\n\n## Project Status\n\n- **Current version**: v5.11.0 (desktop OMR + MIDI export)\n- **Status**: actively developed\n- **Last updated**: 2026-04-29\n\n---\n\n\u003Cdiv align=\"center\">\n\n**If this project helps you, please consider giving it a Star**\n\nMade by [Yuexuan Zhang](https:\u002F\u002Fgithub.com\u002FLucas0623z)\n\n\u003C\u002Fdiv>\n","NoteLite 是一个基于光学音乐识别（OMR）的轻量级乐谱处理平台，专为音乐教育场景设计。它结合了轻量级编码、乐谱匹配和错误检测等核心功能，形成从“扫描识别”到“数据库管理”再到“教学反馈”的完整闭环。项目利用成熟的开源OMR技术构建，并在此基础上增加了面向教育的应用层，支持PDF\u002F图像转录、MusicXML导出以及MIDI导出等功能，同时提供中文用户界面。适合需要高效管理和评估乐谱的音乐教学机构或个人使用。",2,"2026-06-11 03:53:03","CREATED_QUERY"]