App Kotlin Multiplatform (Android/iOS/Desktop) con Compose Multiplatform: controllo intonazione (YIN), pratica guidata, metronomo, ear training, sfide, scansione spartiti via AI, spartiti bundled e pentagramma con glifi tipografici, travature, battute e spaziatura proporzionale. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
101 lines
3.6 KiB
Markdown
101 lines
3.6 KiB
Markdown
# NoteMusicali
|
|
|
|
App multipiattaforma per l'apprendimento musicale, costruita con **Kotlin Multiplatform** e **Compose Multiplatform**.
|
|
|
|
## Funzionalita
|
|
|
|
- **Controllo Intonazione** — rileva in tempo reale la nota suonata tramite microfono (algoritmo YIN)
|
|
- **Metronomo** — BPM regolabile, time signature, tap tempo e tuner integrato per suonare a tempo verificando l'intonazione
|
|
- **Nota di Riferimento** — genera qualsiasi nota cromatica con frequenza esatta per accordatura
|
|
- **Pratica guidata** — segui sequenze di note con feedback visivo e sonoro, metronomo integrato, modalita "Nascondi" per lettura dal pentagramma
|
|
- **Sfida** — suona il maggior numero di note nel tempo con punteggio, combo e pentagramma
|
|
- **Ear Training** — riconoscimento di note e intervalli con difficolta progressiva
|
|
- **Esercizi predefiniti** — scale, arpeggi e sequenze ordinate per difficolta
|
|
- **Inserimento manuale** — componi sequenze personalizzate con notazione italiana e durate musicali
|
|
- **Scansione spartiti** — riconosci note da foto di spartiti tramite AI (OpenAI / Gemini)
|
|
- **Pentagramma interattivo** — visualizzazione grafica delle note sul rigo musicale
|
|
- **Obiettivi giornalieri** — traccia il tempo di pratica da tutte le attivita con serie consecutiva e calendario
|
|
- **Cronologia unificata** — tutte le sessioni (pratica, ear training, sfide) in un'unica lista
|
|
|
|
## Piattaforme supportate
|
|
|
|
| Piattaforma | Stato | Note |
|
|
|-------------|-------|------|
|
|
| Android | Funzionante | Richiede API 26+ (Android 8.0) |
|
|
| iOS | Funzionante | Richiede iOS 16+, audio via AVAudioEngine |
|
|
| macOS | Funzionante | Desktop app via Compose Desktop |
|
|
|
|
## Struttura progetto
|
|
|
|
```
|
|
NoteMusicali/
|
|
app/ # Android app module
|
|
shared/ # Kotlin Multiplatform shared code
|
|
commonMain/ # Logica condivisa (UI, audio, pitch detection)
|
|
androidMain/ # Implementazioni Android (AudioRecord)
|
|
iosMain/ # Implementazioni iOS (AVAudioEngine)
|
|
desktopMain/ # Implementazioni Desktop (javax.sound)
|
|
iosApp/ # Xcode project (SwiftUI entry point)
|
|
desktopApp/ # Desktop app module (JVM)
|
|
```
|
|
|
|
## Prerequisiti
|
|
|
|
- **JDK 17+**
|
|
- **Android Studio** (per Android)
|
|
- **Xcode 15+** (per iOS)
|
|
- **XcodeGen** (per generare il progetto iOS): `brew install xcodegen`
|
|
|
|
## Build
|
|
|
|
### Android
|
|
|
|
```bash
|
|
./gradlew :app:assembleDebug
|
|
```
|
|
|
|
L'APK si trova in `app/build/outputs/apk/debug/`.
|
|
|
|
### iOS
|
|
|
|
```bash
|
|
# Genera il progetto Xcode
|
|
cd iosApp && xcodegen generate
|
|
|
|
# Compila il framework Kotlin
|
|
./gradlew :shared:compileKotlinIosArm64
|
|
|
|
# Apri in Xcode, seleziona il device e Build & Run
|
|
open iosApp/iosApp.xcodeproj
|
|
```
|
|
|
|
Il pre-build script in Xcode esegue automaticamente `embedAndSignAppleFrameworkForXcode`.
|
|
|
|
### macOS (Desktop)
|
|
|
|
```bash
|
|
./gradlew :desktopApp:run # Esegui
|
|
./gradlew :desktopApp:packageDmg # Genera DMG
|
|
```
|
|
|
|
## Strumenti presets
|
|
|
|
L'app supporta preset ottimizzati per diversi strumenti:
|
|
|
|
| Strumento | Range | Buffer |
|
|
|-------------|-------------|--------|
|
|
| Violino | G3 - E7 | 2048 |
|
|
| Viola | C3 - A6 | 2048 |
|
|
| Violoncello | C2 - C6 | 4096 |
|
|
| Pianoforte | A0 - C8 | 4096 |
|
|
| Chitarra | E2 - E6 | 2048 |
|
|
| Voce | D2 - D6 | 2048 |
|
|
|
|
## Stack tecnologico
|
|
|
|
- **Kotlin 2.1** + **Compose Multiplatform 1.7**
|
|
- **Ktor** per le chiamate API (scansione spartiti)
|
|
- **multiplatform-settings** per preferenze persistenti
|
|
- **YIN algorithm** per pitch detection in tempo reale
|
|
- **AVAudioEngine** (iOS) / **AudioRecord** (Android) / **javax.sound** (Desktop)
|