Files
jhonny-editor/code/engine/integracoes/audio/modelos_de_analise_musical.py
T
João Henrique 5644b42722 feat: carregamento automático da análise do Scanner ao abrir a aba
- carregamento automático da análise do Scanner ao abrir a aba Refinar
- simplificada a aba Editar vídeo para exibir análises disponíveis sem carregamento manual
- movida a visualização do tipo de vídeo para a guia Projeto com leitura do banco

Resumo:
- 10 arquivos alterados
- 2 novos
- 8 modificados
- 0 removidos

 8 files changed, 114 insertions(+), 11 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - code/cep-plugin/abas/projeto/projeto.js
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/engine/integracoes/audio/__init__.py
  - code/engine/integracoes/audio/modelos_de_analise_musical.py
  - code/engine/integracoes/audio/provider_de_analise_musical_essentia.py
  - code/engine/testes/test_analisador_de_musica_essentia.py
  - code/engine/consultar_edicao_concluida.py
  - code/engine/integracoes/audio/classificador_de_musica_essentia.py
2026-09-10 13:30:10 -04:00

46 lines
1.6 KiB
Python

"""
Modelos internos para representar análises de músicas instrumentais.
Este módulo define somente os dados produzidos pela análise. Ele não importa
Essentia, não lê arquivos e não transforma o resultado em texto para a
interface.
"""
from dataclasses import dataclass, field
from pathlib import Path
@dataclass(frozen=True)
class PontuacaoDeEtiqueta:
"""Representa uma etiqueta musical e a confiança calculada para ela."""
etiqueta: str
confianca: float
@dataclass(frozen=True)
class ResultadoDaAnaliseMusical:
"""
Representa os descritores calculados para uma música instrumental.
A classe mantém valores objetivos, como BPM e tonalidade, além das
classificações fornecidas pelos modelos disponíveis. Ela não afirma uma
interpretação definitiva da intenção artística da música.
"""
caminho_do_arquivo: Path
duracao_em_segundos: float | None = None
batidas_por_minuto: float | None = None
tonalidade: str | None = None
modo: str | None = None
intensidade: float | None = None
dancabilidade: float | None = None
generos: tuple[str, ...] = field(default_factory=tuple)
humores: tuple[str, ...] = field(default_factory=tuple)
instrumentos: tuple[str, ...] = field(default_factory=tuple)
etiquetas: tuple[str, ...] = field(default_factory=tuple)
pontuacoes_de_genero: tuple[PontuacaoDeEtiqueta, ...] = field(default_factory=tuple)
pontuacoes_de_humor: tuple[PontuacaoDeEtiqueta, ...] = field(default_factory=tuple)
provedor: str = "Essentia"
modelo: str | None = None