Skip to content

Repository files navigation

🎹 KeySmith

Piano Β· Oud Β· World Instruments β€” An offline desktop music workstation for practice, performance, and composition.

KeySmith Play Tab


✨ Features

🎡 Play Tab β€” Scores + Piano

Load any MIDI score and play along with a scrolling sheet music display and a full 88-key virtual piano. Supports sustain, volume, octave controls, and bilingual UI (English / Arabic).

πŸ§‘β€πŸ« Practice Tab β€” Interactive Training

Step-by-step guided practice mode. The score waits for you to press the right key before advancing β€” perfect for learning at your own pace.

  • Wait for Key β€” learn notes at your own speed
  • Rhythm Challenge β€” strict tempo mode for performance training
  • Hand Isolation β€” practice right hand, left hand, or both
  • Combo & Accuracy tracking in real time

🎼 Composer Tab β€” Notation Editor

A full music notation composer built in. Tap piano keys or type to compose, then audition and export your work.

  • Staff + Timeline views
  • Add/remove measures, change clef, key & time signature
  • Generate bass line automatically
  • Export to MIDI or MusicXML

πŸ“Έ Screenshots

Play Practice β€” Select
Play Tab Practice Select
Practice β€” Session Composer
Practice Session Composer

πŸš€ Getting Started

Prerequisites

Install & Run (Web / Dev mode)

git clone https://github.com/tizahranim/KeySmith.git
cd KeySmith
npm install
npm run dev

Then open http://localhost:5173 in your browser.

Run as Desktop App (Electron)

npm run electron:dev

πŸ—οΈ Build

Linux (AppImage / dir)

npm run dist

Windows (Portable)

npm run dist:win

🎡 Bundled Song Library

The repo ships with 6 demo scores to get you started:

Song Composer
Ahwak Abd El Halim Hafez
Baby Shark Pinkfong
Bella Ciao Traditional Italian
Canon in D Johann Pachelbel
Super Mario Bros β€” Main Theme Koji Kondo
Twinkle Twinkle Little Star Traditional

You can import any MIDI file via the Upload button in the app.


🌐 Language Support

KeySmith supports English and Arabic β€” switch via the عربي button in the top bar.


πŸ› οΈ Tech Stack

Layer Technology
UI React 18 + TypeScript
Styling Tailwind CSS
Desktop Electron
Audio Tone.js + Web Audio API
Build Vite + electron-builder
Tests Vitest (192 tests)

πŸ“„ License

MIT β€” free to use, modify, and distribute.


Made with ❀️ for musicians everywhere

About

🎹 Piano Β· Oud Β· World Instruments β€” Offline desktop workstation for practice, performance & composition (React + Tone.js + VexFlow + Electron)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages