├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── main.yml ├── .gitignore ├── .husky └── pre-commit ├── .prettierrc ├── .taurignore ├── LICENSE.md ├── README.md ├── app-icon.png ├── flatpak ├── com.zane.piano-trainer.metainfo.xml └── com.zane.piano-trainer.yaml ├── package.json ├── public ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json └── robots.txt ├── src-tauri ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── build.rs ├── capabilities │ └── migrated.json ├── icons │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── 32x32.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ ├── Square30x30Logo.png │ ├── Square310x310Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── StoreLogo.png │ ├── icon.icns │ ├── icon.ico │ └── icon.png ├── src │ └── main.rs └── tauri.conf.json ├── src ├── App.tsx ├── components │ ├── Keyboard │ │ ├── Keyboard.tsx │ │ └── index.ts │ ├── Quiz │ │ ├── Questions │ │ │ ├── Questions.ts │ │ │ └── index.ts │ │ ├── Quiz.tsx │ │ ├── QuizHeader.tsx │ │ ├── QuizOption.tsx │ │ └── index.ts │ ├── ScreenManager │ │ ├── ScreenManager.tsx │ │ └── index.ts │ ├── SettingsSidebar │ │ ├── SettingRow.tsx │ │ ├── SettingsSidebar.tsx │ │ └── index.ts │ ├── SoundfontProvider │ │ ├── SoundfontProvider.tsx │ │ └── index.ts │ └── Trainer │ │ ├── TrainerDisplay.tsx │ │ ├── TrainerPiano.tsx │ │ └── index.ts ├── core │ ├── contexts │ │ ├── SettingsContext.ts │ │ ├── SidebarContext.ts │ │ └── TrainerContext.ts │ ├── hooks │ │ ├── useMidiDevices.ts │ │ ├── useNoteProgression.ts │ │ └── usePianoKeyboard.ts │ ├── models │ │ ├── constants.ts │ │ └── types.ts │ ├── providers │ │ ├── KVProvider.tsx │ │ ├── SidebarProvider.tsx │ │ └── TrainerProvider.tsx │ └── services │ │ ├── chordService.ts │ │ ├── index.ts │ │ ├── midiService.ts │ │ ├── noteService.ts │ │ └── scaleService.ts ├── declarations.d.ts ├── i18n │ ├── br │ │ └── translation.ts │ ├── config.ts │ ├── de │ │ └── translation.ts │ ├── en │ │ └── translation.ts │ ├── fr │ │ └── translation.ts │ ├── ja │ │ └── translation.ts │ └── zh │ │ └── translation.ts ├── index.css ├── index.tsx ├── react-app-env.d.ts └── utils │ ├── index.ts │ ├── languages.ts │ ├── scales │ └── fifths.ts │ ├── shuffle.ts │ └── sounds.ts ├── start-dev.sh ├── tsconfig.json └── yarn.lock /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ZaneH 2 | ko_fi: zaneh 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/.github/workflows/main.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/.husky/pre-commit -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/.prettierrc -------------------------------------------------------------------------------- /.taurignore: -------------------------------------------------------------------------------- 1 | !src/**/* -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/README.md -------------------------------------------------------------------------------- /app-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/app-icon.png -------------------------------------------------------------------------------- /flatpak/com.zane.piano-trainer.metainfo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/flatpak/com.zane.piano-trainer.metainfo.xml -------------------------------------------------------------------------------- /flatpak/com.zane.piano-trainer.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/flatpak/com.zane.piano-trainer.yaml -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/package.json -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/public/index.html -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/public/logo512.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/public/manifest.json -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/public/robots.txt -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/.gitignore -------------------------------------------------------------------------------- /src-tauri/Cargo.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/Cargo.lock -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/Cargo.toml -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/build.rs -------------------------------------------------------------------------------- /src-tauri/capabilities/migrated.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/capabilities/migrated.json -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/src/main.rs -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src-tauri/tauri.conf.json -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/App.tsx -------------------------------------------------------------------------------- /src/components/Keyboard/Keyboard.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Keyboard/Keyboard.tsx -------------------------------------------------------------------------------- /src/components/Keyboard/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Keyboard' 2 | -------------------------------------------------------------------------------- /src/components/Quiz/Questions/Questions.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Quiz/Questions/Questions.ts -------------------------------------------------------------------------------- /src/components/Quiz/Questions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Questions' 2 | -------------------------------------------------------------------------------- /src/components/Quiz/Quiz.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Quiz/Quiz.tsx -------------------------------------------------------------------------------- /src/components/Quiz/QuizHeader.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Quiz/QuizHeader.tsx -------------------------------------------------------------------------------- /src/components/Quiz/QuizOption.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Quiz/QuizOption.tsx -------------------------------------------------------------------------------- /src/components/Quiz/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Quiz/index.ts -------------------------------------------------------------------------------- /src/components/ScreenManager/ScreenManager.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/ScreenManager/ScreenManager.tsx -------------------------------------------------------------------------------- /src/components/ScreenManager/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ScreenManager' 2 | -------------------------------------------------------------------------------- /src/components/SettingsSidebar/SettingRow.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/SettingsSidebar/SettingRow.tsx -------------------------------------------------------------------------------- /src/components/SettingsSidebar/SettingsSidebar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/SettingsSidebar/SettingsSidebar.tsx -------------------------------------------------------------------------------- /src/components/SettingsSidebar/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/SettingsSidebar/index.ts -------------------------------------------------------------------------------- /src/components/SoundfontProvider/SoundfontProvider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/SoundfontProvider/SoundfontProvider.tsx -------------------------------------------------------------------------------- /src/components/SoundfontProvider/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './SoundfontProvider' 2 | -------------------------------------------------------------------------------- /src/components/Trainer/TrainerDisplay.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Trainer/TrainerDisplay.tsx -------------------------------------------------------------------------------- /src/components/Trainer/TrainerPiano.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Trainer/TrainerPiano.tsx -------------------------------------------------------------------------------- /src/components/Trainer/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/components/Trainer/index.ts -------------------------------------------------------------------------------- /src/core/contexts/SettingsContext.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/contexts/SettingsContext.ts -------------------------------------------------------------------------------- /src/core/contexts/SidebarContext.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/contexts/SidebarContext.ts -------------------------------------------------------------------------------- /src/core/contexts/TrainerContext.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/contexts/TrainerContext.ts -------------------------------------------------------------------------------- /src/core/hooks/useMidiDevices.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/hooks/useMidiDevices.ts -------------------------------------------------------------------------------- /src/core/hooks/useNoteProgression.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/hooks/useNoteProgression.ts -------------------------------------------------------------------------------- /src/core/hooks/usePianoKeyboard.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/hooks/usePianoKeyboard.ts -------------------------------------------------------------------------------- /src/core/models/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/models/constants.ts -------------------------------------------------------------------------------- /src/core/models/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/models/types.ts -------------------------------------------------------------------------------- /src/core/providers/KVProvider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/providers/KVProvider.tsx -------------------------------------------------------------------------------- /src/core/providers/SidebarProvider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/providers/SidebarProvider.tsx -------------------------------------------------------------------------------- /src/core/providers/TrainerProvider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/providers/TrainerProvider.tsx -------------------------------------------------------------------------------- /src/core/services/chordService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/services/chordService.ts -------------------------------------------------------------------------------- /src/core/services/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/services/index.ts -------------------------------------------------------------------------------- /src/core/services/midiService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/services/midiService.ts -------------------------------------------------------------------------------- /src/core/services/noteService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/services/noteService.ts -------------------------------------------------------------------------------- /src/core/services/scaleService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/core/services/scaleService.ts -------------------------------------------------------------------------------- /src/declarations.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/declarations.d.ts -------------------------------------------------------------------------------- /src/i18n/br/translation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/br/translation.ts -------------------------------------------------------------------------------- /src/i18n/config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/config.ts -------------------------------------------------------------------------------- /src/i18n/de/translation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/de/translation.ts -------------------------------------------------------------------------------- /src/i18n/en/translation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/en/translation.ts -------------------------------------------------------------------------------- /src/i18n/fr/translation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/fr/translation.ts -------------------------------------------------------------------------------- /src/i18n/ja/translation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/ja/translation.ts -------------------------------------------------------------------------------- /src/i18n/zh/translation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/i18n/zh/translation.ts -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/index.css -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/index.tsx -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/utils/index.ts -------------------------------------------------------------------------------- /src/utils/languages.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/utils/languages.ts -------------------------------------------------------------------------------- /src/utils/scales/fifths.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/utils/scales/fifths.ts -------------------------------------------------------------------------------- /src/utils/shuffle.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/utils/shuffle.ts -------------------------------------------------------------------------------- /src/utils/sounds.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/src/utils/sounds.ts -------------------------------------------------------------------------------- /start-dev.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/start-dev.sh -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/tsconfig.json -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZaneH/piano-trainer/HEAD/yarn.lock --------------------------------------------------------------------------------