Obiettivo
Chiarire le specifiche diScore e Note, spesso motivo di confusione nella sintesi Song.
I riferimenti implementativi si trovano nel codice di Revolution\Voicevox\Song\Note / Score / SongAudioQuery.
Classe Note
Note rappresenta una singola nota (o una pausa).
Argomenti del costruttore
Calcolo della lunghezza in frame
length è in unità di frame. Da secondi si ricava con:
Note::len().
- Considera la semiminima come
480 ticks 125 BPMè il valore predefinito- Internamente esegue
round()per arrotondare a intero, quindi in brani lunghi l’errore di arrotondamento si accumula gradualmente
Rappresentare una pausa
Una pausa è la seguente combinazione.Riferimento numeri di nota MIDI
Classe Score
Score è l’oggetto partitura che contiene un array di Note.
Regola importante
La prima nota deve sempre essere una pausa.API principali
Score::make(array $notes)per creareadd(Note $note)per aggiungeretoJson()per convertire in stringa JSON
Il costruttore di
Score, in input array, gestisce stringa vuota/null per lyric, così da rendere agevole anche l’input via form passato attraverso il middleware ConvertEmptyStringsToNull.Pattern pratico: gestione tramite file JSON (consigliato)
In prodotti reali è più gestibile mantenere le partiture in JSON invece di scriverle direttamente in PHP.- Salva un JSON in formato personalizzato
- Caricalo e convertilo in
Note/Score - Passalo a
Voicevox::song()per generare