Initial commit: InTono — app KMP per l'apprendimento musicale

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>
This commit is contained in:
lucianoandClaude Fable 5 committed 2026-07-22 10:06:59 +02:00
commit 21ad969b10
245 files changed
+28963

No files matched your search

@@ -0,0 +1,77 @@
package com.notemusicali.audio
enum class InstrumentPreset(
val displayName: String,
val minFrequency: Float,
val maxFrequency: Float,
val yinThreshold: Float,
val bufferSize: Int,
val minOctave: Int,
val maxOctave: Int,
val description: String,
) {
VIOLINO(
displayName = "Violino",
minFrequency = 180f,
maxFrequency = 2700f,
yinThreshold = 0.15f,
bufferSize = 2048,
minOctave = 3,
maxOctave = 7,
description = "G3-E7 \u2022 Ottimizzato per archi",
),
VIOLA(
displayName = "Viola",
minFrequency = 120f,
maxFrequency = 1800f,
yinThreshold = 0.15f,
bufferSize = 2048,
minOctave = 3,
maxOctave = 6,
description = "C3-A6 \u2022 Ottimizzato per archi",
),
VIOLONCELLO(
displayName = "Violoncello",
minFrequency = 60f,
maxFrequency = 1100f,
yinThreshold = 0.15f,
bufferSize = 4096,
minOctave = 2,
maxOctave = 6,
description = "C2-C6 \u2022 Buffer ampio per note basse",
),
PIANOFORTE(
displayName = "Pianoforte",
minFrequency = 27f,
maxFrequency = 4200f,
yinThreshold = 0.10f,
bufferSize = 4096,
minOctave = 0,
maxOctave = 8,
description = "A0-C8 \u2022 Soglia bassa, segnale pulito",
),
CHITARRA(
displayName = "Chitarra",
minFrequency = 78f,
maxFrequency = 1400f,
yinThreshold = 0.12f,
bufferSize = 2048,
minOctave = 2,
maxOctave = 6,
description = "E2-E6 \u2022 Corde pizzicate",
),
VOCE(
displayName = "Voce",
minFrequency = 75f,
maxFrequency = 1200f,
yinThreshold = 0.15f,
bufferSize = 2048,
minOctave = 2,
maxOctave = 6,
description = "D2-D6 \u2022 Range vocale esteso",
),
;
val octaveRange: IntRange get() = minOctave..maxOctave
}