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>
78 lines
2.0 KiB
Kotlin
78 lines
2.0 KiB
Kotlin
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
|
|
}
|