A beautiful, responsive, and minimalistic piano app built with React Native & Expo.
Play, record, and export — right from your phone, tablet, or browser.
| Feature | Description |
|---|---|
| 🎵 Real-time Synthesis | Low-latency audio playback powered by react-native-audio-api — no sample files needed. |
| 🔎 Zoom Controls | Pinch or tap to zoom in/out of the keyboard for comfortable play on any screen size. |
| 🎼 Octave Shifting | Shift the base octave up or down to access the full 88-key range. |
| 🎙️ Record & Export | Record your performance and export it as a .wav file to share with friends. |
| 📱 Cross-Platform | Runs natively on Android, iOS, and the Web from a single codebase. |
| 🎨 Beautiful UI | Elegant dark theme with smooth react-native-reanimated animations on every key press. |
# Clone the repository
git clone https://github.com/Ayush2006128/minimal-piano.git
cd minimal-piano
# Install dependencies
npm install# Start the Expo dev server
npx expo startThen press:
a— open on Android emulator / devicei— open on iOS simulatorw— open in your web browser
Important
This app uses native modules (e.g. react-native-audio-api) and will not work in Expo Go. You'll need to create a development build to run it on a physical device or emulator.
| Technology | Purpose |
|---|---|
| React Native | Cross-platform mobile framework |
| Expo (SDK 54) | Managed workflow & build tooling |
| Expo Router | File-based routing |
| React Native Audio API | Real-time audio synthesis |
| React Native Reanimated | 60 fps key-press animations |
| React Native Gesture Handler | Touch & gesture handling |
| Script | Description |
|---|---|
npm start |
Start the Expo dev server |
npm run android |
Launch on Android |
npm run ios |
Launch on iOS simulator |
npm run web |
Launch in your browser |
npm run lint |
Run ESLint |
npm test |
Run Jest tests |
Contributions, issues, and feature requests are welcome!
- Fork the repo
- Create your feature branch —
git checkout -b feat/amazing-feature - Commit your changes —
git commit -m "feat: add amazing feature" - Push to the branch —
git push origin feat/amazing-feature - Open a Pull Request
If you find Minimal Piano useful, consider giving it a ⭐ star on GitHub — it means a lot!
You can also support development directly:
This project is licensed under the MIT License — see the LICENSE file for details.
Made with ❤️ by Ayush Muley